1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID MALAN: Baiklah. 3 00:00:12,360 --> 00:00:15,970 Ini adalah CS50, dan ini adalah akhir minggu sembilan. 4 00:00:15,970 --> 00:00:18,560 Sudah badai yang lebih beberapa hari lepas. 5 00:00:18,560 --> 00:00:21,580 Dan masalah ditetapkan tujuh, jika anda lutut jauh ke dalam ia, menyedari ada cukup 6 00:00:21,580 --> 00:00:23,340 sedikit baru yang di sana. 7 00:00:23,340 --> 00:00:26,660 Tetapi mari kita lihat jika kita tidak boleh sekeping semua bersama-sama di sini secara ringkas 8 00:00:26,660 --> 00:00:29,230 sebelum itu tersasar dari dalam lagi arah lain dan seeing 9 00:00:29,230 --> 00:00:30,510 di mana lagi kita boleh pergi. 10 00:00:30,510 --> 00:00:32,630 >> Jadi setakat ini, kita telah berbincang mengenai HTML. 11 00:00:32,630 --> 00:00:33,740 Kami telah berbincang mengenai CSS. 12 00:00:33,740 --> 00:00:34,705 Kami telah berbincang mengenai PHP. 13 00:00:34,705 --> 00:00:36,520 Anda telah mula mengalami SQL. 14 00:00:36,520 --> 00:00:38,360 Hari ini, kita akan bercakap sedikit kira-kira JavaScript. 15 00:00:38,360 --> 00:00:41,230 Tetapi bagaimana semua ini berbeza bahasa patut bersama-sama? 16 00:00:41,230 --> 00:00:44,970 >> Oleh itu, kita bercakap minggu lepas mengenai tanggapan yang mempunyai pelayan. 17 00:00:44,970 --> 00:00:48,470 Jadi mari kita hanya menarik persegi panjang ini sebagai pelayan web di sini. 18 00:00:48,470 --> 00:00:52,200 Dan pelayan web berfungsi pasti fail. 19 00:00:52,200 --> 00:00:54,640 Dan beberapa fail-fail boleh fail HTML. 20 00:00:54,640 --> 00:00:58,270 Jadi salah satu perkara-perkara yang pelayan web boleh meludah keluar mungkin fail yang 21 00:00:58,270 --> 00:01:01,290 kita hanya akan menarik seperti ini mengandungi beberapa HTML. 22 00:01:01,290 --> 00:01:04,786 Jadi dari segi orang biasa itu, apa yang adakah HTML membiarkan anda lakukan? 23 00:01:04,786 --> 00:01:06,036 >> PENONTON: Page kelihatan bagus. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID MALAN: OK, membuat halaman yang kelihatan bagus, walaupun saya rasa saya telah terbukti 26 00:01:12,310 --> 00:01:13,370 yang sebaliknya. 27 00:01:13,370 --> 00:01:18,250 Jadi HTML tidak membiarkan anda meletakkan muka surat struktur, dan ia membolehkan anda untuk 28 00:01:18,250 --> 00:01:22,410 jenis estetika menandakan sehingga halaman, menandakan sehingga kandungan statik, supaya anda 29 00:01:22,410 --> 00:01:23,640 boleh melihatnya dengan pelayar web. 30 00:01:23,640 --> 00:01:24,690 >> Tetapi itu kunci. 31 00:01:24,690 --> 00:01:26,130 Ia kandungan statik. 32 00:01:26,130 --> 00:01:28,590 Anda menulisnya, anda menyimpannya, dan kemudian anda hantar. 33 00:01:28,590 --> 00:01:31,130 Dan pelayan web kemudian berfungsi ia sehingga pengunjung anda. 34 00:01:31,130 --> 00:01:35,700 >> Tetapi kita menyesuaikan dgn mode perkara menggunakan yang berbeza bahasa sama sekali. 35 00:01:35,700 --> 00:01:40,150 Kami mula menggunakan atribut gaya pada tag tertentu. 36 00:01:40,150 --> 00:01:43,400 Dan sifat gaya marilah kita ditetapkan perkara seperti saiz font dan warna. 37 00:01:43,400 --> 00:01:46,460 Dan anda mungkin telah mula menemui, atau anda tidak lama lagi akan untuk akhir 38 00:01:46,460 --> 00:01:50,160 projek-projek berpotensi, namun lain ciri-ciri yang anda boleh gunakan dalam CSS. 39 00:01:50,160 --> 00:01:54,710 Dan sebagainya dari segi orang biasa itu, apa yang benar-benar maka tidak CSS lakukan? 40 00:01:54,710 --> 00:01:57,810 Mereka hanya contoh daripadanya. 41 00:01:57,810 --> 00:02:00,730 Apa yang membolehkan anda melakukan itu HTML nampaknya tidak daripada apa yang 42 00:02:00,730 --> 00:02:02,606 kita telah melihat setakat ini? 43 00:02:02,606 --> 00:02:04,850 >> PENONTON: Tentukan gaya sendiri. 44 00:02:04,850 --> 00:02:06,700 >> DAVID MALAN: Tentukan gaya oleh diri sendiri. 45 00:02:06,700 --> 00:02:10,280 Jadi menentukan perkara seperti kelas anda mungkin dihadapi, atau unik 46 00:02:10,280 --> 00:02:13,800 mengenal pasti nod dalam dokumen supaya bahawa anda boleh menyesuaikan dgn mode mereka. 47 00:02:13,800 --> 00:02:16,890 Tetapi lebih khusus, saya katakan bahawa CSS benar-benar membolehkan anda mengambil perkara-perkara yang 48 00:02:16,890 --> 00:02:20,790 sambungan terakhir dan membolehkan anda untuk menentukan banyak lebih tepat estetika, 49 00:02:20,790 --> 00:02:24,340 manakala HTML sebahagian besar membolehkan anda struktur halaman anda. 50 00:02:24,340 --> 00:02:27,310 >> Dan walaupun terdapat beberapa mungkir, seperti kita melihat tag untuk 51 00:02:27,310 --> 00:02:30,690 tag menuju, yang kurang bercakap membuat perkara yang besar dan berani. 52 00:02:30,690 --> 00:02:34,250 Itulah definisi cantik generik tag - besar dan berani. 53 00:02:34,250 --> 00:02:35,260 Apa saiz font tu? 54 00:02:35,260 --> 00:02:36,080 Apa warna itu? 55 00:02:36,080 --> 00:02:36,890 Bagaimana berani itu? 56 00:02:36,890 --> 00:02:39,830 Dan CSS membolehkan anda lebih halus perkara lagu seperti itu. 57 00:02:39,830 --> 00:02:42,150 Serta susun atur, kerana beberapa daripada anda telah lihat. 58 00:02:42,150 --> 00:02:45,180 >> Dan terus-terang, CSS adalah sedikit bahasa tidak kemas. 59 00:02:45,180 --> 00:02:48,370 Ia sangat berkuasa dalam bahawa anda boleh membuat secara literal apa-apa laman web yang anda telah 60 00:02:48,370 --> 00:02:51,880 dilihat di web hari ini dengan itu, tetapi ia adalah jenis sakit di leher. 61 00:02:51,880 --> 00:02:54,440 Dan sebahagian dari kamu telah terbentur kepala anda dinding sudah adil berbuat 62 00:02:54,440 --> 00:02:58,560 sesuatu yang bodoh seperti pusat menu pada masalah ditetapkan tujuh jika anda mendapat ke 63 00:02:58,560 --> 00:02:59,470 ketika itu sudah. 64 00:02:59,470 --> 00:03:01,530 >> Tetapi sedar, perkara-perkara mendapatkan lebih mudah dari masa ke masa. 65 00:03:01,530 --> 00:03:02,820 Anda mula notis corak. 66 00:03:02,820 --> 00:03:06,020 Dan sekali lagi, Google akan menjadi rakan anda untuk pelbagai cara di mana anda boleh 67 00:03:06,020 --> 00:03:07,220 menyelesaikan pelbagai masalah. 68 00:03:07,220 --> 00:03:11,520 >> Dan saya berani mengatakan dengan CSS, HTML dan lebih secara amnya, anda boleh menyelesaikan masalah dalam 69 00:03:11,520 --> 00:03:15,910 banyak cara yang lebih, semua yang mungkin sangat baik betul, daripada yang anda boleh 70 00:03:15,910 --> 00:03:18,900 dalam sesuatu seperti C, walaupun kini PHP, atau JavaScript. 71 00:03:18,900 --> 00:03:21,080 Terdapat hanya banyak berbeza cara-cara untuk meletakkan perkara-perkara. 72 00:03:21,080 --> 00:03:22,570 >> Tetapi ini mula mendapat kemas, kita kata. 73 00:03:22,570 --> 00:03:26,480 Hanya jenis percampuran HTML anda dan CSS anda dengan sifat gaya itu 74 00:03:26,480 --> 00:03:27,590 sedikit ceroboh. 75 00:03:27,590 --> 00:03:31,460 Dan supaya kita sebaliknya berkata, jenis secara abstrak bercakap, yang anda perlu 76 00:03:31,460 --> 00:03:34,050 sekurang-kurangnya mula faktor keluar CSS anda mungkin. 77 00:03:34,050 --> 00:03:37,430 Tidak gaya anda sifat, tetapi sekurang-kurangnya menggunakan tag gaya di dalam apa 78 00:03:37,430 --> 00:03:38,840 sebahagian daripada laman web? 79 00:03:38,840 --> 00:03:39,560 >> PENONTON: Ketua. 80 00:03:39,560 --> 00:03:40,120 >> DAVID MALAN: Dalam kepala. 81 00:03:40,120 --> 00:03:43,270 Sehingga kini, kami hanya mempunyai hak milik ke atas sana, tetapi anda juga boleh menambah gaya 82 00:03:43,270 --> 00:03:47,230 tag, dan anda boleh meletakkan CSS anda secara kasar bercakap ke arah bahagian atas halaman. 83 00:03:47,230 --> 00:03:52,550 Tetapi kita mengambil perkara satu langkah ke hadapan dan kami kira bahawa daripada lebih 84 00:03:52,550 --> 00:03:54,130 ke dalam fail yang berasingan. 85 00:03:54,130 --> 00:03:57,240 >> Dan sebagainya ini dua fail adalah entah bagaimana kini dihubungkan. 86 00:03:57,240 --> 00:03:59,550 Dan sesungguhnya ia adalah tag yang melakukan itu. 87 00:03:59,550 --> 00:04:02,920 Dan apa yang salah satu yang menyeluruh motivasi untuk memfaktorkan CSS kami 88 00:04:02,920 --> 00:04:04,057 lebih-lebih? 89 00:04:04,057 --> 00:04:05,280 >> PENONTON: gunapakai semula. 90 00:04:05,280 --> 00:04:05,785 >> DAVID MALAN: gunapakai semula. 91 00:04:05,785 --> 00:04:06,150 Betul? 92 00:04:06,150 --> 00:04:09,470 Anda mungkin telah melihat dalam p yang ditetapkan tujuh sudah bahawa banyak halaman, yang 93 00:04:09,470 --> 00:04:12,260 Laman membeli, halaman jualan, yang halaman portfolio, mungkin 94 00:04:12,260 --> 00:04:13,550 berstruktur agak sama. 95 00:04:13,550 --> 00:04:17,579 Ada logo kewangan CS50 di bahagian atas melainkan jika anda telah memutuskan untuk mengubahnya. 96 00:04:17,579 --> 00:04:19,839 Ada nota kaki di bawah laman. 97 00:04:19,839 --> 00:04:24,315 Dan CSS membolehkan anda kemudian kepada faktor keluar ke dalam fail yang berasingan supaya jika 98 00:04:24,315 --> 00:04:27,780 anda mahu menukar sesuatu yang global seluruh seluruh laman web anda, anda boleh benar-benar 99 00:04:27,780 --> 00:04:29,390 hanya mengubahnya di satu tempat. 100 00:04:29,390 --> 00:04:32,750 >> Tetapi ada harga yang anda bayar berpotensi dengan mempunyai kira keluar 101 00:04:32,750 --> 00:04:38,380 CSS dari fail HTML saya ke dalam yang berasingan memfailkan rujukan ia dengan 102 00:04:38,380 --> 00:04:40,650 tag, yang kita lihat pada hari Isnin. 103 00:04:40,650 --> 00:04:43,850 Apa yang mungkin menjadi kekangan yang timbul ini? 104 00:04:43,850 --> 00:04:48,830 Memikirkan kembali minggu lalu untuk apabila kita bercakap tentang HTTP dan TCP / IP dan bagaimana 105 00:04:48,830 --> 00:04:52,070 internet berfungsi. 106 00:04:52,070 --> 00:04:53,530 Sesuatu di sini? 107 00:04:53,530 --> 00:04:54,730 >> PENONTON: Ia mengambil lebih banyak masa. 108 00:04:54,730 --> 00:04:55,470 >> DAVID MALAN: Ia mengambil lebih banyak masa. 109 00:04:55,470 --> 00:04:56,750 Mengapa? 110 00:04:56,750 --> 00:04:59,450 >> PENONTON: [didengar]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID MALAN: Yeah. 112 00:04:59,750 --> 00:05:01,240 Jadi ia boleh dikatakan mengambil masa yang agak lebih banyak masa. 113 00:05:01,240 --> 00:05:04,290 Kerana satu, CSS adalah jelas tidak dalam fail yang sama. 114 00:05:04,290 --> 00:05:06,920 Jadi sekarang anda mempunyai untuk tidak membuat satu, tetapi dua permintaan. 115 00:05:06,920 --> 00:05:11,230 Dan setiap orang-orang permintaan seperti yang kita lihat dalam Chrome dalam apa yang dikenali sebagai Inspektor, 116 00:05:11,230 --> 00:05:15,740 dan kita melihat tekan rangkaian, setiap daripada fail-fail memerlukan seseorang HTTP 117 00:05:15,740 --> 00:05:18,360 permintaan, yang kita lihat mengambil beberapa jumlah masa. 118 00:05:18,360 --> 00:05:19,290 Sekarang, mungkin ia tidak banyak. 119 00:05:19,290 --> 00:05:20,670 Mungkin ia hanya 20 milisaat. 120 00:05:20,670 --> 00:05:22,260 Mungkin ia 200 milisaat. 121 00:05:22,260 --> 00:05:25,530 >> Tetapi berfikir tentang halaman seperti Facebook, atau CNN atau Google, yang jauh 122 00:05:25,530 --> 00:05:28,060 lebih besar daripada contoh-contoh yang kita telah melihat setakat ini. 123 00:05:28,060 --> 00:05:32,070 Halaman tersebut mungkin mempunyai berpuluh-puluh gambar, setiap yang mungkin memerlukan 124 00:05:32,070 --> 00:05:33,550 Muat turun fail. 125 00:05:33,550 --> 00:05:35,800 Jadi perkara-perkara boleh berpotensi mula perlahan. 126 00:05:35,800 --> 00:05:39,280 >> Dan terutama pada hari ini apabila kita semua mempunyai telefon bimbit dalam poket kita dan 127 00:05:39,280 --> 00:05:43,010 sambungan internet perlahan, perlu menunggu beberapa lagi milisaat, beberapa 128 00:05:43,010 --> 00:05:46,110 lebih milisaat untuk tambahan fail sebenarnya boleh lambat. 129 00:05:46,110 --> 00:05:50,430 Latency ialah perkataan yang menerangkan jenis menunggu yang anda mempunyai yang anda 130 00:05:50,430 --> 00:05:53,110 mengalami semasa menunggu beberapa keping maklumat. 131 00:05:53,110 --> 00:05:54,430 >> Tetapi ada satu terbalik. 132 00:05:54,430 --> 00:05:56,600 Jadi bukan semua jenis yang - 133 00:05:56,600 --> 00:05:58,170 ia sebenarnya adalah sedikit mundur maju di sini. 134 00:05:58,170 --> 00:06:02,970 Kelemahan sekarang, tetapi apa yang pelayar boleh melakukan jika mereka bijak untuk mengelakkan 135 00:06:02,970 --> 00:06:08,870 perlu meminta styles.css yang sama memfailkan lagi boleh untuk melakukan apa? 136 00:06:08,870 --> 00:06:09,390 >> Cache ia. 137 00:06:09,390 --> 00:06:10,370 Jadi caching - 138 00:06:10,370 --> 00:06:11,690 C-A-C-H-E - 139 00:06:11,690 --> 00:06:15,810 secara amnya bermakna di sini hanya untuk menyelamatkan memfailkan anda minta kali pertama, dan 140 00:06:15,810 --> 00:06:17,440 kemudian memeriksa cache anda untuk itu. 141 00:06:17,440 --> 00:06:20,400 Semak anda jenis bekas penyimpanan, dan jika anda sudah mempunyai 142 00:06:20,400 --> 00:06:24,520 salinan styles.css, walaupun beberapa yang lain halaman dalam p-set, atau mana-mana laman web, 143 00:06:24,520 --> 00:06:28,560 meminta sekali lagi, hanya untuk memberi pengguna bahawa salinan cache sama. 144 00:06:28,560 --> 00:06:30,140 Jangan mengganggu orang yang memintanya. 145 00:06:30,140 --> 00:06:32,560 >> Kelemahan sana, walaupun, sebagai sebahagian dari kamu telah tersandung dalam p-set. 146 00:06:32,560 --> 00:06:35,870 Jika anda membuat perubahan pada pelayan dan anda kembali ke penyemak imbas dan anda 147 00:06:35,870 --> 00:06:39,250 tambah nilai, kadang-kadang pelayar tidak anda nikmat dan tidak mengganggu 148 00:06:39,250 --> 00:06:43,660 memuat turun semula fail styles.css anda kerana, datang, apakah kemungkinan 149 00:06:43,660 --> 00:06:47,620 yang gaya yang menggunakan Facebook akan menukar jam ke jam atau 150 00:06:47,620 --> 00:06:48,140 hari ke hari? 151 00:06:48,140 --> 00:06:48,800 Ia agak rendah. 152 00:06:48,800 --> 00:06:52,260 Mereka mungkin berubah dari masa ke masa, tetapi tidak dengan minit atau mengikut jam. 153 00:06:52,260 --> 00:06:55,810 >> Jadi helah, hanya FYI ketika melakukan web pembangunan, sering tahan 154 00:06:55,810 --> 00:06:59,500 beralih utama misalnya dan kemudian klik menambah nilai dalam pelayar anda, dan kehendak yang 155 00:06:59,500 --> 00:07:03,280 biasanya memberitahu reload pelayar segala-galanya, walaupun anda sudah mempunyai 156 00:07:03,280 --> 00:07:04,180 ia dalam cache. 157 00:07:04,180 --> 00:07:06,630 Jadi sekali lagi, upsides dan kelemahan, tetapi semua mereka 158 00:07:06,630 --> 00:07:08,260 akhirnya mereka bentuk keputusan. 159 00:07:08,260 --> 00:07:11,520 >> Jadi sekarang, kami tidak hanya berakhir cerita di sini. 160 00:07:11,520 --> 00:07:15,790 Jika saya kini kembali dan kembali dan belakang dan kembali, kami mula memperkenalkan bukan sahaja 161 00:07:15,790 --> 00:07:18,060 HTML, tetapi PHP. 162 00:07:18,060 --> 00:07:20,786 Jadi dari segi orang biasa itu, apa yang adakah PHP marilah kita lakukan? 163 00:07:20,786 --> 00:07:22,770 >> PENONTON: [didengar]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID MALAN: Apa itu? 165 00:07:24,258 --> 00:07:25,250 >> PENONTON: Memperkenalkan logik kepada kod. 166 00:07:25,250 --> 00:07:26,620 >> DAVID MALAN: Ya, memperkenalkan logik ke dalam kod anda. 167 00:07:26,620 --> 00:07:29,570 Jadi ia adalah satu bahasa pengaturcaraan benar dengan gelung, dan pembolehubah, dan 168 00:07:29,570 --> 00:07:32,620 fungsi, dan syarat-syarat, dan semua perkara yang kita telah menggunakan perjalanan pulang 169 00:07:32,620 --> 00:07:33,780 apabila sejak awal. 170 00:07:33,780 --> 00:07:36,780 Dan PHP, kita telah melihat, boleh digunakan sama ada pada baris arahan - ia 171 00:07:36,780 --> 00:07:39,190 tidak perlu mempunyai apa-apa kaitan dengan web, walaupun itulah 172 00:07:39,190 --> 00:07:43,150 benar-benar asal-usul dan apa yang cenderung pandai dan kondusif untuk - 173 00:07:43,150 --> 00:07:47,130 tetapi anda boleh menggunakan PHP semata-mata dengan sifat daripada fakta bahawa ia mempunyai print () 174 00:07:47,130 --> 00:07:49,660 fungsi, dan fungsi () printf, atau gema () fungsi. 175 00:07:49,660 --> 00:07:52,440 Ada tandan cara anda boleh mencetak teks dengan PHP. 176 00:07:52,440 --> 00:07:56,540 >> Oleh itu, anda boleh menggunakan pengaturcaraan ini bahasa untuk output tepat 177 00:07:56,540 --> 00:07:58,460 apa yang kita bercakap tentang sebelum ini. 178 00:07:58,460 --> 00:08:01,360 Anda dinamik boleh menjana HTML anda. 179 00:08:01,360 --> 00:08:02,300 Mungkin tidak semua itu. 180 00:08:02,300 --> 00:08:06,460 Mungkin anda keras perkara kod, seperti header, dan footer, dan logo, 181 00:08:06,460 --> 00:08:07,950 dan lembaran gaya anda, dan semua itu. 182 00:08:07,950 --> 00:08:11,190 Tetapi sesuatu seperti p-set tujuh, mana anda hendak pergi memanipulasi saham dan 183 00:08:11,190 --> 00:08:14,690 menunjukkan portfolio pengguna, yang merupakan akan berubah secara dinamik, anda boleh 184 00:08:14,690 --> 00:08:18,960 pasti menggunakan PHP dan logik ia memberi anda sebagai bahasa pengaturcaraan untuk 185 00:08:18,960 --> 00:08:22,320 output secara dinamik subset halaman. 186 00:08:22,320 --> 00:08:25,900 >> Oleh itu, apabila anda bercakap tentang laman web dinamik, atau pengaturcaraan web, itu 187 00:08:25,900 --> 00:08:27,200 apa yang anda benar-benar bercakap tentang. 188 00:08:27,200 --> 00:08:31,450 Menggunakan bahasa seperti PHP, atau perkara-perkara dipanggil Python, atau Ruby, atau Java, atau 189 00:08:31,450 --> 00:08:35,900 namun bahasa-bahasa lain, untuk query pangkalan data kerap, atau pelayan yang lain, dan 190 00:08:35,900 --> 00:08:38,580 kemudian meludah keluar dinamik HTML. 191 00:08:38,580 --> 00:08:42,470 >> Sekarang keputusan akhir, sebagai diketepikan, adalah bahawa HTML kebanyakan laman web, 192 00:08:42,470 --> 00:08:45,970 termasuk p yang ditetapkan tujuh anda, mungkin akan menjadi kucar-kacir besar jika 193 00:08:45,970 --> 00:08:48,060 anda melihat sumber kod dalam pelayar. 194 00:08:48,060 --> 00:08:49,010 Itu bukan satu masalah besar. 195 00:08:49,010 --> 00:08:51,550 Pada ketika ini, apabila kita mengambil berat tentang gaya, kami mengambil berat tentang 196 00:08:51,550 --> 00:08:52,740 barangan yang anda menulis. 197 00:08:52,740 --> 00:08:56,240 Kami tidak akan mengambil berat tentang barangan yang bahawa apa yang output kod anda. 198 00:08:56,240 --> 00:08:59,520 Jadi jangan bimbang tentang lekukan di sini jika ia PHP itulah 199 00:08:59,520 --> 00:09:01,190 sebenarnya keluarkan barangan. 200 00:09:01,190 --> 00:09:04,430 Lagipun, pelayar tidak akan peduli, dan manusia tidak akan mencari 201 00:09:04,430 --> 00:09:05,400 pada sumber juga. 202 00:09:05,400 --> 00:09:09,000 Kami kakitangan, misalnya, akan mencari di PHP anda. 203 00:09:09,000 --> 00:09:13,440 >> Jadi biarlah saya memberi satu contoh yang cepat sekarang mengapa lagi ini mungkin berguna. 204 00:09:13,440 --> 00:09:18,620 Jadi terus-terang, saya tidak ingat yang lalu masa saya menggunakan C untuk menyelesaikan masalah dalam 205 00:09:18,620 --> 00:09:19,620 di dunia sebenar. 206 00:09:19,620 --> 00:09:22,330 Ia mungkin di sekolah siswazah apabila Saya perlu menggunakan bahasa yang 207 00:09:22,330 --> 00:09:26,710 adalah tahap yang agak rendah dan memberikan saya peluang untuk melakukan sesuatu yang sangat tinggi 208 00:09:26,710 --> 00:09:30,720 melaksanakan untuk benar-benar menyimpan sebagai CPU kitaran yang saya dapat, dalam sebahagian besar 209 00:09:30,720 --> 00:09:33,990 kerana saya telah menggunakan set data yang besar, dan tiap-tiap kitaran CPU dikira. 210 00:09:33,990 --> 00:09:37,750 Dan terus-terang, walaupun dalam perkara-perkara seperti telefon hari ini dan peranti lain 211 00:09:37,750 --> 00:09:39,910 di mana anda tidak cukup mempunyai sebanyak memori dan anda tidak cukup mempunyai sebagai 212 00:09:39,910 --> 00:09:44,160 banyak CPU, dengan menggunakan bahasa yang lebih cepat masih menarik. 213 00:09:44,160 --> 00:09:47,290 >> Tetapi dalam dunia sebenar, apabila anda hanya mahu membuang beberapa program bersama-sama untuk 214 00:09:47,290 --> 00:09:50,340 menganalisis beberapa data, atau anda telah dikumpul sejumlah besar pendaftaran untuk 215 00:09:50,340 --> 00:09:53,330 beberapa kumpulan pelajar dan anda ingin sangat cepat mengautomasikan menghantar e-mel 216 00:09:53,330 --> 00:09:56,240 satu demi satu untuk setiap seorang daripada mereka pendaftar, anda akan mencapai 217 00:09:56,240 --> 00:09:59,240 bahasa peringkat lebih tinggi daripada C jadi untuk bercakap. 218 00:09:59,240 --> 00:10:04,060 Sesuatu seperti PHP atau Python, atau Ruby, atau setengah dozen orang lain yang wujud 219 00:10:04,060 --> 00:10:04,550 pada hari ini. 220 00:10:04,550 --> 00:10:07,200 Tetapi ketiga-tiga mungkin yang paling bergaya sekarang. 221 00:10:07,200 --> 00:10:10,840 >> Dan apa ini bermakna bahawa anda boleh membuka sebuah editor teks seperti gedit atau 222 00:10:10,840 --> 00:10:14,030 paling apa-apa lagi dan kemudian hanya mula menulis kod tanpa perlu bimbang 223 00:10:14,030 --> 00:10:17,800 kira-kira menyusun, tanpa perlu benar-benar bimbang tentang pengurusan ingatan, 224 00:10:17,800 --> 00:10:20,820 dengan mengingati walaupun yang sedikit sloppiness akhirnya akan datang kembali 225 00:10:20,820 --> 00:10:24,790 menggigit anda jika set data mendapat lebih besar atau masalah yang mendapat besar. 226 00:10:24,790 --> 00:10:27,230 Tetapi apa yang dimaksudkan untuk kami adalah seperti berikut. 227 00:10:27,230 --> 00:10:29,860 >> Biar saya pergi ke hadapan dan menjalankan buku ejaan masalah set enam. 228 00:10:29,860 --> 00:10:33,480 Jadi ini adalah pelaksanaan berasaskan indone-saya yang saya digunakan pada besar 229 00:10:33,480 --> 00:10:35,500 papan di mana saya tidak dilakukan dengan baik. 230 00:10:35,500 --> 00:10:38,720 Kami akan kembali dalam masa seminggu dan semula mereka yang tidak berakhir di atas yang 231 00:10:38,720 --> 00:10:40,430 lembaga besar di kuliah terakhir kami. 232 00:10:40,430 --> 00:10:44,520 Tetapi untuk sekarang, biarlah saya teruskan dan hanya menjalankan penyelesaian saya dalam teks, dan kami akan melakukan 233 00:10:44,520 --> 00:10:48,460 Bible King James, dan di sini kita pergi. 234 00:10:48,460 --> 00:10:51,080 >> Jadi mereka adalah semua kononnya kata yang salah Mengeja daripada 235 00:10:51,080 --> 00:10:52,240 Bible King James. 236 00:10:52,240 --> 00:10:55,560 Dan pelaksanaan saya mengambil setengah kedua dalam jumlah. 237 00:10:55,560 --> 00:10:58,270 Jadi tidak terlalu buruk kepada ini komputer tertentu. 238 00:10:58,270 --> 00:11:01,540 Tetapi memikirkan berapa banyak kod saya untuk menulis. 239 00:11:01,540 --> 00:11:02,880 Fikirkan berapa banyak kod anda terpaksa menulis. 240 00:11:02,880 --> 00:11:06,170 Fikirkan berapa banyak masa yang anda gunakan dalam D-dewan atau asrama anda atau di mana sahaja 241 00:11:06,170 --> 00:11:07,890 sebenarnya pengekodan sehingga penyelesaian itu. 242 00:11:07,890 --> 00:11:11,850 >> Nah, jika saya benar-benar mempunyai tahap yang lebih tinggi bahasa seperti PHP, ambil perhatian 243 00:11:11,850 --> 00:11:13,350 apa yang boleh saya lakukan di sini. 244 00:11:13,350 --> 00:11:16,410 Pertama, katakan bahawa ini adalah sebaliknya kod pengedaran anda. 245 00:11:16,410 --> 00:11:17,790 Fail ini dipanggil buku ejaan. 246 00:11:17,790 --> 00:11:20,220 Ia boleh didapati sebagai sebahagian daripada hari ini kod pengedaran. 247 00:11:20,220 --> 00:11:22,670 Dan saya akan melambai tangan saya di kebanyakan butir-butir, tetapi ini sebenarnya 248 00:11:22,670 --> 00:11:25,500 satu contoh yang menarik tentang bagaimana anda mungkin pelabuhan bahasa 249 00:11:25,500 --> 00:11:28,870 seperti C kepada PHP. 250 00:11:28,870 --> 00:11:33,420 Saya benar-benar membuka dua tingkap teks, satu dengan versi C saya speller.c, 251 00:11:33,420 --> 00:11:36,960 dan saya hanya mula menterjemahkannya dalam saya menuju ke PHP dan menaip dengan menggunakan 252 00:11:36,960 --> 00:11:38,840 fungsi bersamaan terdekat. 253 00:11:38,840 --> 00:11:40,100 >> Jadi beberapa perkara-perkara ini adalah berbeza. 254 00:11:40,100 --> 00:11:43,730 Kami melihat masa lalu bahawa PHP tidak menggunakan termasuk di agak cara yang sama. 255 00:11:43,730 --> 00:11:47,050 Ia menggunakan memerlukan biasanya, walaupun termasuk tidak ada. 256 00:11:47,050 --> 00:11:50,330 Tentukan adalah sedikit berbeza daripada # Menentukan dalam C, tetapi itu 257 00:11:50,330 --> 00:11:51,890 bagaimana kita membuat satu pemalar. 258 00:11:51,890 --> 00:11:55,860 $ Argc ternyata wujud dalam PHP, jadi kami telah melihat bahawa sebelum. 259 00:11:55,860 --> 00:11:58,650 Ini hanya pembolehubah, semua yang bermula dengan tanda-tanda dolar. 260 00:11:58,650 --> 00:12:00,590 Ingat ini hanya sekumpulan terapung mata. 261 00:12:00,590 --> 00:12:03,970 >> Jadi cerita panjang pendek, anda dialu-alukan untuk flip melalui ini jika ingin tahu, ini adalah 262 00:12:03,970 --> 00:12:10,010 hampir penukaran barisan untuk talian daripada Versi C speller.c ke dalam PHP. 263 00:12:10,010 --> 00:12:12,630 Dan anda boleh melakukan ini sekali lagi untuk setengah dozen bahasa lain. 264 00:12:12,630 --> 00:12:14,910 >> Tetapi apa yang menarik ialah ini. 265 00:12:14,910 --> 00:12:16,910 Atau apa yang terus-terang mengecewakan adalah ini. 266 00:12:16,910 --> 00:12:20,790 Biar saya pergi ke hadapan dan menaip mengenai dictionary.php, dan tuntutan bahawa saya 267 00:12:20,790 --> 00:12:23,670 akan pergi ke hadapan dan melaksanakan semula masalah set enam di sini. 268 00:12:23,670 --> 00:12:27,530 >> Jadi mari kita mencadangkan pertama bahawa dalam ini fail, yang akan dilaksanakan dalam 269 00:12:27,530 --> 00:12:30,550 PHP, jadi biarlah saya membuka tag saya seperti itu. 270 00:12:30,550 --> 00:12:34,780 Izinkan saya memberikan diri saya global berubah-ubah, $ saiz mendapat sifar. 271 00:12:34,780 --> 00:12:36,710 Dan saya akan memberi diri saya jadual hash. 272 00:12:36,710 --> 00:12:38,110 Saya akan menggunakan jadual hash untuk perkara ini. 273 00:12:38,110 --> 00:12:42,070 Bagaimana saya mengisytiharkan jadual hash dalam PHP? 274 00:12:42,070 --> 00:12:42,990 Selesai. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Kurungan itu, hukumkanlah kurungan rapat mewakili apa dalam PHP, seperti yang kita lihat? 277 00:12:48,870 --> 00:12:51,850 Pelbagai, tetapi pelbagai yang boleh menjadi pelbagai bersekutu. 278 00:12:51,850 --> 00:12:54,320 Pelbagai bersekutu adalah struktur data yang 279 00:12:54,320 --> 00:12:55,860 mengaitkan kunci dengan nilai. 280 00:12:55,860 --> 00:12:59,430 >> Sekarang dalam yang paling mudah berangka diindeks pelbagai, mereka kunci adalah apa? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Sifar, satu, dua, tiga, bukan? 283 00:13:03,960 --> 00:13:08,780 Sekolah lama barangan kembali dari C. Tetapi ia boleh juga menjadi tali seperti foo, dan bar, 284 00:13:08,780 --> 00:13:12,210 atau maxwell, atau mana-mana tali tersebut. 285 00:13:12,210 --> 00:13:14,240 Jadi saya boleh memanfaatkan yang dalam hanya seketika. 286 00:13:14,240 --> 00:13:17,550 >> Biar saya pergi ke hadapan dan mengisytiharkan fungsi seperti - 287 00:13:17,550 --> 00:13:19,020 mari kita buat beban () pertama. 288 00:13:19,020 --> 00:13:20,690 Jadi beban fungsi (). 289 00:13:20,690 --> 00:13:23,440 Dan PHP adalah sedikit berbeza kerana anda benar-benar taip fungsi, tetapi anda 290 00:13:23,440 --> 00:13:24,930 tidak menaip jenis pulangan. 291 00:13:24,930 --> 00:13:28,760 Saya akan teruskan dan mengatakan bahawa fungsi beban () perlu mengambil dalam 292 00:13:28,760 --> 00:13:31,000 Hujah $ kamus, hanya seperti versi C lakukan. 293 00:13:31,000 --> 00:13:32,510 Saya melakukan yang dari ingatan. 294 00:13:32,510 --> 00:13:34,910 >> Dan saya mencadangkan bahawa saya akan melakukan ini. 295 00:13:34,910 --> 00:13:37,080 Saya hanya akan melakukan foreach. 296 00:13:37,080 --> 00:13:40,710 Saya akan memanggil fungsi yang dipanggil fail (), lulus dalam nama yang 297 00:13:40,710 --> 00:13:44,990 memfailkan, yang merupakan pembolehubah $ Kamus sebagai $ perkataan. 298 00:13:44,990 --> 00:13:49,410 Dan kemudian di dalam saya untuk gelung di sini, saya akan pergi ke hadapan dan menyimpan dalam saya 299 00:13:49,410 --> 00:13:57,440 $ $ Jadual yang perkataan mendapat benar. 300 00:13:57,440 --> 00:13:57,918 Selesai. 301 00:13:57,918 --> 00:14:01,264 Oh, tunggu. 302 00:14:01,264 --> 00:14:02,422 Selesai. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> Itulah beban fungsi () berkata dalam PHP. 305 00:14:04,970 --> 00:14:05,865 Sekarang, mengapa yang bekerja? 306 00:14:05,865 --> 00:14:07,010 Dan saya jenis menipu di sini. 307 00:14:07,010 --> 00:14:09,980 >> Jadi, satu, foreach kita saw masa secara ringkas lepas. 308 00:14:09,980 --> 00:14:13,680 Ia hanya bermakna bahawa anda boleh melelar lebih pelbagai tanpa mengganggu dengan i 309 00:14:13,680 --> 00:14:16,150 dan n dan plus plus, dan semua itu. 310 00:14:16,150 --> 00:14:21,350 Kamus sudah tentu nama fail, sesuatu seperti besar atau kecil, kedua-dua 311 00:14:21,350 --> 00:14:22,830 kamus kami menggunakan masa lepas. 312 00:14:22,830 --> 00:14:26,715 Fail adalah fungsi yang membuka teks fail, membaca dalam baris demi baris, dan 313 00:14:26,715 --> 00:14:29,840 tangan anda menyokong pelbagai besar, setiap unsur-unsur yang merupakan 314 00:14:29,840 --> 00:14:31,340 line dari fail itu. 315 00:14:31,340 --> 00:14:36,040 Jadi, itu gabungan fopen, dan fread, dan semasa gelung, dan fclose, 316 00:14:36,040 --> 00:14:37,080 dan semua itu. 317 00:14:37,080 --> 00:14:40,150 Akhir sekali, sebagai perkataan hanya bermakna itulah ubah saya akan mempunyai akses kepada 318 00:14:40,150 --> 00:14:41,890 pada setiap lelaran dalam gelung ini. 319 00:14:41,890 --> 00:14:46,910 >> Jadi ringkasnya, pelapik satu ini di sini bermaksud membuka fail yang namanya dalam 320 00:14:46,910 --> 00:14:50,750 kamus, pembolehubah, melelar lebih ia baris demi baris, dan setiap kali anda mendapat 321 00:14:50,750 --> 00:14:54,290 garis, simpan dalam satu perkataan ubah dipanggil, dan kemudian melakukan sesuatu dengan perkataan. 322 00:14:54,290 --> 00:14:55,280 Apa yang saya mahu lakukan? 323 00:14:55,280 --> 00:14:58,110 Saya mahu meletakkan perkataan ke dalam jadual hash saya. 324 00:14:58,110 --> 00:15:00,860 >> Well, saya boleh meletakkan sesuatu di dalam saya hash jadual seperti dalam C 325 00:15:00,860 --> 00:15:02,140 menggunakan kurungan persegi. 326 00:15:02,140 --> 00:15:03,660 Ini adalah nama untuk jadual hash saya. 327 00:15:03,660 --> 00:15:07,180 Saya akan indeks ke dalam hash yang jadual di lokasi ini. 328 00:15:07,180 --> 00:15:08,920 Jadi tidak braket sifar, tidak braket satu. 329 00:15:08,920 --> 00:15:11,990 Kurungan quote unquote sesuatu, apa sahaja perkataan yang. 330 00:15:11,990 --> 00:15:15,200 Dan seperti yang anda mungkin ada di anda indone kerja jadual hash, anda hanya kedai 331 00:15:15,200 --> 00:15:17,650 berkesan yang Boolean, secara tersirat atau dengan jelas. 332 00:15:17,650 --> 00:15:18,260 Selesai. 333 00:15:18,260 --> 00:15:20,000 Saya menyimpan nilai sebenar. 334 00:15:20,000 --> 00:15:23,150 >> Sekarang ada beberapa perkara Saya memotong sudut di sini. 335 00:15:23,150 --> 00:15:27,720 Secara teknikal, ada akan menjadi baris baru menjengkelkan, / n, pada akhir 336 00:15:27,720 --> 00:15:28,820 setiap kata-kata. 337 00:15:28,820 --> 00:15:31,770 Jadi saya mungkin perlu memanggil fungsi PHP dipanggil cop (), yang akan 338 00:15:31,770 --> 00:15:33,460 agak literal cop yang luar. 339 00:15:33,460 --> 00:15:35,020 Dan saya benar-benar perlu melakukan satu perkara yang lain. 340 00:15:35,020 --> 00:15:38,380 Saya sepatutnya kenaikan saiz pada setiap lelaran, jadi saya mengesan 341 00:15:38,380 --> 00:15:39,560 global dengan apa yang ada. 342 00:15:39,560 --> 00:15:43,180 Dan terus-terang, dan ini adalah salah satu daripada aspek stupider PHP, jika anda 343 00:15:43,180 --> 00:15:46,950 menggunakan pembolehubah global, anda perlu secara jelas mengatakan bahawa anda adalah. 344 00:15:46,950 --> 00:15:51,670 Jadi saya akan untuk benar-benar taip global $ Saiz, $ jadual global, dan kini 345 00:15:51,670 --> 00:15:52,690 fungsi saya selesai. 346 00:15:52,690 --> 00:15:57,475 >> Jadi tidak cukup sebagai mudah seperti sebelum ini, tetapi mungkin mengambil masa kurang daripada C 347 00:15:57,475 --> 00:15:58,220 versi, mungkin? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Jadi sekarang mari kita buat cek fungsi (). 350 00:16:00,390 --> 00:16:04,300 Mari kita lihat jika ini sekurang-kurangnya mengambil jam pada akhir bahawa kami mengambil masa dalam C. Jadi 351 00:16:04,300 --> 00:16:06,500 biarlah saya pergi ke hadapan dan mengisytiharkan memeriksa sebagai fungsi. 352 00:16:06,500 --> 00:16:09,070 Mengambil masa dalam perkataan hujah, yang merupakan akan datang dari buku ejaan. 353 00:16:09,070 --> 00:16:13,410 Dan saya hanya akan memeriksa jika berikut isset berubah-ubah, jadual 354 00:16:13,410 --> 00:16:18,400 kurungan strtolower perkataan - 355 00:16:18,400 --> 00:16:20,590 mari kita mengimbangi semua kurungan saya - 356 00:16:20,590 --> 00:16:24,275 kemudian kembali benar. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Yang lain - 359 00:16:28,460 --> 00:16:30,330 yang benar-benar keras sebahagian daripada program ini. 360 00:16:30,330 --> 00:16:31,940 Else, pulangan palsu. 361 00:16:31,940 --> 00:16:32,630 Selesai. 362 00:16:32,630 --> 00:16:33,460 Itulah cek (). 363 00:16:33,460 --> 00:16:34,520 >> Sekarang, mengapa ini berfungsi? 364 00:16:34,520 --> 00:16:37,040 Nah, satu saya lulus dalam perkataan, yang merupakan rentetan. 365 00:16:37,040 --> 00:16:41,400 Dua, saya memeriksa di dalam hash meja, yang dipanggil $ meja. 366 00:16:41,400 --> 00:16:45,470 Saya memaksa ia kepada huruf kecil dengan memanggil fungsi yang agak sama tolower () dalam 367 00:16:45,470 --> 00:16:48,580 C, tetapi ini tidak keseluruhan perkataan, bukan watak tunggal. 368 00:16:48,580 --> 00:16:52,680 Dan jika itu ditetapkan, dalam erti kata lain ada adalah nilai yang ditetapkan, dalam erti kata lain, 369 00:16:52,680 --> 00:16:54,880 jika ia benar, maka ya, ini adalah perkataan. 370 00:16:54,880 --> 00:16:56,530 Kerana saya meletakkan di sana dengan beban (). 371 00:16:56,530 --> 00:16:59,100 Dan jika tidak, saya akan kembali palsu. 372 00:16:59,100 --> 00:17:00,090 >> Sekarang yang lain adalah mudah. 373 00:17:00,090 --> 00:17:03,570 Saiz Fungsi (), bagaimana saya melakukan ini? 374 00:17:03,570 --> 00:17:05,230 Saya pada dasarnya melakukan kembali saiz $. 375 00:17:05,230 --> 00:17:07,770 Tetapi saya secara teknikal perlu melakukan perkara yang menyakitkan hati. 376 00:17:07,770 --> 00:17:10,640 Dan sebenarnya sehingga mendengar, saya memotong satu sudut terlalu banyak. 377 00:17:10,640 --> 00:17:12,920 Saya benar-benar perlu lakukan $ jadual global. 378 00:17:12,920 --> 00:17:16,260 >> Tetapi itu yang berkata, memunggah). 379 00:17:16,260 --> 00:17:17,380 Memunggah () amat menakjubkan. 380 00:17:17,380 --> 00:17:20,500 Fungsi memunggah (). 381 00:17:20,500 --> 00:17:23,990 Bagaimana saya mahu untuk melaksanakan memunggah ()? 382 00:17:23,990 --> 00:17:25,079 Selesai. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Jadi memunggah (), pengurusan ingatan adalah sepenuhnya dijaga untuk anda dalam 385 00:17:28,900 --> 00:17:31,800 sesuatu seperti PHP dan banyak bahasa peringkat yang lebih tinggi. 386 00:17:31,800 --> 00:17:32,600 Jadi ini luar biasa. 387 00:17:32,600 --> 00:17:36,080 Seperti mengapa neraka yang kita menghabiskan masa lalu lapan minggu ditambah pada C bertulis 388 00:17:36,080 --> 00:17:41,030 nampaknya benar-benar perlahan, benar-benar masa memakan masalah dengan puluhan jam 389 00:17:41,030 --> 00:17:42,530 daripada bekerja di bawah tali pinggang kita? 390 00:17:42,530 --> 00:17:46,110 >> Nah, untuk satu perkara, ini boleh bekerja denda untuk program kecil. 391 00:17:46,110 --> 00:17:47,840 Ia sudah tentu dipercepatkan saya masa pembangunan. 392 00:17:47,840 --> 00:17:49,790 Tetapi mari kita lihat apa yang berlaku dalam dunia sebenar. 393 00:17:49,790 --> 00:17:52,370 >> Biar saya pergi ke direktori ini dalam tetingkap terminal. 394 00:17:52,370 --> 00:17:53,370 Ada buku ejaan. 395 00:17:53,370 --> 00:17:56,570 Dan notis sebagai diketepikan, dan anda mungkin temui ini dalam masalah set 396 00:17:56,570 --> 00:17:58,190 enam atau masalah ditetapkan tujuh. 397 00:17:58,190 --> 00:18:01,610 Anda tidak tegas perlu berakhir PHP fail dengan lanjutan. php. 398 00:18:01,610 --> 00:18:05,250 Jika anda meletakkan baris seperti yang pertama di bahagian paling atas, itu adalah satu barisan khas 399 00:18:05,250 --> 00:18:10,980 sintaksis yang pada asasnya bermakna mencari program yang dipanggil PHP dan menggunakannya untuk 400 00:18:10,980 --> 00:18:12,270 mentafsir fail ini. 401 00:18:12,270 --> 00:18:15,410 Jadi sekarang tidak ada benar-benar tahu bahawa Saya menjalankan program PHP. 402 00:18:15,410 --> 00:18:19,860 Saya boleh berlari ia hanya seolah-olah ia telah sesuatu yang disusun di C. 403 00:18:19,860 --> 00:18:20,650 >> Tetapi di sini perkara itu. 404 00:18:20,650 --> 00:18:21,600 Sebenarnya, mari kita buat ini lagi. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Ada buku ejaan. 407 00:18:25,390 --> 00:18:26,720 OK, 0.44 saat. 408 00:18:26,720 --> 00:18:28,080 Ia mendapat lebih cepat kali ini. 409 00:18:28,080 --> 00:18:29,745 >> Sekarang mari kita pergi ke dalam versi PHP. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Nice sentuhan. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Tetapi hanya berfikir berapa banyak masa Saya disimpan di waktu pejabat. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK. 416 00:18:57,790 --> 00:19:01,020 >> Jadi 3.59 saat, yang sebenarnya tidak bunyi yang tepat sama ada. 417 00:19:01,020 --> 00:19:03,710 Tetapi itu kerana cerita panjang pendek, apabila anda mencetak sejumlah besar 418 00:19:03,710 --> 00:19:06,840 barangan untuk skrin, ini sendiri melambatkan perkara turun. 419 00:19:06,840 --> 00:19:11,260 Apa yang benar-benar mengambil CPU dalam perkakas adalah 3.59 saat, di 420 00:19:11,260 --> 00:19:15,260 bezakan kepada C, yang mengambil masa 0.44 saat yang paling baru-baru ini. 421 00:19:15,260 --> 00:19:17,620 Yang benar-benar suatu perintah magnitud yang berbeza. 422 00:19:17,620 --> 00:19:20,280 >> Jadi di mana adalah harga yang datang dari? 423 00:19:20,280 --> 00:19:21,790 Mengapa begitu lebih perlahan? 424 00:19:21,790 --> 00:19:24,220 Mengapa PHP melaksanakan begitu buruk? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> PENONTON: Anda sebenarnya tidak menggunakan jadual hash. 427 00:19:26,550 --> 00:19:27,710 >> DAVID MALAN: saya tidak benar-benar menggunakan jadual hash. 428 00:19:27,710 --> 00:19:28,760 Jadi saya jenis lakukan. 429 00:19:28,760 --> 00:19:29,870 Jadi ia pelbagai bersekutu. 430 00:19:29,870 --> 00:19:33,650 Kemungkinan besar jika orang-orang di PHP adalah benar-benar pintar, mereka menggunakan di bawah 431 00:19:33,650 --> 00:19:39,520 hud jadual hash sebenar dilaksanakan dalam sesuatu seperti C atau C + +. 432 00:19:39,520 --> 00:19:41,290 Tetapi. 433 00:19:41,290 --> 00:19:42,760 Yeah. 434 00:19:42,760 --> 00:19:44,010 >> PENONTON: [didengar]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVID MALAN: Yeah. 437 00:19:47,080 --> 00:19:50,780 Jadi setiap fungsi saya menulis sekarang - sebenarnya, anda boleh mengatakan bahawa sekali lagi satu 438 00:19:50,780 --> 00:19:51,480 sedikit lebih kuat? 439 00:19:51,480 --> 00:19:54,509 >> PENONTON: Setiap satu daripada fungsi-fungsi yang anda termasuk mempunyai lebih banyak penuh 440 00:19:54,509 --> 00:19:56,610 sekalipun daripada - 441 00:19:56,610 --> 00:19:57,550 >> DAVID MALAN: Jadi, itu amat benar. 442 00:19:57,550 --> 00:20:01,490 Terdapat banyak lagi overhed bahawa kita tidak benar-benar melihat dengan memfokus kepada 443 00:20:01,490 --> 00:20:03,730 dictionary.php, yang saya hanya menulis. 444 00:20:03,730 --> 00:20:08,020 Sebaliknya, ada jurubahasa keseluruhan akan di latar belakang. 445 00:20:08,020 --> 00:20:12,040 Malah, apabila saya berlari program ini, ia tidak berjalan sifar disusun dan orang-orang yang 446 00:20:12,040 --> 00:20:14,290 direka untuk CPU Intel saya. 447 00:20:14,290 --> 00:20:19,270 Sebaliknya, ia telah berjalan baris demi baris Kod PHP yang kelihatan betul-betul 448 00:20:19,270 --> 00:20:20,350 seperti kita ditaip ia. 449 00:20:20,350 --> 00:20:22,475 Dan demikian apabila anda menggunakan bahasa ditafsirkan, anda 450 00:20:22,475 --> 00:20:23,850 sebenarnya membayar harga ini. 451 00:20:23,850 --> 00:20:27,010 Ia akan mengambil sedikit masa untuk membaca atas fail anda ke bawah, kiri ke 452 00:20:27,010 --> 00:20:30,740 betul, dan kemudian melaksanakan setiap line lagi dan lagi. 453 00:20:30,740 --> 00:20:34,250 >> Sekarang dalam realiti, terutama di web, anda sebenarnya boleh mempercepatkan proses ini 454 00:20:34,250 --> 00:20:38,660 oleh caching keputusan Kod PHP yang ditafsirkan. 455 00:20:38,660 --> 00:20:41,640 Dan yang masuk akal di web, kerana jika anda tidak mempunyai satu pengguna seperti 456 00:20:41,640 --> 00:20:46,300 saya di sini, tetapi 1,000 atau 10,000 pengguna, maka mungkin kali pertama fail adalah 457 00:20:46,300 --> 00:20:49,050 diakses ia perlahan, tetapi selepas itu ia lebih cepat. 458 00:20:49,050 --> 00:20:51,000 >> Tetapi ini juga, sekali lagi, adalah keseimbangan. 459 00:20:51,000 --> 00:20:53,870 Dan untuk sesuatu seperti data penyelidikan ditetapkan, malah sesuatu yang besar seperti 460 00:20:53,870 --> 00:20:58,330 ini, pengguna anda akan akhirnya mula berasa kelembapan itu. 461 00:20:58,330 --> 00:21:02,670 >> Jadi ringkasnya, ditafsirkan bahasa adalah sangat banyak dalam tren, sangat popular, dan 462 00:21:02,670 --> 00:21:06,710 terus terang mungkin bahasa anda perlu mencapai apabila menyelesaikan masalah 463 00:21:06,710 --> 00:21:08,200 selepas CS50. 464 00:21:08,200 --> 00:21:12,720 Tetapi sedar berapa banyak yang anda benar-benar mengambil mudah di bawah hood 465 00:21:12,720 --> 00:21:15,910 benar-benar orang-orang beberapa minggu lalu dalam hash jadual, dan pokok-pokok, dan cuba, 466 00:21:15,910 --> 00:21:20,770 yang digunakan untuk benar-benar akhirnya melaksanakan perkara-perkara seperti kurungan terbuka, 467 00:21:20,770 --> 00:21:24,200 kurungan persegi, yang kita kini boleh terima kasih ambil mudah. 468 00:21:24,200 --> 00:21:26,360 >> Jadi mari kita lihat sekarang dalam konteks web ini. 469 00:21:26,360 --> 00:21:29,890 Dan saya nyatakan masa lalu bahawa ada sekumpulan superglobals dalam PHP yang 470 00:21:29,890 --> 00:21:32,490 tidak benar-benar berkaitan pada baris arahan. 471 00:21:32,490 --> 00:21:36,210 Mereka lebih relevan dalam konteks menggunakan PHP dalam konteks web. 472 00:21:36,210 --> 00:21:41,220 Maka, PHP pada pelayan web untuk untuk menjana barangan seperti HTML. 473 00:21:41,220 --> 00:21:44,540 >> Dan kita menoleh pada $ _GET dan $ _POST dan itu di mana pengguna-pengguna ' 474 00:21:44,540 --> 00:21:49,100 input berakhir hanya jika anda menyerahkan membentuk ke fail yang berakhir dengan. php di web yang 475 00:21:49,100 --> 00:21:50,460 server seperti perkakas. 476 00:21:50,460 --> 00:21:53,310 Tetapi mari kita lihat secara ringkas di $ _COOKIE Dan $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> Dari segi orang biasa itu, apa yang cookie sebagai anda memahaminya dalam konteks 478 00:21:56,670 --> 00:21:58,220 menggunakan web? 479 00:21:58,220 --> 00:21:59,450 >> PENONTON: Fail pada komputer. 480 00:21:59,450 --> 00:21:59,920 >> DAVID MALAN: Yeah. 481 00:21:59,920 --> 00:22:03,500 Ia adalah satu fail pada komputer pengguna ditanam dengan apa jua laman web 482 00:22:03,500 --> 00:22:04,410 anda berlaku untuk melawat. 483 00:22:04,410 --> 00:22:07,334 Oleh itu, apabila anda pergi ke Facebook, apabila anda pergi untuk bankofamerica.com, apabila anda pergi 484 00:22:07,334 --> 00:22:10,330 untuk google.com, apabila anda pergi ke hampir mana-mana laman web di dunia hari ini, 485 00:22:10,330 --> 00:22:14,850 termasuk cs50.net, cookie ditanam pada komputer anda, yang 486 00:22:14,850 --> 00:22:19,800 sama ada nilai yang disimpan dalam RAM dalam anda komputer dalam ingatan penyemak imbas anda, atau 487 00:22:19,800 --> 00:22:22,800 kadang-kadang memang fail disimpan pada pemacu keras anda. 488 00:22:22,800 --> 00:22:26,960 >> Dan apa yang biasanya disimpan di dalam fail yang bukan nama pengguna anda, tidak anda 489 00:22:26,960 --> 00:22:31,060 kata laluan, biasanya tidak sesuatu sensitif kecuali laman web tidak begitu 490 00:22:31,060 --> 00:22:35,040 baik dengan keselamatan mereka, tetapi sebaliknya ia adalah pengecam unik besar di kalangan 491 00:22:35,040 --> 00:22:35,680 perkara-perkara lain. 492 00:22:35,680 --> 00:22:38,920 Ia adalah satu nombor rawak yang besar yang ditanam di anda komputer tetapi anda boleh fikirkan sebagai 493 00:22:38,920 --> 00:22:42,740 semacam suatu cap tangan maya seperti dari kelab atau beberapa taman hiburan yang 494 00:22:42,740 --> 00:22:47,160 membolehkan kakitangan, pemilik yang perkhidmatan, ingat siapa anda. 495 00:22:47,160 --> 00:22:51,030 Jadi, jika nombor rawak yang besar adalah seperti 12345678, walaupun itulah jelas 496 00:22:51,030 --> 00:22:54,180 tidak terlalu rawak, memikirkan bahawa sebagai setem tangan yang apabila anda melawat 497 00:22:54,180 --> 00:22:57,930 facebook.com buat kali pertama, mereka setem nombor yang di tangan anda. 498 00:22:57,930 --> 00:23:01,510 Dan kemudian kerana anda bercakap HTTP, anda menjadi pelayar, dan kerana Facebook 499 00:23:01,510 --> 00:23:06,440 jelas bercakap yang sama seperti web pelayan, HTTP protokol mengatakan bahawa 500 00:23:06,440 --> 00:23:09,930 bila-bila masa anda kemudiannya melawat facebook.com, sama ada kedua 501 00:23:09,930 --> 00:23:13,560 kemudian, sejam kemudian, walaupun pada hari berikutnya, selagi anda tidak mempunyai jelas 502 00:23:13,560 --> 00:23:17,050 log keluar, yang berkesan adalah seperti mencuci tangan anda. 503 00:23:17,050 --> 00:23:20,280 HTTP mengatakan anda hendaklah mengemukakan anda setem tangan setiap kali anda 504 00:23:20,280 --> 00:23:22,020 kembali ke laman web itu. 505 00:23:22,020 --> 00:23:24,390 >> Apa Facebook maka tidak adalah mereka melihat bahawa setem tangan dan 506 00:23:24,390 --> 00:23:26,850 mereka berkata, oh, 123456789. 507 00:23:26,850 --> 00:23:30,260 Saya tidak tahu pada pandangan pertama bahawa ini David Malan di Cambridge, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, tetapi mereka boleh menyemak mereka pangkalan data dan, orang mengatakan, oh yang 509 00:23:34,690 --> 00:23:39,930 pada yang komputer kita ditanam 123456789 David Malan dari Cambridge, 510 00:23:39,930 --> 00:23:40,440 Massachusetts. 511 00:23:40,440 --> 00:23:46,000 Mari kita menunjukkan pengguna yang kemudiannya profil beliau halaman atau News Feed beliau. 512 00:23:46,000 --> 00:23:49,660 >> Tetapi ada masalah di sini jika ini ialah bagaimana web memang berfungsi. 513 00:23:49,660 --> 00:23:51,390 Mari kita lihat satu contoh yang cepat. 514 00:23:51,390 --> 00:23:55,190 Mari kita benar-benar pergi untuk mengatakan facebook.com. 515 00:23:55,190 --> 00:23:58,130 Tetapi sebelum kita boleh pergi ke sana, apatah saya pergi ke hadapan dan membuka itu Chrome 516 00:23:58,130 --> 00:23:59,790 Inspektor di sini. 517 00:23:59,790 --> 00:24:01,140 Biar saya melihat tab rangkaian. 518 00:24:01,140 --> 00:24:06,020 Dan sekarang mari kita pergi ke hadapan dan menaip dalam https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 Dan saya melakukan itu supaya kita tidak melihat semua orang-orang pelencongan dan sisa 520 00:24:09,410 --> 00:24:10,660 masa melihat melalui mereka. 521 00:24:10,660 --> 00:24:12,690 Biar saya tekan enter. 522 00:24:12,690 --> 00:24:13,130 >> Baiklah. 523 00:24:13,130 --> 00:24:14,580 Kita melihat sejumlah besar permintaan. 524 00:24:14,580 --> 00:24:15,640 Datang Facebook. 525 00:24:15,640 --> 00:24:16,930 Terdapat sejumlah besar fail. 526 00:24:16,930 --> 00:24:19,290 Dan di sini, semalam menyebut saya kependaman kali terakhir, itu 527 00:24:19,290 --> 00:24:21,240 banyak permintaan HTTP. 528 00:24:21,240 --> 00:24:23,700 Tetapi yang pertama adalah mungkin yang paling menarik. 529 00:24:23,700 --> 00:24:26,420 >> Jadi mari kita tatal ke bawah di sini, dan Saya akan mengezum di dalam satu saat. 530 00:24:26,420 --> 00:24:29,090 Ini akan menjadi jenis keadaan huru-hara, tetapi mari kita lihat. 531 00:24:29,090 --> 00:24:31,660 Facebook menghantar kami keseluruhan sekumpulan barangan. 532 00:24:31,660 --> 00:24:33,490 >> Tetapi wah, menarik. 533 00:24:33,490 --> 00:24:37,880 Mereka tidak menanam satu, tetapi empat setem tangan ke tangan saya di sini. 534 00:24:37,880 --> 00:24:40,400 Set-cookie, Set-cookie, set-kuki, set-cookies. 535 00:24:40,400 --> 00:24:44,030 Dan terdapat beberapa ciri-ciri di sini. 536 00:24:44,030 --> 00:24:46,170 Kesemua mereka menyebut beberapa jenis tamat. 537 00:24:46,170 --> 00:24:50,090 Dan ia kelihatan seperti Facebook berharap ingat saya sehingga 2015. 538 00:24:50,090 --> 00:24:53,670 Jadi, itu mungkin masa di mana Saya mesti log keluar atau mereka akan hanya 539 00:24:53,670 --> 00:24:55,710 secara automatik menganggap saya tidak akan kembali. 540 00:24:55,710 --> 00:24:57,840 Itulah sebenarnya yang layak jumlah masa. 541 00:24:57,840 --> 00:24:59,170 >> Dan terdapat beberapa yang lain perkara yang berlaku di sini. 542 00:24:59,170 --> 00:25:03,036 Kuki ini muncul untuk menjadi paksa dihapuskan dengan mengatakan ia tamat pada tahun 1970 543 00:25:03,036 --> 00:25:04,460 sebelum cookies wujud. 544 00:25:04,460 --> 00:25:06,510 Jadi pelayar hanya akan menganggap OK, itu seperti 545 00:25:06,510 --> 00:25:07,910 membasuh setem tangan. 546 00:25:07,910 --> 00:25:11,240 >> Tetapi sekarang apabila pelayar saya membuat permintaan seterusnya - 547 00:25:11,240 --> 00:25:14,340 izinkan saya pergi ke hadapan dan melakukan ini sekali lagi dan menambah nilai. 548 00:25:14,340 --> 00:25:18,170 Sekarang saya skrol kembali ke atas permintaan dan pergi ke 549 00:25:18,170 --> 00:25:20,760 di sini, permintaan tajuk. 550 00:25:20,760 --> 00:25:21,390 Notis ini. 551 00:25:21,390 --> 00:25:25,280 Jadi sekarang saya tidak di bawah tajuk tindak balas, tetapi notis ia berkata permintaan tajuk. 552 00:25:25,280 --> 00:25:29,220 Dan notis bahawa pelayar saya sebagai sebahagian daripada permintaan selepas tambah nilai memukul mempunyai 553 00:25:29,220 --> 00:25:32,780 menghantar sekurang-kurangnya berikut maklumat. 554 00:25:32,780 --> 00:25:34,670 Tidak set-cookies, tetapi cookies. 555 00:25:34,670 --> 00:25:38,750 Jadi ini adalah baris, header HTTP supaya untuk bercakap, di mana pelayar saya adalah jenis 556 00:25:38,750 --> 00:25:43,340 daripada tanpa mengetahui saya ia membentangkan tangan saya untuk pemeriksaan Facebook. 557 00:25:43,340 --> 00:25:46,020 >> Jadi ini cookies boleh digunakan maka untuk apa? 558 00:25:46,020 --> 00:25:49,420 Untuk ingat siapa anda, atau ingat bagaimana banyak kali anda pernah ke sana, atau 559 00:25:49,420 --> 00:25:50,280 benar-benar apa-apa. 560 00:25:50,280 --> 00:25:52,742 >> Jadi di sini adalah counter.php. 561 00:25:52,742 --> 00:25:53,780 Dan biarlah saya mengezum masuk pada fon. 562 00:25:53,780 --> 00:25:58,380 Dan setiap kali saya muat semula laman ini, notis ia mengingati berapa kali 563 00:25:58,380 --> 00:25:59,250 Saya telah berada di sana. 564 00:25:59,250 --> 00:26:00,570 Nah, itu bukan semua yang menarik. 565 00:26:00,570 --> 00:26:03,140 Mari kita menutup tab itu, dan sekarang mari kita kembali ke 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> Oh, itu menarik. 568 00:26:08,970 --> 00:26:10,960 Ia masih ingat, walaupun walaupun saya menutup tab. 569 00:26:10,960 --> 00:26:14,010 Dan terus-terang, jika saya menutup penyemak imbas, jika dilaksanakan dengan cara yang betul, saya 570 00:26:14,010 --> 00:26:18,950 masih ingat bahawa pengguna ini yang dia merupakan kali pertama, dan 571 00:26:18,950 --> 00:26:22,840 hanya sekali saya pergi ke menu Chrome, yang di sini di sini, dan pergi ke 572 00:26:22,840 --> 00:26:25,990 Sejarah, dan klik Clear Browsing Data, sebagai sebahagian daripada anda mungkin perlu dalam 573 00:26:25,990 --> 00:26:33,050 lalu, barulah akan cookies anda sebenarnya dihapuskan semasa web 574 00:26:33,050 --> 00:26:33,970 pembangunan. 575 00:26:33,970 --> 00:26:35,340 >> Jadi, jika kita pergi - 576 00:26:35,340 --> 00:26:37,080 mari kita menutup gedit sini. 577 00:26:37,080 --> 00:26:38,910 Dan jika kita pergi sekarang ke fail ini. 578 00:26:38,910 --> 00:26:44,210 Biar saya pergi ke kami vhosts / localhost / awam, dan biarlah saya lakukan 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Perhatikan bahawa ini adalah cukup program mudah. 581 00:26:48,350 --> 00:26:50,250 Ia adalah satu laman web yang agak mudah. 582 00:26:50,250 --> 00:26:51,770 >> Jadi bahagian atas fail hanya komen. 583 00:26:51,770 --> 00:26:54,930 Tetapi inilah barisan baru yang anda boleh telah dilihat sudah dalam p-set tujuh, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 Ini adalah baris kod PHP yang dasarnya memberitahu pelayan web, membuat 586 00:27:00,380 --> 00:27:03,400 pasti untuk menghapuskan tangan dan membuat pastikan setem tangan. 587 00:27:03,400 --> 00:27:06,810 Itu semua garis yang tidak, dan ia melakukan semua proses itu untuk kita. 588 00:27:06,810 --> 00:27:09,510 Kemudian notis Saya baru sahaja mendapat dua cawangan di sini. 589 00:27:09,510 --> 00:27:14,150 Jika di dalam kunci kaunter ini berubah-ubah global khas yang dipanggil 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Ditetapkan - dalam erti kata lain, jika terdapat beberapa nilai di sana - 591 00:27:18,010 --> 00:27:22,440 mari kita mendapatkannya dan menyimpannya dalam tempatan ubah dipanggil $ kaunter. 592 00:27:22,440 --> 00:27:27,000 Yang lain, mari kita memberikan $ kaunter nilai lalai 0. 593 00:27:27,000 --> 00:27:30,320 >> Sekarang di sini adalah salah satu aspek PHP itulah kedua-dua satu rahmat dan kutuk. 594 00:27:30,320 --> 00:27:32,080 PHP adalah sedikit ceroboh. 595 00:27:32,080 --> 00:27:35,160 Jadi sedangkan di C, apa yang akan dilakukan skop kaunter telah 596 00:27:35,160 --> 00:27:36,725 sama ada di sini atau di sini? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> Ia akan telah dikurung kepada orang-orang pendakap kerinting. 599 00:27:41,690 --> 00:27:42,090 Rasa apa? 600 00:27:42,090 --> 00:27:46,920 Dalam PHP, ia wujud walaupun di luar mereka pendakap kerinting, di sini, dan di sini, 601 00:27:46,920 --> 00:27:49,120 dan di sini, dan di sini, dan malah di bawah. 602 00:27:49,120 --> 00:27:52,400 Jadi saya katakan ini adalah satu rahmat dalam erti kata bahawa anda tidak perlu berfikir sebagai 603 00:27:52,400 --> 00:27:54,070 keras seperti yang kita lakukan minggu lalu. 604 00:27:54,070 --> 00:27:56,880 Tetapi ia juga sedikit sumpahan di yang tidak kira di mana anda menggunakan berubah-ubah dalam 605 00:27:56,880 --> 00:28:00,020 PHP, sekurang-kurangnya dalam program seperti ini, ia boleh diakses secara global 606 00:28:00,020 --> 00:28:01,170 lebih baik atau untuk lebih teruk. 607 00:28:01,170 --> 00:28:06,130 Jadi, anda perlu ingat sekarang bahawa pembolehubah anda mungkin tidak ditentukan. 608 00:28:06,130 --> 00:28:07,640 Anda mungkin telah ditakrifkan mereka di tempat lain. 609 00:28:07,640 --> 00:28:09,460 >> Tetapi apa yang saya akan lakukan akhirnya? 610 00:28:09,460 --> 00:28:13,160 Saya akan menyimpan dalam yang global berubah-ubah sebagai nilai 611 00:28:13,160 --> 00:28:17,060 utama kaunter hasil daripada melakukan kaunter campur 1. 612 00:28:17,060 --> 00:28:18,910 Jadi ini adalah hanya aritmetik yang melakukan 613 00:28:18,910 --> 00:28:20,590 incrementation kaunter itu. 614 00:28:20,590 --> 00:28:24,850 Dan hakikat bahawa saya menyimpan yang nilai kembali di sini adalah cara untuk 615 00:28:24,850 --> 00:28:29,970 dasarnya mengemaskini pangkalan data untuk ingat bahawa pengguna 123456789 telah 616 00:28:29,970 --> 00:28:31,010 di sini dua kali. 617 00:28:31,010 --> 00:28:33,780 Dan apabila saya melakukannya sekali lagi masa depan saya memuatkan semula halaman, ia akan memeriksa 618 00:28:33,780 --> 00:28:36,710 tangan saya setem dan berkata, oh, pengguna 123456789 kini 619 00:28:36,710 --> 00:28:38,410 Sudah tiga kali. 620 00:28:38,410 --> 00:28:43,390 >> Dan jadi apa PHP dan bahasa yang sama lakukan untuk kita adalah mereka memikirkan 621 00:28:43,390 --> 00:28:47,720 bagaimana dan di mana dan untuk berapa lama untuk menyimpan nilai dalam ini khas 622 00:28:47,720 --> 00:28:48,830 Superglobal. 623 00:28:48,830 --> 00:28:52,750 Dan ini Superglobal masa yang akan datang saya melawat halaman adalah jenis ajaib 624 00:28:52,750 --> 00:28:57,440 pra-penduduk, penuh dengan nilai-nilai yang berada di sana kali terakhir anda melawat, 625 00:28:57,440 --> 00:29:02,310 sama ada yang kedua yang lalu, seminggu yang lalu, atau pada tahun 2013 dan kita sedang bercakap 626 00:29:02,310 --> 00:29:03,790 kira-kira 2015. 627 00:29:03,790 --> 00:29:07,600 PHP dan pelayan web akan menjaga daripada semua itu untuk anda. 628 00:29:07,600 --> 00:29:08,850 >> PENONTON: [didengar]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID MALAN: Pembolehubah dalam PHP adalah dasarnya sentiasa global melainkan jika anda 631 00:29:15,760 --> 00:29:18,400 mengisytiharkan mereka dalam fungsi, dan kemudian mereka tempatan untuk 632 00:29:18,400 --> 00:29:19,420 fungsi sahaja. 633 00:29:19,420 --> 00:29:22,300 Tetapi kerana saya tidak menulis apa-apa fungsi, mereka kini berkesan 634 00:29:22,300 --> 00:29:25,090 global sepanjang keseluruhan fail saya di sini. 635 00:29:25,090 --> 00:29:26,040 >> PENONTON: Adakah cara yang untuk membuat mereka tempatan? 636 00:29:26,040 --> 00:29:28,470 >> DAVID MALAN: Adakah terdapat apa-apa cara untuk membuat mereka tempatan? 637 00:29:28,470 --> 00:29:30,680 Hanya dengan membungkus mereka ke dalam fungsi. 638 00:29:30,680 --> 00:29:32,790 Yang pada versi terbaru PHP, anda boleh melakukan ini dengan 639 00:29:32,790 --> 00:29:34,130 fungsi tanpa nama. 640 00:29:34,130 --> 00:29:35,930 Tetapi lebih kepada yang di konteks JavaScript. 641 00:29:35,930 --> 00:29:37,260 Tetapi jawapan ringkasnya adalah tidak. 642 00:29:37,260 --> 00:29:40,888 Satu jawapan yang lebih lama adalah ya. 643 00:29:40,888 --> 00:29:42,380 Nice. 644 00:29:42,380 --> 00:29:43,380 Soalan kuiz yang baik. 645 00:29:43,380 --> 00:29:43,930 Baiklah. 646 00:29:43,930 --> 00:29:47,760 >> Jadi akhir sekali, halaman itu sendiri adalah sebenarnya agak mudah. 647 00:29:47,760 --> 00:29:51,470 Perhatikan bahawa sekali saya keluar mod PHP, ingat bahawa semua barangan ini ke bawah 648 00:29:51,470 --> 00:29:53,700 di bawah hanya akan mendapatkan meludah keluar mentah kepada pelayar. 649 00:29:53,700 --> 00:29:57,050 Yang halus, kerana saya ingin menghantar pengguna beberapa HTML, tetapi saya mahu 650 00:29:57,050 --> 00:29:59,140 untuk secara dinamik mengemaskini HTML itu. 651 00:29:59,140 --> 00:30:03,930 Dan satu cara yang boleh saya lakukan ini adalah untuk menyusun sangat cepat jatuh kembali ke dalam PHP 652 00:30:03,930 --> 00:30:07,730 mod, penggunaan kurungan terbuka tanda tanya tanda yang sama, dan kemudian output nilai 653 00:30:07,730 --> 00:30:08,650 kaunter. 654 00:30:08,650 --> 00:30:12,360 >> Atau jika ini kelihatan sedikit samar, ini tanda sama sebenarnya hanya beberapa 655 00:30:12,360 --> 00:30:16,190 gula sintaksis untuk ini printf ($ kaunter). 656 00:30:16,190 --> 00:30:19,160 Tetapi terus terang, itu hanya sedikit hodoh dan menjengkelkan sedikit untuk menaip. 657 00:30:19,160 --> 00:30:23,660 Jadi PHP sangat baik menawarkan ciri ini di mana anda hanya boleh mengatakan ia lebih 658 00:30:23,660 --> 00:30:25,450 ringkas dengan cara yang sama. 659 00:30:25,450 --> 00:30:26,940 >> Jadi apa yang berlaku di bawah hud? 660 00:30:26,940 --> 00:30:31,210 Mari cepat melihat rangkaian tekan sini untuk counter.php. 661 00:30:31,210 --> 00:30:35,090 Dan biarlah saya teruskan dan pertama mari kita membersihkan cookies anda. 662 00:30:35,090 --> 00:30:38,670 Mari kita data melayari jelas sejak permulaan masa. 663 00:30:38,670 --> 00:30:39,680 Sekarang mari kita kembali di sini. 664 00:30:39,680 --> 00:30:41,340 Sekarang mari kita memuat semula halaman. 665 00:30:41,340 --> 00:30:42,170 Dan saya kembali pada sifar. 666 00:30:42,170 --> 00:30:44,810 Kerana setem tangan saya telah dibasuh, Saya kini mendapat kuki baru. 667 00:30:44,810 --> 00:30:48,780 >> Sesungguhnya jika saya melihat tekan rangkaian dan melihat pengepala sambutan, notis 668 00:30:48,780 --> 00:30:51,960 perkakas sedang menghantar saya cookie yang namanya agak 669 00:30:51,960 --> 00:30:55,820 sewenang-wenangnya, tetapi jenis munasabah, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 Dan ia menghantar saya ini benar-benar nombor rawak yang besar. 671 00:30:58,440 --> 00:30:59,440 Ia tidak cukup nombor. 672 00:30:59,440 --> 00:31:00,390 Ia tidak cukup perenambelasan. 673 00:31:00,390 --> 00:31:03,600 Ia beberapa jenis string abjad angka, tetapi mungkin ia secara rawak. 674 00:31:03,600 --> 00:31:06,830 Dan itu adalah setem tangan supaya untuk bercakap bahawa saya merujuk kepada. 675 00:31:06,830 --> 00:31:11,960 >> Sementara itu jika saya klik tambah nilai dan kemudian melihat garis kedua ini untuk kedua saya 676 00:31:11,960 --> 00:31:17,600 permintaan, notis sekarang bahawa permintaan saya header termasuk PHPSESSID sama ini, 677 00:31:17,600 --> 00:31:19,390 tidak set-cookie, tetapi hanya cookies. 678 00:31:19,390 --> 00:31:22,950 Dan itulah persembahan pelayar saya setem tangan saya. 679 00:31:22,950 --> 00:31:28,820 >> Jadi sekarang sebagai memujuknya, dan kami akan bercakap lebih tentang perkara ini dalam seminggu atau lebih, tetapi 680 00:31:28,820 --> 00:31:31,590 dengan cara apa adakah ini membuat anda terdedah, akaun Facebook anda 681 00:31:31,590 --> 00:31:34,137 terdedah, dan lain-lain akaun terdedah? 682 00:31:34,137 --> 00:31:35,510 >> PENONTON: Jika seseorang mempunyai cookie anda. 683 00:31:35,510 --> 00:31:36,750 >> DAVID MALAN: Ya, jika seseorang mempunyai cookie anda. 684 00:31:36,750 --> 00:31:39,920 Maksud saya benar-benar, sama seperti sebahagian dari kamu mungkin telah mencuba pada seperti kelab atau 685 00:31:39,920 --> 00:31:44,030 taman hiburan, jika anda mencuba sesuatu yang seperti ini untuk menyalin setem, walaupun 686 00:31:44,030 --> 00:31:47,560 ke belakang ke tangan orang lain, dan kemudian dia membentangkan sebagai 687 00:31:47,560 --> 00:31:53,250 mereka sendiri, jika ia benar-benar tidak kelihatan serupa, 123456789, maka web 688 00:31:53,250 --> 00:31:57,980 server nampaknya hanya akan percaya bahawa pengguna yang anda. 689 00:31:57,980 --> 00:32:01,450 >> Dan ini merupakan satu asas ancaman bila-bila masa anda menggunakan cookies 690 00:32:01,450 --> 00:32:05,420 kerana jika seseorang hanya spoofs jadi untuk bercakap cookie anda, angka daripada apa yang 691 00:32:05,420 --> 00:32:08,660 adalah, sama ada dengan benar-benar menirunya dengan melihat komputer anda 692 00:32:08,660 --> 00:32:09,890 dan menjadi seperti, OK. 693 00:32:09,890 --> 00:32:14,520 Cookie Daud adalah JJ3JIK dan sebagainya, dan kemudian mereka cukup bijak untuk tahu 694 00:32:14,520 --> 00:32:18,080 bagaimana untuk jenis menghantar secara manual yang cookie dari pelayar atau dari 695 00:32:18,080 --> 00:32:22,350 program mereka menulis, mereka boleh sama sekali log masuk ke laman web anda. 696 00:32:22,350 --> 00:32:28,560 Ia tidak begitu sukar untuk berpura-pura menjadi orang lain kecuali kita semula p-set 697 00:32:28,560 --> 00:32:30,790 dua, yang memperkenalkan apa? 698 00:32:30,790 --> 00:32:32,065 >> PENONTON: Kriptografi. 699 00:32:32,065 --> 00:32:33,860 >> DAVID MALAN: Sedikit sedikit kriptografi. 700 00:32:33,860 --> 00:32:36,550 Kriptografi yang mudah, sekurang-kurangnya pada edisi standard, tetapi kripto 701 00:32:36,550 --> 00:32:36,870 tetap. 702 00:32:36,870 --> 00:32:37,410 kurang. 703 00:32:37,410 --> 00:32:41,440 Jadi ternyata jika anda menyulitkan semua header ini sesuatu yang menggunakan anda 704 00:32:41,440 --> 00:32:48,770 sekarang mungkin tahu lebih akrab sebagai SSL, lapisan soket selamat, atau https:// URL, 705 00:32:48,770 --> 00:32:51,890 maka semua perkara-perkara ini kita telah sambil mengerling ke arah sebenarnya disulitkan, 706 00:32:51,890 --> 00:32:54,800 yang bermaksud bahawa ia seperti anda tidak boleh membaca setem tangan. 707 00:32:54,800 --> 00:32:59,350 Hanya facebook.com boleh, atau google.com, atau dalam kes ini, perkakas boleh 708 00:32:59,350 --> 00:33:00,550 membaca bahawa setem tangan. 709 00:33:00,550 --> 00:33:04,020 >> Malangnya walaupun, dan sekali lagi, ini adalah terlalu sesuai dengan barangan NSA yang 710 00:33:04,020 --> 00:33:06,410 akhir-akhir, walaupun SSL mudah pecah. 711 00:33:06,410 --> 00:33:09,850 Dan ia sebenarnya tidak sukar walaupun retak penyulitan itu. 712 00:33:09,850 --> 00:33:12,040 Tidak begitu banyak oleh keretakan penyulitan, tetapi dengan memperdayakan yang 713 00:33:12,040 --> 00:33:15,720 pelayar ke decrypting data awal. 714 00:33:15,720 --> 00:33:17,880 Apapun, kita akan mengusik anda dengan itu tidak lama lagi. 715 00:33:17,880 --> 00:33:21,242 Buat masa ini, hanya takut. 716 00:33:21,242 --> 00:33:23,070 Ia tragedi jenis benar. 717 00:33:23,070 --> 00:33:23,760 >> Baiklah. 718 00:33:23,760 --> 00:33:27,910 Jadi, di manakah kini meninggalkan kita? 719 00:33:27,910 --> 00:33:29,010 Nah, mari kita melakukan ini. 720 00:33:29,010 --> 00:33:31,790 Mari kita pergi ke hadapan dan mengambil yang cepat penggoda sebelum kita berehat. 721 00:33:31,790 --> 00:33:33,790 Dan saya fikir kita akan berlegar masa yang lebih lama hari ini, tetapi kita akan menyelam ke dalam 722 00:33:33,790 --> 00:33:37,850 sesuatu yang baru dan seksi, yang akan mengasah selera anda untuk lebih. 723 00:33:37,850 --> 00:33:38,950 Jadi, itu penggoda. 724 00:33:38,950 --> 00:33:41,520 >> Jadi SQL, kita mula bercakap tentang pernah jadi secara ringkas kali terakhir. 725 00:33:41,520 --> 00:33:44,670 Anda benar-benar akan mendapatkan tangan anda kotor dengan beberapa dalam p yang ditetapkan tujuh. 726 00:33:44,670 --> 00:33:46,480 Dan dari segi orang biasa itu, apakah SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 lakukan untuk anda? 729 00:33:49,850 --> 00:33:50,310 Apakah ia? 730 00:33:50,310 --> 00:33:51,546 Yeah. 731 00:33:51,546 --> 00:33:53,240 >> PENONTON: Mari kita data akses anda. 732 00:33:53,240 --> 00:33:53,360 >> DAVID MALAN: Yeah. 733 00:33:53,360 --> 00:33:55,120 Ia mari kita data akses anda dalam pangkalan data. 734 00:33:55,120 --> 00:33:56,710 Structured Query Language. 735 00:33:56,710 --> 00:33:59,890 Dan ini pada asasnya adalah bahasa pengaturcaraan. 736 00:33:59,890 --> 00:34:03,400 Terdapat ciri-ciri itu yang kita bahkan tidak akan menggunakan di dalam kelas. 737 00:34:03,400 --> 00:34:04,710 Tetapi anda boleh berkesan menentukan fungsi. 738 00:34:04,710 --> 00:34:06,870 Mereka dipanggil disimpan prosedur dalam SQL. 739 00:34:06,870 --> 00:34:09,860 Tetapi kita akan menyimpannya agak mudah dan hanya menggunakannya untuk beberapa operasi asas 740 00:34:09,860 --> 00:34:14,320 seperti memilih data, memasukkan data, mengemaskini data, dan memadam data. 741 00:34:14,320 --> 00:34:17,400 >> Dan anda benar-benar dapat memikirkan pangkalan data, seperti pangkalan data SQL, sebagai hanya 742 00:34:17,400 --> 00:34:18,800 menjadi Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Kerana SQL merujuk kepada hubungan yang pangkalan data, di mana 744 00:34:21,989 --> 00:34:23,480 berhubung hanya bermakna jadual. 745 00:34:23,480 --> 00:34:24,739 Baris dan lajur. 746 00:34:24,739 --> 00:34:27,929 Jadi apa sahaja yang anda boleh dimasukkan ke dalam spreadsheet seperti ini atau Google Docs, 747 00:34:27,929 --> 00:34:32,460 anda boleh dimasukkan ke dalam pangkalan data SQL dengan mengisytiharkan meja. 748 00:34:32,460 --> 00:34:34,800 >> Sekarang, bagaimana anda sebenarnya mengakses maklumat itu? 749 00:34:34,800 --> 00:34:38,239 Nah, dengan arahan atau pertanyaan seperti ini. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE, DELETE dan. 751 00:34:40,199 --> 00:34:44,489 Dan sebahagian besar, mereka adalah empat bahan-bahan hanya anda perlu 752 00:34:44,489 --> 00:34:47,370 melakukan sesuatu yang agak kuat dalam masalah set tujuh. 753 00:34:47,370 --> 00:34:49,940 >> Kini kembali pada hari tersebut, anda akan benar-benar berinteraksi dengan pangkalan data dalam 754 00:34:49,940 --> 00:34:52,730 hitam dan putih tetingkap terminal di segera berkelip seperti ini. 755 00:34:52,730 --> 00:34:56,370 Dan pangkalan data kami berjalan di perkakas dipanggil MySQL, yang merupakan 756 00:34:56,370 --> 00:34:58,560 enjin pangkalan data sumber bebas dan terbuka. 757 00:34:58,560 --> 00:35:02,240 Jika anda Google dan membaca Wikipedia artikel, anda akan tahu bahawa nama itu adalah 758 00:35:02,240 --> 00:35:05,060 sedikit peralihan untuk beberapa versi Linux. 759 00:35:05,060 --> 00:35:10,460 Pangkalan data Maria sebenarnya adalah garpu boleh dikatakan MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Cerita pendek yang panjang, Oracle membeli MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle sebuah syarikat besar. 762 00:35:13,870 --> 00:35:17,010 Rakyat telah bimbang bahawa ia akan tidak lagi kekal sebagai sumber cukup sebagai terbuka, 763 00:35:17,010 --> 00:35:20,930 jadi ini adalah hanya satu salinan MySQL itulah masih bebas, masih sumber terbuka, dan 764 00:35:20,930 --> 00:35:23,550 dipasang di Fedora Linux secara lalai. 765 00:35:23,550 --> 00:35:26,130 >> Tetapi ini adalah jenis sakit di leher untuk mengetahui dengan 766 00:35:26,130 --> 00:35:27,310 pangkalan data dengan cara ini. 767 00:35:27,310 --> 00:35:30,560 Oleh itu, kita termasuk dalam perkakas yang CS50 alat sumber terbuka percuma yang dipanggil 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Hanya kebetulan yang ia ditulis dalam PHP. 770 00:35:33,940 --> 00:35:36,450 Tidak ada asas perlu untuk PHP di sini. 771 00:35:36,450 --> 00:35:40,090 Tetapi ini hanya alat berasaskan web yang kita turun secara percuma, dipasang di 772 00:35:40,090 --> 00:35:43,850 perkakas, yang membolehkan kita untuk mempunyai antara muka pengguna grafik dengan yang 773 00:35:43,850 --> 00:35:48,610 untuk meneroka p set tujuh pangkalan data dengan mana untuk mencipta pangkalan data baru, 774 00:35:48,610 --> 00:35:51,980 katakan untuk projek akhir anda sendiri jika anda akan seperti, dan akhirnya mewujudkan 775 00:35:51,980 --> 00:35:55,900 seperti laman web dinamik CS50 Kewangan yang membolehkan anda untuk query data dan 776 00:35:55,900 --> 00:35:58,140 mengemaskini data secara dinamik. 777 00:35:58,140 --> 00:36:01,420 >> Anda tidak akan perlu untuk menggunakan hanya fail teks yang mudah atau CSV. 778 00:36:01,420 --> 00:36:05,950 Anda sebenarnya boleh menggunakan pangkalan data pintar program supaya anda boleh melaksanakan lebih 779 00:36:05,950 --> 00:36:10,240 pertanyaan canggih daripada hanya membaca melalui semua linear. 780 00:36:10,240 --> 00:36:14,150 >> Jadi misalnya, ini adalah apa yang kita berikan anda keluar dari kotak untuk p yang ditetapkan tujuh. 781 00:36:14,150 --> 00:36:18,280 Ini adalah sebuah meja dengan nampaknya sekurang-kurangnya tiga tiang, salah satu daripadanya ialah 782 00:36:18,280 --> 00:36:21,450 nama pengguna, satu daripadanya adalah hash, dan yang satu lagi adalah ID. 783 00:36:21,450 --> 00:36:26,200 >> Tetapi perkara yang menarik, dan hanya untuk dapati daripada satu pemikiran di sini, nama pengguna 784 00:36:26,200 --> 00:36:29,270 adalah mungkin sudah unik, bukan? 785 00:36:29,270 --> 00:36:31,190 Maksud saya, kebanyakan laman web mana-mana, jika anda mempunyai nama pengguna, terdapat 786 00:36:31,190 --> 00:36:32,370 tidak boleh dua Caesars. 787 00:36:32,370 --> 00:36:33,440 Tidak boleh ada dua malans. 788 00:36:33,440 --> 00:36:34,950 Tidak boleh ada dua jharvards. 789 00:36:34,950 --> 00:36:35,600 Yang unik. 790 00:36:35,600 --> 00:36:38,610 Jika tidak, mereka tidak tahu yang mana jharvard sebenarnya. 791 00:36:38,610 --> 00:36:42,710 Jadi apa yang mungkin menjadi motivasi untuk juga mempunyai kolum ketiga di sebelah kiri 792 00:36:42,710 --> 00:36:46,970 ada dipanggil ID, yang kelihatan seperti bilangan itu juga unik? 793 00:36:46,970 --> 00:36:51,300 Rasanya berlebihan sedikit kepada saya pada pandangan pertama. 794 00:36:51,300 --> 00:36:54,910 Mengapa ia menarik mungkin mempunyai bukan sahaja nama samaran yang unik, 795 00:36:54,910 --> 00:36:56,837 tetapi juga nombor yang unik? 796 00:36:56,837 --> 00:36:59,460 >> PENONTON: Mereka boleh mempunyai kata laluan yang sama. 797 00:36:59,460 --> 00:37:01,720 >> DAVID MALAN: Orang mungkin mempunyai kata laluan yang sama, pasti. 798 00:37:01,720 --> 00:37:03,900 Yang benar-benar boleh berlaku. 799 00:37:03,900 --> 00:37:08,270 Tetapi jika mereka mempunyai nama pengguna yang unik ini, saya akan berhujah bahawa yang tidak benar-benar 800 00:37:08,270 --> 00:37:11,630 perkara, kerana jika mereka taip mereka nama pengguna, saya hanya perlu menyemak mereka 801 00:37:11,630 --> 00:37:15,060 kata laluan, hash mereka berpandangan demikian. 802 00:37:15,060 --> 00:37:15,970 Mengapa lagi? 803 00:37:15,970 --> 00:37:17,950 >> PENONTON: lebih cepat mencari. 804 00:37:17,950 --> 00:37:18,680 >> DAVID MALAN: lebih cepat mencari. 805 00:37:18,680 --> 00:37:19,548 Mengapa? 806 00:37:19,548 --> 00:37:21,460 >> PENONTON: ID hanya satu. 807 00:37:21,460 --> 00:37:24,040 >> DAVID MALAN: ID hanya salah satu watak, atau lebih tepat, ia adalah nombor, 808 00:37:24,040 --> 00:37:26,910 jadi ia mungkin 32 bit atau sesuatu seperti itu. 809 00:37:26,910 --> 00:37:30,270 Manakala nama pengguna, nampaknya Jason Sehingga Hirschhorn ini terdapat jenis 810 00:37:30,270 --> 00:37:33,900 sungguh panjang, dan ia akan membawa saya lebih banyak masa kepada rentetan 811 00:37:33,900 --> 00:37:40,910 membandingkan H-I-R-S-C-H-H-O-R-N, dan mungkin a / 0 atau sesuatu seperti itu, untuk 812 00:37:40,910 --> 00:37:45,100 untuk mencari Jason, berbanding dengan hanya mengatakan berikan saya nombor pengguna dua. 813 00:37:45,100 --> 00:37:46,510 Itulah 32 bit. 814 00:37:46,510 --> 00:37:48,550 Ia adalah satu INT tunggal yang anda perlu membandingkan. 815 00:37:48,550 --> 00:37:52,150 Dan sesungguhnya, itulah mengapa pangkalan data cenderung untuk memberikan ID unik untuk 816 00:37:52,150 --> 00:37:53,710 baris di dalamnya. 817 00:37:53,710 --> 00:37:56,280 >> Sekarang apa jenis data lain terdapat selain INT dan nampaknya 818 00:37:56,280 --> 00:37:57,160 tali seperti ini? 819 00:37:57,160 --> 00:37:59,700 Nah, untuk menjadi lebih betul, Pangkalan data SQL, seperti 820 00:37:59,700 --> 00:38:02,060 MySQL, mempunyai bidang CHAR. 821 00:38:02,060 --> 00:38:05,320 Dan Char sedikit mengelirukan bukan CHAR tunggal. 822 00:38:05,320 --> 00:38:10,290 Satu bidang CHAR dalam pangkalan data MySQL adalah satu atau lebih aksara, tetapi ia adalah 823 00:38:10,290 --> 00:38:11,780 nombor tetap aksara. 824 00:38:11,780 --> 00:38:15,710 >> Jadi misalnya, jika saya pergi ke phpMyAdmin sebagai anda mungkin telah, atau 825 00:38:15,710 --> 00:38:21,340 tidak lama lagi masalah akan menetapkan tujuh, dan saya pergi kepada pangkalan data saya, dan hanya untuk keseronokan, 826 00:38:21,340 --> 00:38:25,700 mari kita buat jadual baru yang dikenali sebagai menguji dengan hanya dua tiang. 827 00:38:25,700 --> 00:38:27,160 Saya kemudian akan klik Go. 828 00:38:27,160 --> 00:38:30,070 Dan ini akan menjadi agak biasa, terutamanya kerana anda menggerumit 829 00:38:30,070 --> 00:38:31,130 sekitar sendiri. 830 00:38:31,130 --> 00:38:34,140 Di sini saya mungkin menaip ID untuk mewujudkan jadual baru jenis INT. 831 00:38:34,140 --> 00:38:37,770 Tetapi di sini saya mungkin menaip nama pengguna untuk mencipta jadual yang lebih awal. 832 00:38:37,770 --> 00:38:40,700 Dan notis Saya mempunyai sejumlah jenis untuk dipilih. 833 00:38:40,700 --> 00:38:43,610 >> Dan ini juga adalah mengapa phpMyAdmin adalah jenis yang bagus. 834 00:38:43,610 --> 00:38:46,770 Ia adalah jenis pengajaran diri dalam yang anda boleh hanya jenis titik, dan klik, dan 835 00:38:46,770 --> 00:38:50,730 melihat menu dropdown, dan membuat kesimpulan dari bahawa apa kuasa SQL memberikan anda. 836 00:38:50,730 --> 00:38:54,090 >> Dan sesungguhnya, jika saya memilih CHAR, saya kemudian perlu menentukan panjang, atau bagaimana 837 00:38:54,090 --> 00:38:55,940 banyak nilai-nilai, berapa banyak aksara. 838 00:38:55,940 --> 00:39:00,090 Jadi nilai yang biasa adalah perkara-perkara seperti 255, tetapi yang sedikit panjang. 839 00:39:00,090 --> 00:39:02,250 Biasanya adalah lapan bagi nama pengguna. 840 00:39:02,250 --> 00:39:03,590 Tetapi itu sedikit kecil pada hari ini. 841 00:39:03,590 --> 00:39:05,430 Jadi ini adalah satu keputusan reka bentuk. 842 00:39:05,430 --> 00:39:08,630 Adakah 8 aksara max, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 Ia benar-benar terpulang kepada anda. 844 00:39:09,830 --> 00:39:12,350 Tetapi bidang CHAR adalah nombor tetap. 845 00:39:12,350 --> 00:39:16,420 Jadi, pilih terlalu sedikit dan anda jenis diskru jika anda mahu nama pengguna yang lebih lama. 846 00:39:16,420 --> 00:39:19,132 Pilih terlalu banyak dan apa yang Kelemahan? 847 00:39:19,132 --> 00:39:20,820 >> PENONTON: [didengar]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID MALAN: Ia membazir. 849 00:39:21,620 --> 00:39:24,835 Sama seperti dalam C, jika anda mempunyai yang lebih besar sebahagian memori daripada yang anda perlukan, anda 850 00:39:24,835 --> 00:39:27,190 hanya membuang masa dan membazirkan ruang. 851 00:39:27,190 --> 00:39:31,430 Jadi sebagai alternatif, terdapat VARCHAR, yang menyelesaikan masalah ini dengan 852 00:39:31,430 --> 00:39:36,390 merawat panjang bukan sebagai panjang tetap, tetapi sebagai panjang maksimum, dan menggunakan 853 00:39:36,390 --> 00:39:40,990 beberapa pembolehubah aksara, yang kemudiannya cenderung untuk menggunakan hanya sebagai banyak aksara yang anda 854 00:39:40,990 --> 00:39:42,710 sebenarnya perlukan. 855 00:39:42,710 --> 00:39:43,670 Yang berbunyi sempurna. 856 00:39:43,670 --> 00:39:45,640 >> Mengapa kita tidak menghapuskan Data CHAR menaip kemudian? 857 00:39:45,640 --> 00:39:48,500 Apa yang mungkin menjadi keburukan menggunakan VARCHARs, yang berbunyi 858 00:39:48,500 --> 00:39:51,644 seperti ia adalah satu kemenangan yang bagus? 859 00:39:51,644 --> 00:39:52,596 Yeah? 860 00:39:52,596 --> 00:39:53,846 >> PENONTON: [didengar]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID MALAN: OK, baik. 863 00:39:57,790 --> 00:40:01,101 Jadi, jika semua data anda adalah sama panjang, apa yang kebimbangan? 864 00:40:01,101 --> 00:40:05,250 >> PENONTON: Kerana anda membuang data dengan memberitahu mereka semua. 865 00:40:05,250 --> 00:40:09,060 >> DAVID MALAN: Jadi, jika semua data anda adalah panjang yang sama, walaupun, saya akan berhujah 866 00:40:09,060 --> 00:40:12,300 itu yang menyatakan panjang maksimum pada VARCHAR tidak berbeza 867 00:40:12,300 --> 00:40:16,070 menyatakan panjang tetap pada CHAR jika anda tahu jumlah itu terlebih dahulu. 868 00:40:16,070 --> 00:40:19,500 Tetapi ada sesungguhnya, dan saya akan jenis cabutan daripada jawapan yang realiti 869 00:40:19,500 --> 00:40:22,610 yang masih ada mak, yang boleh mengganggu, terutamanya jika anda 870 00:40:22,610 --> 00:40:25,920 menghadapi nama seseorang itu luar biasa panjang yang anda tidak 871 00:40:25,920 --> 00:40:26,860 menjangka. 872 00:40:26,860 --> 00:40:31,420 Dan ia juga sedikit kurang cekap untuk benar-benar mencari di VARCHARs sebagai 873 00:40:31,420 --> 00:40:35,620 bertentangan dengan mencari aksara, terutamanya untuk jadual lama yang mempunyai banyak dan 874 00:40:35,620 --> 00:40:36,510 banyak data. 875 00:40:36,510 --> 00:40:40,060 Jadi di sini juga, tematik sekali lagi ada pilihan yang jelas. 876 00:40:40,060 --> 00:40:42,870 >> Jadi hanya untuk memberi anda rasa lain jenis data yang mungkin menarik minat 877 00:40:42,870 --> 00:40:45,400 sama ada untuk p yang ditetapkan tujuh atau dalam masa akan datang, ada INT. 878 00:40:45,400 --> 00:40:47,270 Ada BIGINT, yang adalah seperti panjang panjang. 879 00:40:47,270 --> 00:40:48,880 Ia cenderung untuk menjadi 64 bit. 880 00:40:48,880 --> 00:40:51,640 Ada perpuluhan, yang anda akan lihat di set masalah, yang merupakan lebih 881 00:40:51,640 --> 00:40:55,300 jawapan lebih bersih untuk masalah yang kita dihadapi dengan terapung dan terapung 882 00:40:55,300 --> 00:40:55,980 menunjukkan ketakpersisan. 883 00:40:55,980 --> 00:40:57,390 Dan kemudian ada DATETIME. 884 00:40:57,390 --> 00:41:01,530 Ada beribu-jenis data yang mempunyai untuk kelihatan seperti setahun, sebulan, sehari, 885 00:41:01,530 --> 00:41:03,730 dan satu jam, minit, dan kedua. 886 00:41:03,730 --> 00:41:07,470 >> Tetapi pangkalan data SQL juga mempunyai perkara yang kita akan memanggil indeks. 887 00:41:07,470 --> 00:41:11,630 Dan indeks adalah sesuatu yang anda nyatakan semasa membuat jadual untuk 888 00:41:11,630 --> 00:41:15,720 membuat pencarian dan operasi lain lebih cekap. 889 00:41:15,720 --> 00:41:18,550 Secara khusus, ada sesuatu yang dipanggil indeks RENDAH bahawa anda boleh 890 00:41:18,550 --> 00:41:19,440 mengisytiharkan seperti berikut. 891 00:41:19,440 --> 00:41:22,330 >> Kami melakukan ini untuk anda dengan jadual pengguna kami memberi anda. 892 00:41:22,330 --> 00:41:26,160 Tetapi notis jika saya telah mencipta secara manual meja pengguna di sini memberi 893 00:41:26,160 --> 00:41:27,110 ia nama pengguna. 894 00:41:27,110 --> 00:41:28,125 Saya sudah ID dinyatakan. 895 00:41:28,125 --> 00:41:29,330 Saya dinyatakan INT. 896 00:41:29,330 --> 00:41:32,000 Saya sebutkan nama pengguna dengan maksimum 32 aksara. 897 00:41:32,000 --> 00:41:36,140 Tetapi jika kita menyimpan menatal dalam ini agak tingkap luas, notis ada 898 00:41:36,140 --> 00:41:38,260 sekumpulan perkara lain yang saya boleh menentukan. 899 00:41:38,260 --> 00:41:40,950 >> Satu, saya boleh menentukan sifat-sifat seperti, anda tahu apa, ini 900 00:41:40,950 --> 00:41:42,190 INT harus tidak ditandatangani. 901 00:41:42,190 --> 00:41:45,510 Saya tidak mahu nombor negatif, jadi mari kita membuat ia tidak ditandatangani. 902 00:41:45,510 --> 00:41:48,660 Nol tidak relevan di sini kerana Saya mahu setiap pengguna untuk 903 00:41:48,660 --> 00:41:49,640 mempunyai nombor yang unik. 904 00:41:49,640 --> 00:41:50,830 Saya tidak mahu ia menjadi null. 905 00:41:50,830 --> 00:41:52,330 >> Tetapi ini adalah menarik. 906 00:41:52,330 --> 00:41:57,780 Saya boleh menentukan bahawa ID adalah sama ada utama utama pangkalan data ini, atau ia 907 00:41:57,780 --> 00:42:00,620 unik, atau ia diindeks, atau teks penuh. 908 00:42:00,620 --> 00:42:05,630 Jadi untuk tujuan hari ini, cerita lama pendek, RENDAH bermakna hendaklah ini 909 00:42:05,630 --> 00:42:10,570 kedua-dua konsep dan teknikal bidang yang kita gunakan untuk unik 910 00:42:10,570 --> 00:42:12,140 mengenal pasti pengguna. 911 00:42:12,140 --> 00:42:16,140 >> Oleh itu, apabila kita melihat pengguna, ini adalah jenis sebuah janji untuk melihat mereka kebanyakannya oleh 912 00:42:16,140 --> 00:42:17,370 yang pasti unik. 913 00:42:17,370 --> 00:42:21,930 Dan pangkalan data akan memastikan bahawa jika anda mempunyai beberapa pengguna 3, anda tidak boleh 914 00:42:21,930 --> 00:42:25,400 fizikal memasukkan pengguna lain dengan nombor yang sama 3. 915 00:42:25,400 --> 00:42:28,380 Pangkalan data ini hanya akan menolak untuk menyimpan perubahan anda. 916 00:42:28,380 --> 00:42:32,310 Yang merupakan satu perkara yang baik, kerana anda boleh melindungi diri anda daripada diri sendiri. diri 917 00:42:32,310 --> 00:42:34,270 >> Secara alternatif, untuk nama pengguna. 918 00:42:34,270 --> 00:42:37,670 Jadi baris kedua, ingat, adalah medan nama pengguna. 919 00:42:37,670 --> 00:42:41,860 Jadi barisan kedua di sini adalah nama pengguna, seperti yang kita lakukan pada hujung sebelah kiri sana. 920 00:42:41,860 --> 00:42:43,940 >> Jadi apa lagi yang mungkin saya ingin nyatakan? 921 00:42:43,940 --> 00:42:47,840 Saya tidak dibenarkan, menurut SQL, untuk menentukan dua kunci utama. 922 00:42:47,840 --> 00:42:50,750 anda boleh menentukan kunci sama di mana anda melihat kedua-dua bidang, tetapi mereka tidak boleh 923 00:42:50,750 --> 00:42:52,260 individu menjadi kunci utama. 924 00:42:52,260 --> 00:42:54,750 Jadi, itu keluar daripada soalan. 925 00:42:54,750 --> 00:42:56,040 Jadi yang mungkin saya mahu pilih? 926 00:42:56,040 --> 00:42:59,710 >> Nah, UNIK adalah sama dalam semangat kepada utama utama di mana anda menentukan ini 927 00:42:59,710 --> 00:43:03,570 bidang itu menjadi unik, tetapi ia tidak akan menjadi orang yang 928 00:43:03,570 --> 00:43:04,410 Saya menggunakan setiap masa. 929 00:43:04,410 --> 00:43:08,450 Dan kita tidak akan menggunakan satu ini semua masa untuk apa alasan lagi? 930 00:43:08,450 --> 00:43:10,490 Ia perlahan berpotensi jika ia nama pengguna yang lama. 931 00:43:10,490 --> 00:43:11,740 Ia hanya membuang masa. 932 00:43:11,740 --> 00:43:16,140 >> INDEKS, sementara itu, menyatakan bahawa ia tidak akan menjadi unik, tetapi saya ingin 933 00:43:16,140 --> 00:43:19,470 anda untuk bekerja sihir anda di bawah hud untuk menjadikannya lebih cepat untuk saya 934 00:43:19,470 --> 00:43:21,420 mencari di bidang ini. 935 00:43:21,420 --> 00:43:23,320 Jadi ini mungkin tidak relevan di sini. 936 00:43:23,320 --> 00:43:26,500 Untuk nama pengguna, saya berpendapat bahawa UNIK adalah jawapan yang baik. 937 00:43:26,500 --> 00:43:31,200 Tetapi menganggap bahawa kami membuat pengguna lebih menarik daripada sekadar nama pengguna, 938 00:43:31,200 --> 00:43:32,430 Hash, dan nombor ID. 939 00:43:32,430 --> 00:43:33,860 Bagaimana jika kita memberikan orang nama-nama penuh? 940 00:43:33,860 --> 00:43:37,700 Bagaimana jika kita memberikan mereka alamat dan data lain tentang mereka? 941 00:43:37,700 --> 00:43:43,360 >> Nah, jika anda menentukan bahawa lajur dalam pangkalan data diindeks, ini bermakna bahawa 942 00:43:43,360 --> 00:43:47,730 MySQL, atau Oracle, atau apa sahaja pangkalan data anda menggunakan, perlu bekerja sihir 943 00:43:47,730 --> 00:43:51,300 dan menggunakan beberapa jenis data mewah struktur seperti pokok, atau indone, atau 944 00:43:51,300 --> 00:43:55,940 jadual hash, atau sesuatu untuk menjamin bahawa apabila anda mencari data menggunakan 945 00:43:55,940 --> 00:43:58,150 pilih pada bidang tertentu - 946 00:43:58,150 --> 00:44:01,310 seperti menunjukkan saya semua orang yang tinggal di Oxford Street. 947 00:44:01,310 --> 00:44:02,540 Satu pertanyaan seperti itu. 948 00:44:02,540 --> 00:44:06,250 Jika anda telah dinyatakan terlebih dahulu bahawa anda mahu indeks di padang itu, 949 00:44:06,250 --> 00:44:09,050 carian akan banyak, lebih cepat. 950 00:44:09,050 --> 00:44:12,090 >> Jika anda tidak menentukan indeks, yang terbaik yang boleh anda lakukan adalah carian linear jika 951 00:44:12,090 --> 00:44:13,030 ia tidak disusun. 952 00:44:13,030 --> 00:44:16,220 Tetapi jika anda menetapkan INDEKS, pintar orang yang membuat pangkalan data - 953 00:44:16,220 --> 00:44:19,340 orang-orang seperti anda yang kini tahu pokok-pokok dan cuba dan jadual hash - 954 00:44:19,340 --> 00:44:23,220 secara automatik akan membina seperti data yang struktur dalam RAM untuk memastikan bahawa 955 00:44:23,220 --> 00:44:26,050 mereka carian adalah lebih cepat. 956 00:44:26,050 --> 00:44:29,660 >> Sementara teks penuh adalah sama dalam semangat, tetapi membolehkan anda untuk melakukan wildcard 957 00:44:29,660 --> 00:44:35,480 carian, seperti menunjukkan saya semua orang yang tinggal di jalan-jalan yang bermula dengan 958 00:44:35,480 --> 00:44:36,960 surat O untuk apa-apa sebab. 959 00:44:36,960 --> 00:44:38,850 Anda boleh melakukan carian wildcard seperti itu. 960 00:44:38,850 --> 00:44:45,880 Atau, perkara yang lebih menarik seperti persembahan saya semua orang yang mempunyai perkataan - 961 00:44:45,880 --> 00:44:49,400 tunjukkan kepada saya semua orang yang namanya bermula dengan suatu surat tertentu. 962 00:44:49,400 --> 00:44:51,880 Anda boleh mencari kata kunci dengan cara ini. 963 00:44:51,880 --> 00:44:52,630 Baiklah. 964 00:44:52,630 --> 00:44:55,760 >> Jadi, peluang reka bentuk ada yang berpotensi. 965 00:44:55,760 --> 00:44:57,740 Ada orang lain yang saya akan melambai-lambaikan tangan saya di. 966 00:44:57,740 --> 00:45:00,530 Ia ternyata bahawa anda boleh mempunyai enjin simpanan yang berbeza. 967 00:45:00,530 --> 00:45:04,390 Dan ini adalah lebih batin daripada kita perlu pasti untuk masalah ditetapkan tujuh. 968 00:45:04,390 --> 00:45:06,920 Secara lalai, anda semua menggunakan sesuatu yang dinamakan SQL. 969 00:45:06,920 --> 00:45:10,910 Anda akan melihat menyebut tempat ini dalam antara muka phpMyAdmin yang paling mungkin. 970 00:45:10,910 --> 00:45:14,130 Tetapi tahu bahawa terdapat reka bentuk yang lain keputusan yang mempunyai potensi 971 00:45:14,130 --> 00:45:18,030 kepentingan datang projek akhir jika anda melakukan sesuatu yang berasaskan web. 972 00:45:18,030 --> 00:45:19,330 >> Tetapi mari kita melakukan ini. 973 00:45:19,330 --> 00:45:23,130 Mari kita pergi ke hadapan dan meletakkan ini di skrin sebagai penggoda untuk cerita 974 00:45:23,130 --> 00:45:26,330 yang melibatkan anda, rakan sebilik yang, dan segelas susu. 975 00:45:26,330 --> 00:45:28,240 Mari kita minit dua atau lebih memecahkan sini. 976 00:45:28,240 --> 00:45:31,060 Dan jika anda boleh melekat di sekeliling, mari kita datang belakang, kelihatan sedikit lebih pada SQL, dan 977 00:45:31,060 --> 00:45:35,160 maka sedikit JavaScript dengan p-set lapan dalam fikiran. 978 00:45:35,160 --> 00:45:36,120 >> Baiklah. 979 00:45:36,120 --> 00:45:40,420 Jadi, mari kita membawa anda berfikir tentang kes sudut yang dengan mudah boleh timbul 980 00:45:40,420 --> 00:45:44,240 dalam konteks menggunakan pangkalan data, atau terus-terang, walaupun menggunakan perkara-perkara dunia sebenar 981 00:45:44,240 --> 00:45:46,280 seperti ATM untuk mendapatkan wang. 982 00:45:46,280 --> 00:45:47,640 Jadi inilah peti sejuk. 983 00:45:47,640 --> 00:45:50,040 Katakan anda mempunyai satu terlalu dalam asrama atau rumah anda. 984 00:45:50,040 --> 00:45:54,990 Dan anda telah mendapat salah satu rakan sebilik, dan kedua-dua anda benar-benar suka susu misalnya. 985 00:45:54,990 --> 00:45:57,210 >> Jadi anda pulang dari kelas satu hari. 986 00:45:57,210 --> 00:45:58,490 Dia bukan lagi kembali. 987 00:45:58,490 --> 00:45:59,180 Anda membuka peti sejuk. 988 00:45:59,180 --> 00:46:00,870 Anda benar-benar mahu segelas besar susu. 989 00:46:00,870 --> 00:46:01,820 Tidak ada susu. 990 00:46:01,820 --> 00:46:02,920 Jadi apa yang anda lakukan? 991 00:46:02,920 --> 00:46:03,840 Anda menutup peti sejuk. 992 00:46:03,840 --> 00:46:04,670 Anda merebut kunci anda. 993 00:46:04,670 --> 00:46:05,930 Anda keluar ke dataran. 994 00:46:05,930 --> 00:46:09,240 Dan anda mendapat selaras di CVS di mereka perkara checkout diri, yang sentiasa 995 00:46:09,240 --> 00:46:11,180 mengambil masa lebih lama daripada benar-benar mempunyai juruwang. 996 00:46:11,180 --> 00:46:11,820 Bagaimanapun. 997 00:46:11,820 --> 00:46:15,490 >> Jadi kemudian, sementara itu, dot dot dot, anda rakan sebilik datang rumah dan dia 998 00:46:15,490 --> 00:46:17,440 juga mempunyai keinginan yang untuk susu. 999 00:46:17,440 --> 00:46:20,380 Jadi dia membuka peti sejuk, kelihatan di dalam, dan oh, celaka. 1000 00:46:20,380 --> 00:46:21,160 Tiada susu. 1001 00:46:21,160 --> 00:46:24,750 Jadi dia mengetuai keluar, berlaku untuk pergi kepada CVS lain, yang hanya satu 1002 00:46:24,750 --> 00:46:27,900 menghalang diri untuk sebab-sebab tertentu, dan dia atau dia mendapat selaras untuk membeli susu. 1003 00:46:27,900 --> 00:46:30,480 >> Sementara itu, anda pulang ke rumah, dia atau dia datang rumah, dan apa yang 1004 00:46:30,480 --> 00:46:31,980 anda akhirnya mempunyai? 1005 00:46:31,980 --> 00:46:33,080 Dua kali ganda susu. 1006 00:46:33,080 --> 00:46:34,620 Tetapi anda tidak benar-benar suka susu yang banyak. 1007 00:46:34,620 --> 00:46:37,300 Jadi sekarang anda mempunyai susu sehingga kini salah seorang dari mereka hanya akan pergi masam 1008 00:46:37,300 --> 00:46:37,820 akhirnya. 1009 00:46:37,820 --> 00:46:39,370 Jadi ini adalah satu masalah yang benar-benar buruk. 1010 00:46:39,370 --> 00:46:39,900 Betul? 1011 00:46:39,900 --> 00:46:41,990 >> Jadi apa yang telah berlaku? 1012 00:46:41,990 --> 00:46:44,810 Jadi asasnya, ini adalah jenis daripada contoh yang tidak masuk akal. 1013 00:46:44,810 --> 00:46:48,580 Tetapi di bawah hood, apa yang kita telah mempunyai berlaku di sini adalah kedua-dua anda diperiksa 1014 00:46:48,580 --> 00:46:52,390 keadaan beberapa keping memori, peti sejuk. 1015 00:46:52,390 --> 00:46:54,420 Kedua-dua anda diperiksa negeri beberapa pembolehubah. 1016 00:46:54,420 --> 00:46:57,360 Anda kedua-dua menarik kesimpulan yang kemudian bertindak pada. 1017 00:46:57,360 --> 00:47:01,420 Tetapi malangnya, manakala rakan sebilik anda adalah di kedai, keadaan yang 1018 00:47:01,420 --> 00:47:05,670 pembolehubah berubah, dia datang kembali dan kini mahu mengubah keadaan, tetapi 1019 00:47:05,670 --> 00:47:07,480 ia pun berubah kepadanya atau dia. 1020 00:47:07,480 --> 00:47:11,120 Dan sudah tentu, dia tidak akan mempunyai pergi ke kedai jika mereka tahu 1021 00:47:11,120 --> 00:47:13,010 bahawa anda sudah dalam perjalanan. 1022 00:47:13,010 --> 00:47:16,430 >> Jadi dalam dunia sebenar, bagaimana boleh anda mengelakkan masalah ini, dengan mengandaikan anda mempunyai 1023 00:47:16,430 --> 00:47:18,940 peti sejuk, anda mempunyai rakan sebilik yang, dan anda sebenarnya suka susu? 1024 00:47:18,940 --> 00:47:19,760 >> PENONTON: Berkomunikasi. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID MALAN: Berkomunikasi. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 Tetapi bagaimana anda boleh berkomunikasi? 1028 00:47:22,500 --> 00:47:23,990 >> PENONTON: Tinggalkan nota. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID MALAN: Tinggalkan nota, betul? 1030 00:47:25,480 --> 00:47:28,025 Sentiasa tinggalkan nota, untuk peminat persembahan. 1031 00:47:28,025 --> 00:47:31,580 Baiklah, jadi sentiasa meninggalkan nota, atau meletakkan benar-benar seperti mangga atau sesuatu 1032 00:47:31,580 --> 00:47:35,440 di peti sejuk yang menyimpan anda rakan sebilik dari memeriksa keadaan 1033 00:47:35,440 --> 00:47:36,540 berubah-ubah itu. 1034 00:47:36,540 --> 00:47:40,800 >> Sekarang, mengapa ini berlaku yg ke masalah ditetapkan tujuh, atau ATM. 1035 00:47:40,800 --> 00:47:46,780 Nah, membayangkan sebuah dunia di mana ATM anda mungkin dapat naik ke ATM 1036 00:47:46,780 --> 00:47:48,920 mesin di sini, dan ATM lain di sini. 1037 00:47:48,920 --> 00:47:50,680 Dan ini berlaku agak kerap. 1038 00:47:50,680 --> 00:47:54,150 Dan andaikan anda mempunyai dua kad ATM, yang adalah mungkin untuk mendapatkan. 1039 00:47:54,150 --> 00:47:57,420 Dan anda log masuk ke kedua-dua mesin berkesan pada masa yang sama, mudah-mudahan 1040 00:47:57,420 --> 00:47:58,660 manakala tiada seorang pun sedang mencari. 1041 00:47:58,660 --> 00:48:01,260 Dan kemudian anda taip di dalam PIN anda secara kasar pada masa yang sama. 1042 00:48:01,260 --> 00:48:06,280 Dan kemudian anda melakukan pertanyaan baki untuk melihat berapa banyak wang tunai yang anda ada. 1043 00:48:06,280 --> 00:48:08,920 Dan katakan anda mendapat $ 100 tinggal dalam akaun anda. 1044 00:48:08,920 --> 00:48:13,310 Jadi pada dasarnya pada masa yang sama, anda mengatakan satu, sifar, sifar, masukkan. 1045 00:48:13,310 --> 00:48:16,000 Dan anda diharapkan kembali wang. 1046 00:48:16,000 --> 00:48:18,440 >> Tetapi berapa banyak wang yang mungkin anda kembali? 1047 00:48:18,440 --> 00:48:21,710 Sekarang komputer pada akhir hari, terutamanya jika mereka bercakap dengan 1048 00:48:21,710 --> 00:48:27,360 pelayan, tidak semestinya melakukan perkara-perkara dalam perintah itu yang yang dijangkakan. 1049 00:48:27,360 --> 00:48:30,860 >> Jadi rasa apa yang berlaku, kerana apa sahaja rangkaian isu-isu kelajuan terdapat 1050 00:48:30,860 --> 00:48:34,530 adalah, atau isu-isu CPU ada, atau apa-apa seperti itu, menganggap bahawa 1051 00:48:34,530 --> 00:48:38,530 ATM pertama memeriksa kira-kira dan melihat, oh, orang ini mempunyai $ 100. 1052 00:48:38,530 --> 00:48:41,840 Tetapi kemudian mendapat terganggu kerana mungkin sandaran yang berlaku dan supaya ia 1053 00:48:41,840 --> 00:48:42,500 perlahan. 1054 00:48:42,500 --> 00:48:45,080 Atau mungkin semasa menyemak, rangkaian sambungan mendapat sedikit perlahan kerana 1055 00:48:45,080 --> 00:48:45,910 ini hanya berlaku. 1056 00:48:45,910 --> 00:48:47,100 Mereka peranti fizikal. 1057 00:48:47,100 --> 00:48:49,330 Jadi sementara itu, ATM yang kedua ialah bertanyakan soalan yang sama. 1058 00:48:49,330 --> 00:48:53,030 Berapakah wang David ada? $ 100 adalah jawapannya. 1059 00:48:53,030 --> 00:48:58,930 Tetapi kerana ATM yang pertama belum lagi menghantar mesej tolak $ 100, kedua-dua 1060 00:48:58,930 --> 00:49:03,000 ATM telah diperiksa bilik kebal bank, melihat ada $ 100 di sana, dan kini 1061 00:49:03,000 --> 00:49:07,160 kedua-dua mesin berpotensi adalah akan meludah keluar jawapan. 1062 00:49:07,160 --> 00:49:12,240 >> Sekarang, ini adalah hebat untuk anda dalam erti kata lain jika apa yang bank tidak akhirnya 1063 00:49:12,240 --> 00:49:17,200 adalah menukar jumlah yang tolak 100 dengan menetapkan sama berubah untuk anda 1064 00:49:17,200 --> 00:49:21,570 akaun bank sama dengan 0, bertentangan untuk melakukan tolak 100. 1065 00:49:21,570 --> 00:49:24,410 Dalam keadaan yang paling teruk bagi bank - 1066 00:49:24,410 --> 00:49:27,470 atau yang terbaik untuk bank, sementara itu, mereka memberi anda $ 200, dan 1067 00:49:27,470 --> 00:49:31,690 akaun bank anda sekarang menunjukkan negatif $ 100, yang benar-benar tidak 1068 00:49:31,690 --> 00:49:32,950 memberi manfaat kepada anda semua. 1069 00:49:32,950 --> 00:49:36,500 Tetapi persoalannya adalah bahawa bangsa ini syarat untuk dua sebilik mendapat 1070 00:49:36,500 --> 00:49:40,660 susu, atau untuk dua ATM cuba untuk mendapatkan wang tunai dan mengubah keadaan peti besi 1071 00:49:40,660 --> 00:49:44,510 pada masa yang sama wujud apa-apa kali anda mempunyai pangkalan data yang. 1072 00:49:44,510 --> 00:49:48,290 >> Sekarang dalam masalah ditetapkan tujuh, isu ini timbul dalam erti kata bahawa jika anda membeli 1073 00:49:48,290 --> 00:49:52,110 saham saham Facebook, dan kemudian untuk contoh anda membeli saham kedua 1074 00:49:52,110 --> 00:49:55,160 Saham Facebook, anda perlu membuat keputusan sebagai pengaturcara. 1075 00:49:55,160 --> 00:49:58,710 Untuk memutuskan bagaimana untuk mengemas kini pangkalan data, kemungkinan yang anda akan 1076 00:49:58,710 --> 00:50:02,250 mempunyai satu baris untuk saham itu, dan ini adalah satu cara untuk melaksanakannya. 1077 00:50:02,250 --> 00:50:06,640 Dan anda akan mempunyai satu saham FB, yang merupakan simbol penanda saham mereka 1078 00:50:06,640 --> 00:50:10,120 untuk nama pengguna ini, atau pengguna ini ID, pengecam unik. 1079 00:50:10,120 --> 00:50:12,340 >> Tetapi cerita yang sama boleh berlaku di sini. 1080 00:50:12,340 --> 00:50:15,800 Jika anda buat INSERT SQL, kerana anda akan melihat dalam masalah set tujuh apabila anda melihat, 1081 00:50:15,800 --> 00:50:18,460 oh, David mempunyai satu saham stok Facebook. 1082 00:50:18,460 --> 00:50:23,240 Izinkan saya menukar ini menjadi dua saham, kerana dia mahu membeli 1083 00:50:23,240 --> 00:50:24,120 bahagian kedua. 1084 00:50:24,120 --> 00:50:27,860 Tetapi andaikan Daud sebenarnya mempunyai dua tetingkap pelayar terbuka, atau menganggap bahawa 1085 00:50:27,860 --> 00:50:32,150 ia adalah satu akaun bersama dengan dua pasangan, dan kedua-dua mereka cuba untuk melaksanakan 1086 00:50:32,150 --> 00:50:36,770 operasi yang sama, di sana, juga, berpotensi wujud untuk keputusan untuk menjadi 1087 00:50:36,770 --> 00:50:39,670 dibuat berdasarkan sebelumnya keadaan dunia - 1088 00:50:39,670 --> 00:50:41,290 akaun mempunyai satu saham - 1089 00:50:41,290 --> 00:50:45,630 dan kedua-dua orang, atau kedua-duanya pelayan, kini cuba untuk mengatakan kenaikan kepada dua saham. 1090 00:50:45,630 --> 00:50:49,020 Tetapi dalam kes ini, anda mungkin telah dikenakan saya wang untuk kedua-dua saham, tetapi 1091 00:50:49,020 --> 00:50:50,830 incremented waktu itu satu. 1092 00:50:50,830 --> 00:50:54,730 >> Jadi ringkasnya, masalah asas di sini, kerana dengan jenaka kira-kira meninggalkan 1093 00:50:54,730 --> 00:50:58,750 ambil perhatian, atau meletakkan mangga di atasnya, adalah jika dua orang, atau dua benang - 1094 00:50:58,750 --> 00:50:59,930 berfikir kembali ke awal - 1095 00:50:59,930 --> 00:51:03,220 boleh memeriksa keadaan beberapa pembolehubah dan kemudian cuba untuk mengubah pembolehubah yang, 1096 00:51:03,220 --> 00:51:07,950 tetapi kedua-dua perkara yang tidak berlaku pada masa yang sama tetapi boleh diganggu 1097 00:51:07,950 --> 00:51:11,500 oleh perkara-perkara lain yang berlaku, data boleh masuk ke dalam keadaan yang sangat pelik. 1098 00:51:11,500 --> 00:51:15,450 Dan anda boleh mendapat manfaat atau anda boleh mengalami dalam erti kata contoh wang. 1099 00:51:15,450 --> 00:51:18,110 >> Jadi dalam masalah ditetapkan tujuh, kami memberi anda baris ini salah satu kod, yang panjang 1100 00:51:18,110 --> 00:51:21,000 cerpen, menyelesaikan ini masalah dalam MySQL. 1101 00:51:21,000 --> 00:51:24,950 Ini arahan yang panjang yang tidak walaupun dimuatkan ke satu baris di 1102 00:51:24,950 --> 00:51:30,370 skrin di sini memastikan bahawa operasi anda adalah apa yang dipanggil atom. 1103 00:51:30,370 --> 00:51:33,720 Semuanya berlaku pada satu masa, atau ia tidak berlaku sama sekali. 1104 00:51:33,720 --> 00:51:37,530 Ini frasa yang lama tidak boleh diganggu sebahagiannya. 1105 00:51:37,530 --> 00:51:39,840 >> Dan apa yang ia adalah betul-betul apa yang dikatakannya. 1106 00:51:39,840 --> 00:51:44,200 Masukkan ke dalam jadual yang berikut beberapa tiga bidang nilai-nilai tertentu, 1107 00:51:44,200 --> 00:51:47,280 tetapi pada kunci pendua, tidak melakukan bersisipan. 1108 00:51:47,280 --> 00:51:48,280 Adakah kemas kini. 1109 00:51:48,280 --> 00:51:52,450 Jadi ini adalah seperti melakukan INSERT dan INSERT jadi untuk bercakap pada masa yang sama. 1110 00:51:52,450 --> 00:51:55,150 Dan apa yang utama yang mungkin yang disebutkan di sini? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Ternyata, dan anda akan melihat ini dalam masalah set spec tujuh ini, kerana 1113 00:52:01,380 --> 00:52:06,040 kami telah diisytiharkan di sana untuk menjadi kunci yang unik di atas meja ini tertentu seperti yang 1114 00:52:06,040 --> 00:52:08,480 anda tidak boleh mempunyai pelbagai baris untuk pengguna yang sama dengan 1115 00:52:08,480 --> 00:52:10,150 sen sama simbol saham - 1116 00:52:10,150 --> 00:52:13,780 dalam contoh ini di sini, DVN.V adalah saham sen bodoh yang kita 1117 00:52:13,780 --> 00:52:14,980 rujuk dalam spec. 1118 00:52:14,980 --> 00:52:17,860 Kerana kita telah mengisytiharkan ia menjadi unik, apa ini bermakna bahawa jika anda 1119 00:52:17,860 --> 00:52:23,580 cuba untuk memasukkan sebaris dua salinan, anda sebaliknya akan mengemaskinikannya tanpa 1120 00:52:23,580 --> 00:52:27,020 sesiapa sahaja yang mempunyai peluang untuk menukar keadaan dunia sama ada. 1121 00:52:27,020 --> 00:52:29,400 Jadi ringkasnya, ini memastikan perkara-perkara yang atom. 1122 00:52:29,400 --> 00:52:32,530 >> Lebih umum walaupun, pangkalan data seperti MySQL - 1123 00:52:32,530 --> 00:52:35,460 dan anda tidak memerlukan ciri ini untuk p yang ditetapkan tujuh, tetapi menyimpannya dalam fikiran untuk 1124 00:52:35,460 --> 00:52:36,200 masa depan - 1125 00:52:36,200 --> 00:52:38,870 menyokong apa yang dipanggil transaksi, di mana anda boleh mengatakan 1126 00:52:38,870 --> 00:52:40,990 MULA TRANSAKSI harfiah. 1127 00:52:40,990 --> 00:52:43,270 Anda kemudiannya boleh melaksanakan dua kenyataan SQL. 1128 00:52:43,270 --> 00:52:45,710 Dan suatu pernyataan SQL, kerana anda akan melihat dalam p yang ditetapkan tujuh, kelihatan sedikit 1129 00:52:45,710 --> 00:52:46,750 sesuatu seperti ini. 1130 00:52:46,750 --> 00:52:48,820 Kemaskini yang dipanggil akaun meja. 1131 00:52:48,820 --> 00:52:52,550 Tetapkan Lajur imbangan yang bersamaan dengan apa sahaja Lajur imbangan yang sedang 1132 00:52:52,550 --> 00:52:57,280 tolak 1,000 di mana nombor, nombor akaun, seperti ID pengguna, 1133 00:52:57,280 --> 00:53:00,830 bersamaan 2, dan kemudian mengemas akaun dot dot dot. 1134 00:53:00,830 --> 00:53:04,350 >> Jadi dari segi orang biasa itu, apa yang kedua-dua pertanyaan seolah-olah melakukan di 1135 00:53:04,350 --> 00:53:05,840 rasa dunia sebenar perbankan? 1136 00:53:05,840 --> 00:53:07,440 >> PENONTON: Memindahkan untuk simpanan. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID MALAN: Tepat sekali. 1138 00:53:08,020 --> 00:53:10,470 Memindahkan dana dari satu akaun kepada yang lain. 1139 00:53:10,470 --> 00:53:14,400 Dan ini adalah satu lagi contoh di mana anda benar-benar mahu kedua-dua perkara yang berlaku 1140 00:53:14,400 --> 00:53:15,570 atau tidak berlaku. 1141 00:53:15,570 --> 00:53:18,880 Anda tidak mahu sesuatu untuk mendapatkan dalam tengah-tengah mereka dan berpotensi merosakkan 1142 00:53:18,880 --> 00:53:22,220 matematik, atau merosakkan berapa banyak wang yang anda ada, atau berapa banyak 1143 00:53:22,220 --> 00:53:23,170 wang bank itu mempunyai. 1144 00:53:23,170 --> 00:53:26,890 Jadi apa yang benar-benar baik mengenai urus niaga dalam MySQL adalah itu, dan 1145 00:53:26,890 --> 00:53:30,160 pangkalan data secara umum, adalah bahawa mereka dan orang-orang yang bijak yang telah dilaksanakan 1146 00:53:30,160 --> 00:53:33,670 ciri-ciri ini memikirkan bagaimana untuk membuat memastikan bahawa kedua-dua mereka perkara yang berlaku 1147 00:53:33,670 --> 00:53:35,120 atau tidak sama sekali. 1148 00:53:35,120 --> 00:53:38,580 >> Dan jika anda benar-benar bercita-cita untuk membuat sebuah laman web yang digunakan oleh orang-orang di 1149 00:53:38,580 --> 00:53:41,490 kampus, orang dalam dunia sebenar, melakukan sesuatu dalam erti permulaan, 1150 00:53:41,490 --> 00:53:43,300 ini adalah jenis keputusan reka bentuk yang 1151 00:53:43,300 --> 00:53:45,020 menjadi semakin penting. 1152 00:53:45,020 --> 00:53:48,240 Jika tidak, anda mula kehilangan data, kehilangan pengguna, atau dalam hal yang paling teruk sebagai 1153 00:53:48,240 --> 00:53:51,800 yang kita lihat di sini, yang berpotensi kehilangan wang. 1154 00:53:51,800 --> 00:53:56,180 Jadi sekali lagi, lebih kepada yang dalam masalah set tujuh, dan juga mungkin untuk beberapa 1155 00:53:56,180 --> 00:53:57,530 anda dalam projek-projek akhir. 1156 00:53:57,530 --> 00:54:01,870 >> Jadi mari kita menukar bahawa gambar kami detik yang lalu hanya dalam satu lagi cara. 1157 00:54:01,870 --> 00:54:04,070 Jadi biarlah saya benar-benar melihat jika saya boleh - 1158 00:54:04,070 --> 00:54:06,030 nope, itu hilang. 1159 00:54:06,030 --> 00:54:06,690 Terdapat ia. 1160 00:54:06,690 --> 00:54:09,020 >> Jadi ini adalah di mana kita meninggalkan masa lalu. 1161 00:54:09,020 --> 00:54:12,390 Dan ternyata kita akan melambungkan satu lagi perkara ke dalam campuran di sini - 1162 00:54:12,390 --> 00:54:14,510 bahasa yang dipanggil JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Jadi JavaScript sebenarnya sesuai ke dalam sekeping ini - 1164 00:54:18,060 --> 00:54:22,086 dan saya tidak cukup meninggalkan ruang yang cukup, jadi ini bukan sekarang untuk skala. 1165 00:54:22,086 --> 00:54:23,900 OK, ini adalah benar-benar menyedihkan. 1166 00:54:23,900 --> 00:54:27,075 OK, jadi itu JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Baiklah. 1168 00:54:27,340 --> 00:54:28,760 Saya benar-benar melakukannya merugikan. 1169 00:54:28,760 --> 00:54:29,390 Baiklah. 1170 00:54:29,390 --> 00:54:34,790 >> Jadi JavaScript pengaturcaraan lain bahasa, dan terakhir kami, Jika yang membantu 1171 00:54:34,790 --> 00:54:37,770 memberi jaminan bahawa tidak ada yang lebih lagi daripada hydrants api di sini. 1172 00:54:37,770 --> 00:54:41,100 Jadi JavaScript juga merupakan ditafsirkan bahasa, yang bermakna anda tidak 1173 00:54:41,100 --> 00:54:42,670 menyusun ke sifar dan satu. 1174 00:54:42,670 --> 00:54:43,690 Anda hanya menjalankannya. 1175 00:54:43,690 --> 00:54:47,680 Tetapi apa yang asasnya berbeza dengan JavaScript biasanya adalah bahawa anda 1176 00:54:47,680 --> 00:54:49,815 tidak berjalan pada pelayan web anda. 1177 00:54:49,815 --> 00:54:52,570 Ia tidak dilanggar di perkakas per se. 1178 00:54:52,570 --> 00:54:57,490 Sebaliknya, ia mendapat turun oleh pengguna melalui HTTP ke dalam pelayar mereka - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, apa sahaja - 1180 00:55:00,260 --> 00:55:03,860 dan ia pelayar yang melaksanakan ini bahasa pengaturcaraan. 1181 00:55:03,860 --> 00:55:08,000 >> Jadi untuk mengetahui dengan jelas PHP setakat ini telah dilaksanakan sama ada pada baris arahan dalam 1182 00:55:08,000 --> 00:55:11,290 tetingkap hitam dan putih kita, pada pelayan seperti perkakas, komputer 1183 00:55:11,290 --> 00:55:14,490 suka perkakas, atau ia telah dilaksanakan oleh pelayan web 1184 00:55:14,490 --> 00:55:15,860 berjalan pada komputer. 1185 00:55:15,860 --> 00:55:20,490 Tetapi tema di sini adalah bahawa PHP setakat ini telah dilaksanakan pelayan, jadi 1186 00:55:20,490 --> 00:55:24,820 pengguna dan pelayar pengguna tidak pernah melihat baris kod PHP. 1187 00:55:24,820 --> 00:55:28,530 >> Malah, jika anda pernah membuka penyemak imbas untuk laman web atau lain anda dan anda 1188 00:55:28,530 --> 00:55:32,400 sebenarnya melihat kod PHP dalam tingkap anda, seseorang telah kacau sehingga. 1189 00:55:32,400 --> 00:55:34,950 Kerana ia tidak bertujuan untuk menjadi dihantar ke pelayar langsung. 1190 00:55:34,950 --> 00:55:38,150 Ia sepatutnya dilaksanakan dan bertukar ke dalam sesuatu seperti HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Tetapi JavaScript asasnya sebaliknya. 1192 00:55:40,120 --> 00:55:44,350 Ia bertujuan untuk dijalankan biasanya di dalam tetingkap pelayar pengguna. 1193 00:55:44,350 --> 00:55:46,840 Dan apa jenis laman web menggunakan JavaScript maka pada hari ini? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Seperti harfiah setiap laman web yang popular. 1196 00:55:52,180 --> 00:55:55,430 Setiap laman web yang anda semua mungkin gunakan setiap hari menggunakan JavaScript untuk 1197 00:55:55,430 --> 00:55:57,330 yang paling mudah dan juga ciri paling seksi. 1198 00:55:57,330 --> 00:55:59,800 >> Jadi sesuatu seperti Facebook Chat jika anda menggunakan itu. 1199 00:55:59,800 --> 00:56:01,040 Bagaimana keadaan itu benar-benar bekerja? 1200 00:56:01,040 --> 00:56:05,090 Well setakat ini, semua barangan yang kita telah dilakukan dengan HTML dan PHP menganggap bahawa 1201 00:56:05,090 --> 00:56:08,750 anda tarik ke atas URL, dan anda tekan Enter, dan anda melihat beberapa kandungan HTML. 1202 00:56:08,750 --> 00:56:11,970 Dan anda klik link tersebut, yang mengubah URL, perubahan halaman, dan tambah nilai 1203 00:56:11,970 --> 00:56:12,740 beberapa kandungan baru. 1204 00:56:12,740 --> 00:56:16,340 Klik URL lain atau menyerahkan borang, anda mendapatkan dilibas ke laman lain dan 1205 00:56:16,340 --> 00:56:17,420 anda melihat beberapa kandungan baru. 1206 00:56:17,420 --> 00:56:22,710 >> Tetapi menggunakan sesuatu seperti Facebook Chat, atau GChat, atau Peta Google, jarang 1207 00:56:22,710 --> 00:56:27,350 adakah keseluruhan halaman menyegarkan seperti yang anda melihat skrin putih seketika dan 1208 00:56:27,350 --> 00:56:28,470 maka kandungan baru. 1209 00:56:28,470 --> 00:56:32,610 Sebaliknya, laman web hari ini adalah dinamik mendapat dikemaskini lagi dan 1210 00:56:32,610 --> 00:56:35,570 lagi dan lagi semua jenis di belakang tabir. 1211 00:56:35,570 --> 00:56:38,560 Dan ternyata bahawa apabila anda pergi ke sesuatu seperti Facebook, atau GChat, 1212 00:56:38,560 --> 00:56:43,050 atau Gmail, dan kemas kini halaman secara automatik tanpa tambah nilai yang 1213 00:56:43,050 --> 00:56:47,630 seluruh skrin, apa yang berlaku adalah bahawa pelayar anda telah membuat semacam rahsia 1214 00:56:47,630 --> 00:56:49,410 tambahan HTTP permintaan - 1215 00:56:49,410 --> 00:56:52,740 bukan untuk laman web keseluruhan, tetapi hanya untuk ketulan kecil data, seperti 1216 00:56:52,740 --> 00:56:55,740 mesej segera yang rakan anda hanya menghantar, atau update status yang 1217 00:56:55,740 --> 00:56:58,210 seseorang hanya menghantar kepada anda, atau tweet seseorang yang hanya menghantar. 1218 00:56:58,210 --> 00:57:02,120 Ia hanya membuat permintaan kecil untuk data, dan kemudian menggunakan JavaScript, ini 1219 00:57:02,120 --> 00:57:06,370 bahasa pengaturcaraan, untuk mengubah apa laman web yang kelihatan seperti tanpa 1220 00:57:06,370 --> 00:57:09,860 server membantu, tanpa pelayan menjana bahawa HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Jadi dalam jangka pendek, JavaScript boleh digunakan kemudian bukan sahaja untuk mengambil data baru daripada 1222 00:57:13,820 --> 00:57:16,750 server tanpa tambah nilai keseluruhan halaman atau mengemukakan borang. 1223 00:57:16,750 --> 00:57:20,060 Ia juga boleh digunakan untuk menukar yang dipanggil DOM - 1224 00:57:20,060 --> 00:57:21,520 dokumen model objek - 1225 00:57:21,520 --> 00:57:24,620 yang hanya dengan cara yang mewah untuk berkata pokok HTML 1226 00:57:24,620 --> 00:57:26,220 yang kita lihat masa lalu. 1227 00:57:26,220 --> 00:57:31,640 >> Jadi untuk meyakinkan, JavaScript adalah sintaksis begitu serupa dengan C juga. 1228 00:57:31,640 --> 00:57:32,820 Tiada fungsi utama. 1229 00:57:32,820 --> 00:57:35,430 Anda hanya mula menulis kod dan ia akan dilaksanakan, atau 1230 00:57:35,430 --> 00:57:36,900 ditafsirkan lebih betul. 1231 00:57:36,900 --> 00:57:38,660 Syarat ini akan kelihatan seperti ini. 1232 00:57:38,660 --> 00:57:41,230 Tidak berbeza daripada C atau PHP untuk perkara itu. 1233 00:57:41,230 --> 00:57:43,890 Ungkapan Boolean atau bersama-ed akan kelihatan seperti ini. 1234 00:57:43,890 --> 00:57:45,590 ANDkan bersama-sama kelihatan seperti ini. 1235 00:57:45,590 --> 00:57:47,750 >> Suis akan kelihatan seperti ini. 1236 00:57:47,750 --> 00:57:49,440 Untuk gelung akan kelihatan seperti ini. 1237 00:57:49,440 --> 00:57:51,060 Walaupun gelung akan kelihatan seperti ini. 1238 00:57:51,060 --> 00:57:53,316 Adakah manakala gelung akan kelihatan seperti ini. 1239 00:57:53,316 --> 00:57:54,780 >> Ini adalah baru. 1240 00:57:54,780 --> 00:57:58,753 Jadi JavaScript tidak mempunyai foreach a membina per se, tetapi ini membina 1241 00:57:58,753 --> 00:58:03,870 untuk i berubah-ubah dalam pelbagai, dan saya dalam kes menjadi nilai indeks. 1242 00:58:03,870 --> 00:58:06,880 Jadi ia sedikit berbeza daripada foreach, walaupun versi baru 1243 00:58:06,880 --> 00:58:10,280 JavaScript yang keluar sepanjang masa, jadi walaupun bahasa ini mempunyai 1244 00:58:10,280 --> 00:58:10,880 akan berkembang. 1245 00:58:10,880 --> 00:58:16,920 >> Dan sebagai diketepikan, JavaScript hari ini juga boleh digunakan pada pelayan seperti 1246 00:58:16,920 --> 00:58:19,920 PHP menggunakan rangka kerja yang dipanggil Node.js. 1247 00:58:19,920 --> 00:58:24,670 Salah satu TFS CS50 ini, Kevin, telah mengetuai Seminar Node.js itu boleh didapati di 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Jadi, jika anda ingin tahu, tahu bahawa anda boleh menggunakan ini di sebelah pelayan sebagai 1250 00:58:28,830 --> 00:58:33,870 baik, tetapi itu adalah satu trend yang agak baru-baru ini, tetapi satu yang kuat pada itu. 1251 00:58:33,870 --> 00:58:35,270 >> Ini adalah sedikit berbeza. 1252 00:58:35,270 --> 00:58:37,910 Ini adalah pelbagai dalam JavaScript. 1253 00:58:37,910 --> 00:58:40,115 Dan apa yang menyerang anda sebagai berbeza berbanding C atau PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Terdapat beberapa cerita yang cepat kita boleh memberitahu di sini. 1256 00:58:47,420 --> 00:58:49,367 Apa yang hilang berbanding PHP? 1257 00:58:49,367 --> 00:58:51,652 >> PENONTON: [didengar]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID MALAN: Ya? 1259 00:58:52,110 --> 00:58:53,322 Maaf, katakan lagi? 1260 00:58:53,322 --> 00:58:54,740 >> PENONTON: Tidak mengisytiharkan jenis berubah-ubah. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID MALAN: Kami tidak mengisytiharkan jenis berubah-ubah. 1262 00:58:56,390 --> 00:58:59,630 Jadi sebenarnya agak seperti PHP, kita tidak menyatakan jenis pembolehubah ini. 1263 00:58:59,630 --> 00:59:02,670 Sebaliknya, kita lebih umum berkata var untuk berubah-ubah. 1264 00:59:02,670 --> 00:59:06,690 Kami tidak mempunyai gangguan PHP ke atas tanda dolar, manakala yang membosankan untuk 1265 00:59:06,690 --> 00:59:09,160 jenis, tidak membuat lebih jelas bahawa sesuatu adalah pembolehubah. 1266 00:59:09,160 --> 00:59:11,830 Manakala di sini, kami jenis kembali ke Pendekatan C dengan hanya memanggil 1267 00:59:11,830 --> 00:59:14,500 berubah-ubah dengan nama yang kita mahu untuk memberikan, seperti nombor. 1268 00:59:14,500 --> 00:59:17,170 Dan juga seperti PHP, kita mempunyai kurungan untuk 1269 00:59:17,170 --> 00:59:19,170 nilai dalam pelbagai itu. 1270 00:59:19,170 --> 00:59:22,490 >> Jadi pembolehubah dalam JavaScript juga mungkin kelihatan seperti ini. 1271 00:59:22,490 --> 00:59:26,900 Perhatikan di sini ini adalah rentetan yang dipanggil s, tetapi juga kita telah tidak dinyatakan 1272 00:59:26,900 --> 00:59:28,750 bahawa ia adalah rentetan. 1273 00:59:28,750 --> 00:59:33,160 Di sini walaupun adalah satu ciri yang tidak wujud dalam cara yang sama dalam PHP, 1274 00:59:33,160 --> 00:59:34,460 tetapi agak sama. 1275 00:59:34,460 --> 00:59:36,530 Ini adalah objek dalam JavaScript. 1276 00:59:36,530 --> 00:59:42,110 Dan objek adalah jenis Tentera Swiss Pisau struktur data dalam bahawa anda 1277 00:59:42,110 --> 00:59:43,900 boleh menggunakan mereka untuk apa-apa bilangan perkara. 1278 00:59:43,900 --> 00:59:46,860 >> Di sini, sebagai contoh, kita mengisytiharkan berubah-ubah dipanggil quote. 1279 00:59:46,860 --> 00:59:49,110 Jenis-jenis pembolehubah yang adalah objek. 1280 00:59:49,110 --> 00:59:53,550 Anda boleh berfikir ini sebagai struct C yang mempunyai kunci dan nilai-nilai. 1281 00:59:53,550 --> 00:59:55,250 Simbol adalah kunci. 1282 00:59:55,250 --> 00:59:57,350 FB adalah nilai, nampaknya simbol saham. 1283 00:59:57,350 --> 00:59:57,930 Koma. 1284 00:59:57,930 --> 01:00:02,180 Harga adalah kunci yang lain, dan nilainya nampaknya titik terapung, atau 1285 01:00:02,180 --> 01:00:06,510 bilangan lebih amnya JavaScript, daripada $ 49,26. 1286 01:00:06,510 --> 01:00:09,030 >> Jadi PHP tidak mempunyai - 1287 01:00:09,030 --> 01:00:12,980 kami tidak dilihat dalam objek PHP agak seperti ini, tetapi kita tidak melihat analog, 1288 01:00:12,980 --> 01:00:14,093 iaitu apa? 1289 01:00:14,093 --> 01:00:14,980 >> PENONTON: [didengar]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID MALAN: dengan array bersekutu. 1291 01:00:16,110 --> 01:00:19,990 Jadi sedangkan PHP mempunyai array bersekutu sintaks yang sentiasa sedikit supaya 1292 01:00:19,990 --> 01:00:20,370 berbeza - 1293 01:00:20,370 --> 01:00:21,780 kita melihat kurungan persegi. 1294 01:00:21,780 --> 01:00:23,860 Kami melihat anak panah pelik simbol. 1295 01:00:23,860 --> 01:00:27,330 JavaScript mempunyai objek, tetapi ini adalah kebanyakannya perbezaan semantik dan 1296 01:00:27,330 --> 01:00:29,260 sinonim yang berbeza untuk sekarang. 1297 01:00:29,260 --> 01:00:35,060 Walau bagaimanapun, sebagai diketepikan, PHP juga mempunyai objek dengan cara yang Jawa dan lain-lain 1298 01:00:35,060 --> 01:00:37,810 bahasa mempunyai objek dalam pengaturcaraan berorientasi objek. 1299 01:00:37,810 --> 01:00:40,440 Tetapi kita akan menggunakan ini hanya untuk jenis data untuk sekarang. 1300 01:00:40,440 --> 01:00:42,170 Objek dan array bersekutu. 1301 01:00:42,170 --> 01:00:44,140 >> Yang ini mungkin membuat ia sedikit lebih jelas. 1302 01:00:44,140 --> 01:00:45,890 Berikut adalah mengapa objek berguna. 1303 01:00:45,890 --> 01:00:48,760 Apabila anda mahu untuk mengisytiharkan pelajar, seperti Zamyla, kita boleh sebenarnya 1304 01:00:48,760 --> 01:00:52,630 merangkumi jadi untuk bercakap dalam yang objek menggunakan kurungan kerinting seperti 1305 01:00:52,630 --> 01:00:55,060 sebelum sejumlah kunci dan nilai-nilai di sini. 1306 01:00:55,060 --> 01:00:59,150 Kami mempunyai ID, rumah, dan nama untuk Zamyla, diikuti oleh koma bertitik sebagai 1307 01:00:59,150 --> 01:01:00,690 biasa pada akhir. 1308 01:01:00,690 --> 01:01:04,840 >> Down di sini juga, ini adalah sedikit yang berbeza, tetapi juga sangat kuat 1309 01:01:04,840 --> 01:01:05,690 hari ini. 1310 01:01:05,690 --> 01:01:08,780 Berikut adalah pelbagai, dan saya tahu bahawa kerana ada kurungan sehingga persegi 1311 01:01:08,780 --> 01:01:11,090 atas dan kurungan persegi di bahagian bawah. 1312 01:01:11,090 --> 01:01:16,050 Dan ini adalah pelbagai apa data menaip nampaknya dalam JavaScript? 1313 01:01:16,050 --> 01:01:21,260 Ini adalah pelbagai ia kelihatan seperti tiga objek. 1314 01:01:21,260 --> 01:01:24,580 Dan saya tahu ia adalah satu objek sahaja kerana pendakap kerinting. 1315 01:01:24,580 --> 01:01:28,760 Dan notis ada pendakap kerinting terbuka, beberapa barangan, menyokong kerinting rapat, koma, 1316 01:01:28,760 --> 01:01:31,180 kemudian beberapa lanjut, koma, dan kemudian beberapa. 1317 01:01:31,180 --> 01:01:33,800 Jadi, itu tiga hujah-hujah dipisahkan oleh dua koma. 1318 01:01:33,800 --> 01:01:36,810 >> Jadi ini adalah pelbagai tiga objek. 1319 01:01:36,810 --> 01:01:39,940 Dan setiap satu daripadanya kelihatan anggota pelajar atau kakitangan beberapa 1320 01:01:39,940 --> 01:01:42,370 jenis, masing-masing dengan satu ID, rumah, dan nama. 1321 01:01:42,370 --> 01:01:45,060 Tetapi saya telah dipanggil ini sesuatu dipanggil JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Objek notation. 1323 01:01:47,450 --> 01:01:52,060 Dan ini adalah satu format data yang benar-benar begitu sangat popular dan 1324 01:01:52,060 --> 01:01:55,100 tren hari ini bahawa jika anda menulis permohonan yang menggunakan Facebook 1325 01:01:55,100 --> 01:01:59,150 API, API Twitter, benar-benar hampir apa-apa API luar sana hari ini, 1326 01:01:59,150 --> 01:02:02,820 termasuk beberapa CS50 itu sendiri, data anda kembali tidak dalam 1327 01:02:02,820 --> 01:02:04,720 sekolah format CSV lama. 1328 01:02:04,720 --> 01:02:06,780 >> Kerana ingat bahawa CSV adalah super mudah. 1329 01:02:06,780 --> 01:02:10,230 Ia hanya tiang dipisahkan dengan tanda koma. 1330 01:02:10,230 --> 01:02:13,190 JSON data memberikan anda lebih metadata. 1331 01:02:13,190 --> 01:02:17,800 Ia mengaitkan utama dengan setiap nilai yang begitu mereka tidak perlu hanya menganggap bahawa 1332 01:02:17,800 --> 01:02:22,460 ruangan sifar adalah satu nilai, kolum satu adalah satu lagi, kolum dua adalah satu lagi. 1333 01:02:22,460 --> 01:02:26,790 Segala-galanya dalam objek JSON sini adalah jenis diri-menerangkan, kerana setiap 1334 01:02:26,790 --> 01:02:30,940 salah satu nama-nama dalam fail ini mempunyai beribu- menamakan di hadapannya sebagai 1335 01:02:30,940 --> 01:02:32,510 tali dipetik. 1336 01:02:32,510 --> 01:02:34,950 >> Jadi mari kita lihat pada beberapa contoh di sini. 1337 01:02:34,950 --> 01:02:36,800 Biar saya pergi ke dalam perkakas. 1338 01:02:36,800 --> 01:02:41,000 Dan biarlah saya pergi ke vhost kami direktori ke awam. 1339 01:02:41,000 --> 01:02:45,590 Dan biarlah saya pergi ke dalam JavaScript direktori. 1340 01:02:45,590 --> 01:02:49,610 Dan mari kita pergi ke hadapan dan membuka dom-0.html, di mana DOM hanya bermakna 1341 01:02:49,610 --> 01:02:51,010 dokumen model objek. 1342 01:02:51,010 --> 01:02:53,490 Ia barangan pokok itu untuk yang Saya disebut lebih awal. 1343 01:02:53,490 --> 01:02:54,950 >> Dan biarlah saya mencadangkan yang berikut. 1344 01:02:54,950 --> 01:02:57,720 Berikut adalah laman web yang badan adalah agak mudah. 1345 01:02:57,720 --> 01:03:00,170 Jadi turun di sini di bahagian bawah, sedar saya mempunyai bentuk yang. 1346 01:03:00,170 --> 01:03:01,500 Kami telah melihat orang-orang sebelum ini. 1347 01:03:01,500 --> 01:03:07,600 Ia mempunyai dua input, satu daripadanya mempunyai ID nama, satu daripadanya mempunyai sejenis 1348 01:03:07,600 --> 01:03:09,830 mengemukakan, dan yang pertama Jenis seseorang adalah teks. 1349 01:03:09,830 --> 01:03:11,900 Jadi ini sebenarnya bunyi agak mudah. 1350 01:03:11,900 --> 01:03:13,090 >> Mari kita pergi di sini. 1351 01:03:13,090 --> 01:03:15,390 Mari kita kembali ke halaman ini di sini. 1352 01:03:15,390 --> 01:03:21,030 Mari kita pergi ke dalam localhost, dan pergi ke dalam direktori JavaScript kita, dan pergi ke 1353 01:03:21,030 --> 01:03:24,640 dom-0, dan di sini kita mempunyai bentuk ini. 1354 01:03:24,640 --> 01:03:26,550 Jadi, itu nampaknya semua halaman ini tidak. 1355 01:03:26,550 --> 01:03:28,740 Ia mempunyai medan nama dengan butang Submit. 1356 01:03:28,740 --> 01:03:30,340 Tetapi saya tidak akan menggunakan PHP di sini. 1357 01:03:30,340 --> 01:03:34,310 Saya akan lakukan sebelah pelanggan semua jadi untuk bercakap dalam JavaScript seperti berikut. 1358 01:03:34,310 --> 01:03:39,100 >> Perhatikan bahawa saya memang diberi nama bidang input ini yang unik 1359 01:03:39,100 --> 01:03:42,350 pengecam, yang akan benar-benar menyelamatkan saya sedikit masa dalam seketika. 1360 01:03:42,350 --> 01:03:45,480 Dan notis saya diperkenalkan tag lagi dalam kepala halaman web saya, 1361 01:03:45,480 --> 01:03:46,565  tag. 1362 01:03:46,565 --> 01:03:50,120 >> Jadi ia dalam pengertian ini bahawa JavaScript adalah bahasa pengaturcaraan pelanggan-sampingan. 1363 01:03:50,120 --> 01:03:55,020 Dalam kes ini, seperti CSS, saya telah ia lurus dalam HTML saya. 1364 01:03:55,020 --> 01:03:58,810 Tetapi notis saya mengisytiharkan fungsi yang kelihatan sedikit seperti PHP 1365 01:03:58,810 --> 01:04:01,530 sintaksis, tetapi ini sebenarnya JavaScript, kerana sekali lagi, ia 1366 01:04:01,530 --> 01:04:03,920 pelanggan-sampingan dalam pelayar. 1367 01:04:03,920 --> 01:04:07,590 Dan mengambil meneka apa ini akan lakukan, walaupun beberapa sintaks 1368 01:04:07,590 --> 01:04:09,338 di sini adalah baru. 1369 01:04:09,338 --> 01:04:11,760 >> PENONTON: Bertanya khabar kepada sesiapa. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID MALAN: Ia akan bertanya khabar kepada sesiapa yang melawat laman ini. 1371 01:04:14,020 --> 01:04:15,120 Jadi bagaimana? 1372 01:04:15,120 --> 01:04:18,070 >> Jadi notis, ternyata dalam JavaScript ada amaran fungsi (). 1373 01:04:18,070 --> 01:04:22,840 Ini adalah fungsi yang sangat jenis menyedihkan benar-benar hanya cenderung untuk menyakitkan hati pengguna. 1374 01:04:22,840 --> 01:04:25,440 Ia bukan salah anda benar-benar perlu menggunakan biasanya, tetapi ia cepat dan kotor 1375 01:04:25,440 --> 01:04:27,710 cara semacam mencetak sesuatu kepada pengguna grafik 1376 01:04:27,710 --> 01:04:29,180 muka, seperti pelayar. 1377 01:04:29,180 --> 01:04:31,400 Perhatikan di sini bahawa saya telah mendapat rentetan dalam petikan tunggal. 1378 01:04:31,400 --> 01:04:36,010 Ia ternyata bahawa tidak seperti C, JavaScript sebenarnya boleh mempunyai anda menggunakan tunggal 1379 01:04:36,010 --> 01:04:38,730 memetik, dan terus terang ia hanya jenis konvensyen gaya di kalangan 1380 01:04:38,730 --> 01:04:41,180 JavaScript pengaturcara untuk menggunakan tanda petikan tunggal. 1381 01:04:41,180 --> 01:04:43,750 PHP, mereka sebenarnya mempunyai sedikit makna yang berbeza. 1382 01:04:43,750 --> 01:04:45,810 Tetapi untuk sekarang, hanya tahu bahawa itulah satu-satunya sebab. 1383 01:04:45,810 --> 01:04:49,270 Konvensyen dalam JavaScript sering untuk menggunakan tanda petikan tunggal, tetapi kita boleh menggunakan 1384 01:04:49,270 --> 01:04:50,950 petikan berganda di kedua-dua tempat juga. 1385 01:04:50,950 --> 01:04:52,610 >> Jadi ini adalah menarik. 1386 01:04:52,610 --> 01:04:56,430 Ingat masa lepas bahawa kami bahawa gambar pada skrin yang menarik pokok 1387 01:04:56,430 --> 01:04:59,720 di mana anda mempunyai nod HTML, dan mengetuai nod, dan nod badan, 1388 01:04:59,720 --> 01:05:00,800 dan kemudian beberapa teks. 1389 01:05:00,800 --> 01:05:04,700 Tetapi ada satu nod khas di bahagian paling atas yang saya dipanggil dokumen itu. 1390 01:05:04,700 --> 01:05:08,260 Nah, ternyata di dalam JavaScript, mana-mana kali anda menulis program dalam JavaScript 1391 01:05:08,260 --> 01:05:11,040 dalam pelayar, anda mempunyai akses kepada pembolehubah global khas. 1392 01:05:11,040 --> 01:05:14,130 Sama dalam semangat untuk superglobals PHP ini, satu ini dipanggil dalam 1393 01:05:14,130 --> 01:05:16,050 semua dokumen kecil. 1394 01:05:16,050 --> 01:05:21,480 >> Ia seperti struct, tetapi struct ini juga mempunyai fungsi di dalamnya. 1395 01:05:21,480 --> 01:05:23,790 Jadi struct C hanya mempunyai data biasanya. 1396 01:05:23,790 --> 01:05:29,060 Tetapi objek JavaScript kerana ini secara teknikal juga mempunyai fungsi, 1397 01:05:29,060 --> 01:05:31,830 atau dikenali sebagai kaedah, di dalamnya. 1398 01:05:31,830 --> 01:05:35,750 Dan anda boleh memanggil fungsi dalam objek ini agak literal melakukan yang 1399 01:05:35,750 --> 01:05:39,610 nama, dot, dan kemudian nama majlis itu, atau lagi kaedah. 1400 01:05:39,610 --> 01:05:41,160 Ia hanya sinonim, benar-benar. 1401 01:05:41,160 --> 01:05:42,450 >> Dan apakah fungsi ini lakukan? 1402 01:05:42,450 --> 01:05:43,840 Anda boleh jenis meneka dari namanya. 1403 01:05:43,840 --> 01:05:45,590 Dapatkan unsur oleh ID. 1404 01:05:45,590 --> 01:05:50,040 Jadi ini akan mencari laman web, mencari pokok itu, mencari 1405 01:05:50,040 --> 01:05:55,210 apa sahaja nod, elemen AKA, mempunyai ID unik quote unquote nama. 1406 01:05:55,210 --> 01:05:56,560 Dan kemudian apa yang saya akan lakukan? 1407 01:05:56,560 --> 01:06:00,350 Saya akan mendapatkan nilai dalam nod dalam pokok itu, dan saya akan 1408 01:06:00,350 --> 01:06:02,580 entah bagaimana bertanya khabar kepada nama itu. 1409 01:06:02,580 --> 01:06:05,360 >> Jadi mengambil tekaan, walaupun kita tidak telah melihat ini lagi, apa yang ditambah dengan 1410 01:06:05,360 --> 01:06:07,396 simbol bermakna di sini dan di sini mungkin? 1411 01:06:07,396 --> 01:06:08,230 >> PENONTON: Concatenate. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID MALAN: Concatenate. 1413 01:06:09,220 --> 01:06:11,290 Betul, dan ini adalah hanya jenis bentuk keputusan 1414 01:06:11,290 --> 01:06:12,280 orang dibuat tahun lalu. 1415 01:06:12,280 --> 01:06:15,190 Dalam PHP, anda concatenate perkara dengan titik. 1416 01:06:15,190 --> 01:06:18,800 Dalam C, anda melompat melalui beberapa gegelang dan fungsi seperti strcopy () atau hubungi 1417 01:06:18,800 --> 01:06:20,600 strcat () atau apa-apa fungsi lain. 1418 01:06:20,600 --> 01:06:22,060 Tetapi dalam JavaScript, anda menggunakan plus. 1419 01:06:22,060 --> 01:06:24,770 Jadi ini hanya concatenating tiga tali - 1420 01:06:24,770 --> 01:06:27,850 hello, nama, dan kemudian tanda seru. 1421 01:06:27,850 --> 01:06:30,390 >> Oleh itu, apabila dan mengapa fungsi ini dipanggil walaupun? 1422 01:06:30,390 --> 01:06:33,150 Nah, mengambil tekaan daripada HTML di bahagian bawah. 1423 01:06:33,150 --> 01:06:35,810 Mengapa menyambut () dipanggil, atau bila? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Rupa-rupanya, sebagai terbaik yang saya boleh beritahu, pada mengemukakan, apabila borang ini dihantar, 1426 01:06:44,030 --> 01:06:47,200 Saya akan melakukan apa yang di dalam petikan ini. 1427 01:06:47,200 --> 01:06:50,900 Dan secara khusus, saya akan memanggil menyambut () dan kemudian kembali palsu. 1428 01:06:50,900 --> 01:06:53,090 >> Nah, mari kita lihat apa bersih kesan di sini ialah pertama. 1429 01:06:53,090 --> 01:06:58,290 Jadi biarlah saya teruskan dan menaip , katakanlah, Loren, Hantar. 1430 01:06:58,290 --> 01:06:59,440 Hello Loren. 1431 01:06:59,440 --> 01:07:02,990 Mari kita lihat jika mungkin ini hanya pelaksanaan bertuah. 1432 01:07:02,990 --> 01:07:03,200 Nope. 1433 01:07:03,200 --> 01:07:05,990 Jadi ia menaip apa sahaja menamakan saya sebenarnya diletakkan di sana. 1434 01:07:05,990 --> 01:07:07,970 >> Tetapi notis apa yang tidak berubah-ubah. 1435 01:07:07,970 --> 01:07:10,360 URL ini masih dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 Tiada register.php. 1437 01:07:11,820 --> 01:07:13,110 Tidak ada fail kedua. 1438 01:07:13,110 --> 01:07:14,930 Tidak ada sifat tindakan. 1439 01:07:14,930 --> 01:07:19,720 Jadi apa yang salah nyata ini mungkin lakukan? 1440 01:07:19,720 --> 01:07:23,660 Mengapa saya memanggil menyambut () dan kemudian kembali palsu mungkin? 1441 01:07:23,660 --> 01:07:26,420 Apa yang biasanya berlaku apabila anda klik Hantar pada bentuk yang walaupun kita mempunyai 1442 01:07:26,420 --> 01:07:27,854 dilihat pada minggu lepas? 1443 01:07:27,854 --> 01:07:29,900 >> PENONTON: [didengar]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID MALAN: Ia pergi di suatu tempat, bukan? 1445 01:07:30,860 --> 01:07:32,720 Ia pergi kepada beberapa URL destinasi. 1446 01:07:32,720 --> 01:07:34,120 Tetapi saya tidak mahu itu berlaku di sini. 1447 01:07:34,120 --> 01:07:37,620 Saya mahu laman web saya untuk berterus- dinamik seperti Gmail, di mana sekali anda 1448 01:07:37,620 --> 01:07:38,650 di sana, anda tinggal di sana. 1449 01:07:38,650 --> 01:07:42,900 URL tidak berubah dengan cara yang menunjukkan keseluruhan laman web tersebut memuatkan semula. 1450 01:07:42,900 --> 01:07:46,680 Sebaliknya, saya hanya mahu menukar sesuatu seperti mencetak sesuatu 1451 01:07:46,680 --> 01:07:48,320 di sini pada skrin. 1452 01:07:48,320 --> 01:07:49,630 >> Nah biar saya membersihkan ini sehingga sedikit. 1453 01:07:49,630 --> 01:07:55,370 Izinkan saya membuka tidak dom-0, tetapi biarlah saya membuka dom-2. 1454 01:07:55,370 --> 01:07:57,350 Hanya supaya anda telah melihat beberapa sintaks sini. 1455 01:07:57,350 --> 01:08:02,080 >> Ia ternyata bahawa apa yang kita hanya tidak menggunakan JavaScript mentah. 1456 01:08:02,080 --> 01:08:04,420 Jadi ini adalah benar-benar bahasa JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Sebahagian daripada anda mungkin tahu perpustakaan yang dipanggil jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Jadi jQuery tidak sama perkara seperti JavaScript. 1459 01:08:09,980 --> 01:08:14,110 Ia hanya sebuah perpustakaan yang benar-benar pintar lelaki menulis dan dipopularkan seperti 1460 01:08:14,110 --> 01:08:18,100 bahawa hampir semua orang di dunia sekarang menggunakan jQuery apabila menggunakan JavaScript. 1461 01:08:18,100 --> 01:08:20,890 Dan pada pandangan pertama, jujur, ia kelihatan sedikit lebih samar. 1462 01:08:20,890 --> 01:08:24,990 Tetapi anda akan mencari, terutamanya jika anda pergi ada untuk projek akhir anda dengan web 1463 01:08:24,990 --> 01:08:29,029 pembangunan, anda akan mendapati bahawa ini membersihkan benda-benda dan menjimatkan cukup 1464 01:08:29,029 --> 01:08:30,229 beberapa baris kod. 1465 01:08:30,229 --> 01:08:33,189 >> Jadi mari kita hanya pandang pada bagaimana borang ini bekerja. 1466 01:08:33,189 --> 01:08:35,664 Perhatikan apa yang saya mengeluarkan nampaknya dari HTML saya? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Tidak ada pada pengendali mengemukakan jadi untuk bercakap. 1469 01:08:40,630 --> 01:08:41,470 Tidak ada sifat. 1470 01:08:41,470 --> 01:08:43,359 Oleh kerana anda tahu, apa Saya tidak suka? 1471 01:08:43,359 --> 01:08:45,640 Saya berasa seperti kita telah jatuh ke tabiat lama di sana. 1472 01:08:45,640 --> 01:08:49,340 Sama seperti ia telah mula merasai ceroboh untuk bergaul dengan kedua-dua CSS 1473 01:08:49,340 --> 01:08:52,149 HTML, kerana anda jenis membuang bahasa yang berbeza di seluruh 1474 01:08:52,149 --> 01:08:56,180 tempat, juga tidak ini mula berasa seperti jalan raya yang tidak baik turun ke bawah di mana 1475 01:08:56,180 --> 01:09:01,069 Saya meletakkan kod JavaScript dalam saya HTML dan bukan pemfaktoran keluar. 1476 01:09:01,069 --> 01:09:02,279 >> Jadi, itu pelajaran di sini. 1477 01:09:02,279 --> 01:09:05,080 Dalam dom-2.html, saya pemfaktoran keluar. 1478 01:09:05,080 --> 01:09:07,399 Dan saya melakukan perkara-perkara sedikit berbeza. 1479 01:09:07,399 --> 01:09:09,630 Buat masa ini, saya akan melambai tangan saya apa ini benar-benar tidak 1480 01:09:09,630 --> 01:09:10,590 di bawah hood. 1481 01:09:10,590 --> 01:09:14,210 Tetapi hanya untuk sekarang menganggap bahawa yang pertama baris kod di perpustakaan ini 1482 01:09:14,210 --> 01:09:18,170 dipanggil jQuery hanya bermakna apabila dokumen siap, lakukan yang berikut. 1483 01:09:18,170 --> 01:09:20,080 >> Kerana laman web boleh mengambil masa untuk beban. 1484 01:09:20,080 --> 01:09:23,029 Anda mungkin di internet yang perlahan sambungan, dan ia mungkin berputar 1485 01:09:23,029 --> 01:09:25,290 dan berputar, dan akhirnya ia dimuatkan. 1486 01:09:25,290 --> 01:09:29,060 Yang baris kod hanya mengatakan tunggu sehingga keseluruhan halaman bersedia, dokumen itu 1487 01:09:29,060 --> 01:09:31,189 siap, sebelum melaksanakan kod ini. 1488 01:09:31,189 --> 01:09:34,390 >> Dan kini notis, ini mungkin yang paling berguna pertama 1489 01:09:34,390 --> 01:09:36,189 mengambil dari jQuery. 1490 01:09:36,189 --> 01:09:42,140 Keturunan ini di sini adalah hampir sama dalam semangat ke garisan lebih lama di sini. 1491 01:09:42,140 --> 01:09:46,920 Manakala dalam kod JavaScript mentah, terdapat Wujud objek global dokumen yang 1492 01:09:46,920 --> 01:09:50,460 mempunyai fungsi yang dipanggil getElementById (), orang-orang yang menulis 1493 01:09:50,460 --> 01:09:55,720 jQuery dipermudahkan bahawa untuk hanya mengatakan tanda dolar, dan kemudian di dalam 1494 01:09:55,720 --> 01:10:00,250 kurungan meletakkan dua petikan, dan kemudian meletakkan simbol hash diikuti oleh 1495 01:10:00,250 --> 01:10:02,250 ID unik anda mahu merebut. 1496 01:10:02,250 --> 01:10:06,170 Jadi ini adalah bersamaan dengan document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Sementara itu,. Mengemukakan hanya bermakna pada penyerahan apa jua bentuk anda 1498 01:10:11,090 --> 01:10:14,240 merujuk kepada di sebelah kiri, pergi ke hadapan dan melaksanakan ini. 1499 01:10:14,240 --> 01:10:16,600 Tetapi ini kini rasa ingin tahu juga. 1500 01:10:16,600 --> 01:10:19,560 Apa yang pelik mengenai apa Saya menekankan di sini? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Bukan sahaja ia jenis sintaksis baru, juga ada sesuatu yang hilang. 1503 01:10:28,594 --> 01:10:29,558 >> PENONTON: Ia hanya dipanggil fungsi? 1504 01:10:29,558 --> 01:10:31,970 Ia tidak dipanggil amaran? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID MALAN: Yeah. 1506 01:10:32,440 --> 01:10:35,450 Nah, jadi berjaga-jaga () turun di sini, untuk berlaku adil. 1507 01:10:35,450 --> 01:10:39,520 Tetapi tidak ada menyebut daripada nama, seperti yang anda tahu, atau foo 1508 01:10:39,520 --> 01:10:40,980 sesuatu di sini. 1509 01:10:40,980 --> 01:10:43,830 Dan sesungguhnya, ini adalah salah satu ciri-ciri JavaScript yang agak 1510 01:10:43,830 --> 01:10:45,370 berkuasa, tetapi juga agak baru. 1511 01:10:45,370 --> 01:10:47,460 Dan PHP sebenarnya mempunyai ini juga. 1512 01:10:47,460 --> 01:10:49,500 >> Biar saya pergi ke hadapan dan melakukan sesuatu yang cepat sebenar. 1513 01:10:49,500 --> 01:10:52,030 Biar saya pergi ke hadapan dan meletakkan ini di sini. 1514 01:10:52,030 --> 01:10:52,600 Biar saya melakukan ini. 1515 01:10:52,600 --> 01:10:53,690 Fungsi. 1516 01:10:53,690 --> 01:10:56,455 Mari kita panggil pengendali ini (). 1517 01:10:56,455 --> 01:10:58,290 Fungsi pengendali jadi untuk bercakap. 1518 01:10:58,290 --> 01:11:00,110 Sesuatu yang mengendalikan beberapa operasi. 1519 01:11:00,110 --> 01:11:02,700 Biar saya membersihkan lekukan saya. 1520 01:11:02,700 --> 01:11:04,380 Dan meletakkan ini di sini. 1521 01:11:04,380 --> 01:11:06,090 Dan meletakkan bahawa di sini. 1522 01:11:06,090 --> 01:11:06,470 Yep. 1523 01:11:06,470 --> 01:11:07,060 OK. 1524 01:11:07,060 --> 01:11:10,300 >> Jadi sekarang saya mempunyai fungsi yang dipanggil Pengendali () bahawa saya tidak benar-benar tahu 1525 01:11:10,300 --> 01:11:10,890 apa yang dilakukan yet. 1526 01:11:10,890 --> 01:11:12,710 Ia hanya masih mempunyai barangan itu. 1527 01:11:12,710 --> 01:11:13,900 Whoops. 1528 01:11:13,900 --> 01:11:15,820 Mengambil masa terlalu banyak. 1529 01:11:15,820 --> 01:11:18,490 Mari kita melakukan ini. 1530 01:11:18,490 --> 01:11:18,990 Baiklah. 1531 01:11:18,990 --> 01:11:20,240 Maaf. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Baiklah. 1534 01:11:23,690 --> 01:11:24,720 Biar saya melakukan ini. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 Yang kelihatan baik dan lurus kemukakan sekarang. 1537 01:11:27,040 --> 01:11:29,090 Biar saya melakukan ini. 1538 01:11:29,090 --> 01:11:29,860 Melakukan ini. 1539 01:11:29,860 --> 01:11:30,950 Dan OK. 1540 01:11:30,950 --> 01:11:33,080 Jadi sekarang, mari kita meletakkan ini di sini. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Pengaturcaraan tidak lebih cepat. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Jadi sekarang, mari kita kembali ke di mana cerita itu bermula. 1545 01:11:40,000 --> 01:11:43,530 Sebelum ini, saya berkata bahawa garis ini di sini bermakna apabila dokumen itu siap, pergi 1546 01:11:43,530 --> 01:11:44,380 ke hadapan dan melakukan ini. 1547 01:11:44,380 --> 01:11:45,660 Apa yang saya mahu lakukan? 1548 01:11:45,660 --> 01:11:49,070 Nah khusus, saya mahu pergi ke hadapan dan melakukan yang berikut. 1549 01:11:49,070 --> 01:11:53,700 Melaksanakan baris ini kod, dan kemudian apa yang saya mahu anda lakukan adalah panggilan ini 1550 01:11:53,700 --> 01:11:56,370 berfungsi apabila bentuk itu dikemukakan. 1551 01:11:56,370 --> 01:11:57,730 >> Sekarang ini adalah apa yang menarik. 1552 01:11:57,730 --> 01:11:59,170 Ini bukan sendiri fungsi. 1553 01:11:59,170 --> 01:12:02,540 Notis saya tidak meletakkan kurungan di sini dengan cara yang biasa. 1554 01:12:02,540 --> 01:12:06,800 Saya betul-betul lulus fungsi yang dipanggil Pengendali () ke fungsi lain 1555 01:12:06,800 --> 01:12:10,800 dipanggil mengemukakan () sebagai hujah sebagai walaupun ia seperti pemboleh ubah. 1556 01:12:10,800 --> 01:12:14,290 Dan ini adalah salah satu ciri-ciri JavaScript, adalah fungsi diri 1557 01:12:14,290 --> 01:12:15,710 benar-benar hanya objek. 1558 01:12:15,710 --> 01:12:18,350 Malah, mereka benar-benar hanya pembolehubah sejenis. 1559 01:12:18,350 --> 01:12:21,340 Dan jika nama fungsi tersebut Pengendali (), tidak ada sebab saya tidak boleh 1560 01:12:21,340 --> 01:12:23,390 lulus dalam sebagai hujah di sini. 1561 01:12:23,390 --> 01:12:27,530 Dan ini bermakna apabila bentuk dengan ID demo adalah 1562 01:12:27,530 --> 01:12:29,320 dikemukakan, memanggil fungsi ini. 1563 01:12:29,320 --> 01:12:32,770 >> Tetapi sekarang jika saya membuat asal semua ini, mengapakah saya mungkin melakukan 1564 01:12:32,770 --> 01:12:34,850 seketika ini dahulu? 1565 01:12:34,850 --> 01:12:36,840 Nah, ini adalah fungsi tanpa nama. 1566 01:12:36,840 --> 01:12:41,080 Kerana terus-terang, saya sedar mengapa saya mengganggu membuang masa mengisytiharkan 1567 01:12:41,080 --> 01:12:45,540 fungsi dipanggil pengendali () hanya untuk memanggil dalam satu dan hanya satu tempat? 1568 01:12:45,540 --> 01:12:48,640 Jika saya tidak perlu nama, dan saya tidak perlu memanggil lebih daripada satu tempat, 1569 01:12:48,640 --> 01:12:51,200 mari kita hanya melaksanakan fungsi betul di mana saya memerlukannya. 1570 01:12:51,200 --> 01:12:55,190 Dan sebagainya JavaScript dan PHP menyokong apa yang dipanggil fungsi tanpa nama yang 1571 01:12:55,190 --> 01:12:57,900 membenarkan saya untuk melakukannya dengan tepat bahawa di sini. 1572 01:12:57,900 --> 01:12:59,570 >> Tetapi kita hanya menggaru permukaan. 1573 01:12:59,570 --> 01:13:02,430 Mari kita mengusik dengan hanya beberapa contoh terakhir di sini. 1574 01:13:02,430 --> 01:13:04,600 >> Jika saya pergi ke quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Perhatikan bahawa ini adalah sebenarnya satu PHP fungsi, program PHP, yang saya tulis 1577 01:13:11,870 --> 01:13:15,270 yang menjangka parameter HTTP dipanggil simbol, dan saya boleh lulus dalam 1578 01:13:15,270 --> 01:13:16,730 nilai seperti FB. 1579 01:13:16,730 --> 01:13:20,010 Dan jika kita benar-benar melihat sumber kod, ini pertanyaan laman web percuma 1580 01:13:20,010 --> 01:13:23,680 dipanggil Yahoo Kewangan, seperti p-set tujuh, dan ia kembali kepada saya 1581 01:13:23,680 --> 01:13:26,580 sesuatu dalam nampaknya format dikenali adalah JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Objek notation. 1583 01:13:28,010 --> 01:13:28,810 Ia hanya objek. 1584 01:13:28,810 --> 01:13:32,500 Notis pendakap kerinting, sebut harga, kolon, dan koma. 1585 01:13:32,500 --> 01:13:34,720 >> Sekarang Sementara itu, ini adalah agak sejuk. 1586 01:13:34,720 --> 01:13:38,520 Kerana saya mungkin boleh menggunakan pengaturcaraan bahasa untuk menjana URL 1587 01:13:38,520 --> 01:13:40,370 yang kelihatan seperti ini dinamik, betul? 1588 01:13:40,370 --> 01:13:43,340 Saya boleh menukar ini kepada Google dan kembali Google 1589 01:13:43,340 --> 01:13:47,930 harga saham sebanyak $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Jadi mari kita lihat jika kita tidak boleh menggunakan ini sekarang. 1591 01:13:49,640 --> 01:13:56,590 >> Biar saya pergi ke ajax-0 di sini, yang kelihatan seperti berikut. 1592 01:13:56,590 --> 01:13:59,750 Ia hanya sebuah laman web yang mempunyai borang dengan butang. 1593 01:13:59,750 --> 01:14:05,860 Biar saya di sini teruskan dan taip YHOO untuk simbol saham Yahoo, klik Dapatkan 1594 01:14:05,860 --> 01:14:10,530 Quote, dan kini sedar saya telah mendapat amaran dengan 32,86. 1595 01:14:10,530 --> 01:14:14,050 >> Biar saya sebenarnya pergi kepada versi yang pelamun halaman ini, versi dua, dan 1596 01:14:14,050 --> 01:14:17,530 taip katakan Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Dapatkan Quote. 1598 01:14:18,410 --> 01:14:19,850 Dan kini, dan tanpa amaran. 1599 01:14:19,850 --> 01:14:22,770 Perhatikan di mana ia berkata Harga yang akan ditentukan? 1600 01:14:22,770 --> 01:14:27,060 Terdapat adalah yang paling mudah contoh-contoh yang mengisyaratkan apa GChat, dan Facebook 1601 01:14:27,060 --> 01:14:30,070 Sembang, berbual dan Gmail, dan apa-apa lain laman web yang melakukan dengan sebenarnya 1602 01:14:30,070 --> 01:14:31,290 perubahan laman web. 1603 01:14:31,290 --> 01:14:31,800 >> Notis ini. 1604 01:14:31,800 --> 01:14:33,120 Biar saya memuat semula halaman. 1605 01:14:33,120 --> 01:14:35,080 Izinkan saya membuka Inspektor Chrome. 1606 01:14:35,080 --> 01:14:36,890 Biar saya pergi kepada unsur-unsur tekan di sini. 1607 01:14:36,890 --> 01:14:42,310 Sekarang notis jika saya mengezum turun di sini dan membuka sehingga ini, notis bahawa ini adalah saya 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - model objek dokumen saya. 1609 01:14:44,500 --> 01:14:45,920 Ini adalah HTML saya. 1610 01:14:45,920 --> 01:14:48,750 Tetapi sekarang notis, walaupun ia akan untuk menjadi sedikit sukar untuk melihat ia dalam kedua-dua 1611 01:14:48,750 --> 01:14:52,080 tempat sekaligus, saya menaip di FB di sini, menonton bahagian bawah 1612 01:14:52,080 --> 01:14:54,110 skrin sahaja. 1613 01:14:54,110 --> 01:14:57,720 >> Ia sebenarnya mengubah HTML saya dengan cepat. 1614 01:14:57,720 --> 01:15:01,670 Dan ia melakukan ini cukup sekadar dengan melakukan sesuatu seperti ini. 1615 01:15:01,670 --> 01:15:06,800 Jika saya membuka ajax-2, notis melaksanakan sesuatu yang seksi sebagai 1616 01:15:06,800 --> 01:15:09,560 itu, walaupun ia agak hodoh, tetapi sebagai canggih seperti yang 1617 01:15:09,560 --> 01:15:11,910 fungsi, ia mempunyai beberapa HTML di bahagian bawah. 1618 01:15:11,910 --> 01:15:13,810 Tetapi notis saya digunakan untuk tag. 1619 01:15:13,810 --> 01:15:16,640 Kami telah tidak digunakan sebelum ini, tetapi ini adalah seperti, tetapi ia tidak memaksa 1620 01:15:16,640 --> 01:15:17,840 segala-galanya ke barisan baru. 1621 01:15:17,840 --> 01:15:20,830 Ia hanya menjadikan rantau segi empat tepat pada baris yang sama pada asasnya. 1622 01:15:20,830 --> 01:15:22,870 >> Perhatikan bahawa saya memberikannya ID harga. 1623 01:15:22,870 --> 01:15:26,800 Dan ternyata dengan menggunakan yang sama JavaScript perpustakaan, saya mempunyai fungsi yang 1624 01:15:26,800 --> 01:15:30,440 dipanggil quote () yang dipanggil bila-bila masa borang yang dikemukakan. 1625 01:15:30,440 --> 01:15:31,800 Dan apa yang saya lakukan adalah ini. 1626 01:15:31,800 --> 01:15:35,730 Saya mengisytiharkan pembolehubah dalam JavaScript dipanggil url, menyimpan nilai 1627 01:15:35,730 --> 01:15:38,650 quote.php? simbol =. 1628 01:15:38,650 --> 01:15:44,220 Dalam erti kata lain, saya sendiri bermula untuk menyediakan permintaan HTTP, dan kemudian 1629 01:15:44,220 --> 01:15:49,250 Saya concatenating sebiji dengan ditambah dengan apa sahaja elemen dengan ID yang 1630 01:15:49,250 --> 01:15:54,190 simbol adalah, notis adalah bahawa medan teks sampai di sini. 1631 01:15:54,190 --> 01:15:56,630 Jadi hanya suka kami mempunyai bentuk pada masa lalu. 1632 01:15:56,630 --> 01:16:01,450 >> Dan kemudian ia ternyata dalam jQuery, jika anda panggilan. Val (), yang menyeru dari Val a 1633 01:16:01,450 --> 01:16:05,900 fungsi, fungsi nilai, yang mendapat apa sahaja yang pengguna telah ditaip masuk 1634 01:16:05,900 --> 01:16:08,920 Dan kemudian semua trafik rangkaian yang berlaku adalah ini. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> Dan sebagai diketepikan, tanda dolar adalah hanya catatan trengkas. 1637 01:16:13,720 --> 01:16:16,860 Ia benar-benar jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Dapatkan saya JSON dari URL ini, dan apabila permintaan itu datang kembali, panggilan ini 1639 01:16:21,520 --> 01:16:26,550 fungsi dan lulus sebagai hujah apa sahaja pulang dari pelayan. 1640 01:16:26,550 --> 01:16:31,205 >> Jadi, dalam erti kata lain, jika saya kembali ke penyemak imbas, dan saya kembali ke quote.php, 1641 01:16:31,205 --> 01:16:35,590 pelayar apa saya lakukan adalah mendapatkan Sebahagian ini data. 1642 01:16:35,590 --> 01:16:38,930 Dan apabila saya pergi ke laman web ini di sini, notis jika kita bukannya pergi ke rangkaian 1643 01:16:38,930 --> 01:16:43,820 Jenis tab dan jelas, dan kemudian di sesuatu seperti GOOG untuk Google dan Dapatkan 1644 01:16:43,820 --> 01:16:46,340 Quote, notis halaman tidak berubah. 1645 01:16:46,340 --> 01:16:50,990 Tetapi permintaan HTTP itu dibuat, dan apa datang kembali di sini jika kita melihat 1646 01:16:50,990 --> 01:16:56,130 tindak balas adalah sejumlah besar JSON kita diakses akhirnya dengan 1647 01:16:56,130 --> 01:16:58,070 baris ini mudah di sini. 1648 01:16:58,070 --> 01:17:00,150 >> Data adalah apa yang telah mendapat dari pelayan. 1649 01:17:00,150 --> 01:17:02,120 Harga adalah nama utama saya mengambil berat tentang. 1650 01:17:02,120 --> 01:17:05,230 Jadi data.price memberikan saya itu. 1651 01:17:05,230 --> 01:17:07,540 >> Sekarang pula, dan ini adalah contoh yang lalu. 1652 01:17:07,540 --> 01:17:09,280 Anda boleh melakukannya lagi lebih dengan halaman. 1653 01:17:09,280 --> 01:17:12,440 Satu benar-benar, baik dua. 1654 01:17:12,440 --> 01:17:14,780 Kita boleh membawa balik tag, jika anda ingat ini. 1655 01:17:14,780 --> 01:17:15,850 Itulah JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Kita boleh berbuat demikian. 1657 01:17:17,110 --> 01:17:17,690 Sangat menarik. 1658 01:17:17,690 --> 01:17:18,800 Kami akan meninggalkan bahawa cliffhanger a. 1659 01:17:18,800 --> 01:17:21,590 >> Tetapi yang lebih excitingly, anda boleh melakukan perkara-perkara seperti ini. 1660 01:17:21,590 --> 01:17:25,940 Jika saya pergi ke lokasi geo-1, ternyata Chrome yang tahu bahawa kita berada di 1661 01:17:25,940 --> 01:17:30,672 latitud longitud 42,37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Jadi ada lebih ada di pelupusan anda. 1663 01:17:32,940 --> 01:17:34,290 Tetapi lebih kepada yang minggu depan. 1664 01:17:34,290 --> 01:17:35,540 Jumpa anda hari ini. 1665 01:17:35,540 --> 01:17:37,558