1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Hi tất cả mọi người. 3 00:00:07,030 --> 00:00:09,530 Chúng tôi đang đi để bắt đầu chỉ cần một vài phút đầu 4 00:00:09,530 --> 00:00:11,738 vì chúng tôi có một toàn bộ rất nhiều vật liệu để có được thông qua. 5 00:00:11,738 --> 00:00:12,790 Tôi Hannah. 6 00:00:12,790 --> 00:00:13,865 Tôi là một TF. 7 00:00:13,865 --> 00:00:16,239 Maria sẽ được tham gia chúng tôi chỉ trong một vài phút. 8 00:00:16,239 --> 00:00:17,560 Cô dạy phần bên phải trước. 9 00:00:17,560 --> 00:00:19,351 Tôi dạy phần bên phải sau đó, vì vậy chúng tôi đang đi 10 00:00:19,351 --> 00:00:21,200 để giữ cho nó vào giờ rưỡi. 11 00:00:21,200 --> 00:00:25,490 >> Vì vậy, như bạn sẽ thấy ở đây, chúng tôi có khá một vài chủ đề chúng ta cần phải nhận được thông qua, 12 00:00:25,490 --> 00:00:27,200 vì vậy chúng tôi sẽ được đi một chút nhanh. 13 00:00:27,200 --> 00:00:31,140 Nhưng nếu tại bất kỳ điểm nào chúng ta nói một cái gì đó quá nhanh hoặc bạn không hiểu, 14 00:00:31,140 --> 00:00:33,170 cảm thấy tự do để gây cản trở với câu hỏi. 15 00:00:33,170 --> 00:00:36,610 Chúng tôi muốn để có thể làm cho một này xem xét phiên hữu ích cho tất cả các bạn 16 00:00:36,610 --> 00:00:37,973 càng tốt. 17 00:00:37,973 --> 00:00:38,920 Thật tuyệt vời. 18 00:00:38,920 --> 00:00:41,650 >> Vì vậy, chúng ta hãy nhảy ngay với một số chủ đề mà chúng tôi thực sự 19 00:00:41,650 --> 00:00:46,980 rất, phủ rất ngắn gọn cho các đố 0 trong phiên xét đố 0. 20 00:00:46,980 --> 00:00:48,840 Vì vậy, bắt đầu với danh sách liên kết. 21 00:00:48,840 --> 00:00:52,090 Vì vậy, chỉ cần đảm bảo rằng bạn có một số kiến thức cơ bản về danh sách liên kết 22 00:00:52,090 --> 00:00:55,110 và cảm thấy thoải mái làm một số các hoạt động cơ bản. 23 00:00:55,110 --> 00:00:58,560 >> Vì vậy, chỉ để xem lại, liên kết danh sách này là tốt hơn so với mảng 24 00:00:58,560 --> 00:01:01,020 bởi vì họ có thể phát triển năng động. 25 00:01:01,020 --> 00:01:03,300 Vì vậy, chúng tôi đã có lợi thế rất lớn. 26 00:01:03,300 --> 00:01:06,031 Chúng tôi đã nhìn thấy chúng sử dụng trong bảng băm khi chúng ta 27 00:01:06,031 --> 00:01:08,280 không biết chính xác có bao nhiêu điều chúng ta sẽ muốn 28 00:01:08,280 --> 00:01:10,900 để chèn vào các cấu trúc dữ liệu của chúng tôi. 29 00:01:10,900 --> 00:01:15,700 Thật không may, chúng tôi có miếng danh sách liên kết trên tất cả các bộ nhớ, 30 00:01:15,700 --> 00:01:20,820 vì vậy chúng tôi sẽ không nhất thiết phải có thể làm thời gian truy cập liên tục 31 00:01:20,820 --> 00:01:22,502 để bất kỳ phần tử trong danh sách liên kết. 32 00:01:22,502 --> 00:01:24,210 Để tìm một yếu tố cụ thể, chúng tôi 33 00:01:24,210 --> 00:01:26,510 phải lặp tất cả các cách từ đầu. 34 00:01:26,510 --> 00:01:30,610 Vì vậy, hãy nhớ rằng hầu hết các hoạt động cơ bản là omega của 1. 35 00:01:30,610 --> 00:01:32,130 Vì vậy, chèn chỉ là sẽ mất 1. 36 00:01:32,130 --> 00:01:37,520 Xóa là sẽ mất n kể từ khi chúng tôi phải đi tìm nó từ danh sách. 37 00:01:37,520 --> 00:01:39,260 Và tìm kiếm có thể mất, lúc tồi tệ nhất, n. 38 00:01:39,260 --> 00:01:42,330 Chúng tôi không thể làm một cái gì đó như tìm kiếm nhị phân trên một danh sách liên kết 39 00:01:42,330 --> 00:01:45,101 vì chúng ta không thể chỉ nhảy ngẫu nhiên vào giữa. 40 00:01:45,101 --> 00:01:45,600 Mát. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Thật tuyệt vời. 43 00:01:48,960 --> 00:01:50,270 >> Một chút của ngăn xếp. 44 00:01:50,270 --> 00:01:53,980 Điều này, một lần nữa, đã đưa vào bài kiểm tra 0, vì vậy bạn nên được siêu thoải mái với nó. 45 00:01:53,980 --> 00:01:57,210 Nhưng đối với ngăn xếp, chúng tôi yêu cầu bạn để nhớ một chồng khay. 46 00:01:57,210 --> 00:01:59,940 Và nó sẽ là lần đầu tiên trong, kéo ra. 47 00:01:59,940 --> 00:02:02,272 Vì vậy, chúng tôi ngăn xếp mọi thứ lên trong ngăn xếp, và sau đó 48 00:02:02,272 --> 00:02:04,980 nếu chúng ta đang cố gắng để có một cái gì đó off-- mà chúng ta gọi là popping off 49 00:02:04,980 --> 00:02:06,581 các stack-- chúng tôi đi ra khỏi đầu. 50 00:02:06,581 --> 00:02:09,289 Và nếu chúng ta muốn đặt một cái gì trong ngăn xếp, chúng tôi gọi nó đẩy. 51 00:02:09,289 --> 00:02:13,170 Vì vậy, nó luôn luôn được lớn lên từ đáy như một chồng khay. 52 00:02:13,170 --> 00:02:14,540 Thật tuyệt vời. 53 00:02:14,540 --> 00:02:17,607 >> Chúng tôi đã nhìn thấy đống thực hiện với cả hai danh sách và các mảng liên kết. 54 00:02:17,607 --> 00:02:19,440 Nếu bạn đang thực hiện với mảng, bạn muốn 55 00:02:19,440 --> 00:02:22,350 để đảm bảo theo dõi cả kích thước và dung lượng. 56 00:02:22,350 --> 00:02:27,540 Vì vậy, kích thước là có được hiện nay số thứ trong ngăn xếp của bạn, 57 00:02:27,540 --> 00:02:32,900 trong khi năng lực là tổng số điều bạn có thể lưu trữ trong ngăn xếp của bạn. 58 00:02:32,900 --> 00:02:34,220 Mát. 59 00:02:34,220 --> 00:02:35,767 >> Rất tương tự như vậy, chúng tôi có hàng đợi. 60 00:02:35,767 --> 00:02:38,850 Trong trường hợp này, thay vì nghĩ về một chồng khay, suy nghĩ của một dòng. 61 00:02:38,850 --> 00:02:40,697 Đây sẽ là lần đầu tiên, ra trước. 62 00:02:40,697 --> 00:02:42,780 Vì vậy, nếu bạn đang xếp hàng cho một cái gì đó tại cửa hàng, 63 00:02:42,780 --> 00:02:46,920 chúng tôi hy vọng rằng người đầu tiên trong dòng là sẽ được giúp đỡ đầu tiên. 64 00:02:46,920 --> 00:02:49,350 >> Thay vì nói push và bật như chúng tôi làm cho chồng, 65 00:02:49,350 --> 00:02:52,000 chúng ta chỉ cần nói enqueue và dequeue. 66 00:02:52,000 --> 00:02:54,970 Và một lần nữa, nếu bạn là thực hiện điều này với một mảng, 67 00:02:54,970 --> 00:02:56,720 chúng ta cần phải theo dõi không chỉ có kích thước 68 00:02:56,720 --> 00:03:02,390 và năng lực, nhưng cũng là người đứng đầu, mà là có được mặt trước của hàng đợi của chúng tôi. 69 00:03:02,390 --> 00:03:03,010 Mát. 70 00:03:03,010 --> 00:03:05,770 Bất kỳ câu hỏi nào về điều đó? 71 00:03:05,770 --> 00:03:06,320 Thật tuyệt vời. 72 00:03:06,320 --> 00:03:07,640 Di chuyển ngay cùng. 73 00:03:07,640 --> 00:03:08,564 >> OK, bảng băm. 74 00:03:08,564 --> 00:03:10,605 Đây là nơi mà nó bắt đầu có được thực sự thú vị. 75 00:03:10,605 --> 00:03:14,150 Vì vậy, một bảng băm là một trong những thực của một mảng kết hợp. 76 00:03:14,150 --> 00:03:16,700 Vì vậy, về cơ bản những gì đã xảy ra là chúng tôi có tất cả các đầu vào này, 77 00:03:16,700 --> 00:03:18,750 và chúng tôi cung cấp cho nó để băm chức năng mà nói, 78 00:03:18,750 --> 00:03:21,840 OK, đây là nơi ở bảng băm nó thuộc về. 79 00:03:21,840 --> 00:03:24,860 >> Vì vậy, các hàm băm đơn giản nhất mà chúng ta đã nhìn thấy được chỉ cần nói, 80 00:03:24,860 --> 00:03:28,170 OK, giả sử chúng ta muốn đặt chuỗi trong bảng băm của chúng tôi. 81 00:03:28,170 --> 00:03:30,870 Và một ý tưởng thực sự đơn giản có thể nói, OK, 82 00:03:30,870 --> 00:03:34,350 chúng ta chỉ cần sắp xếp theo chữ cái đầu tiên của từ. 83 00:03:34,350 --> 00:03:37,570 Vì vậy, bạn có thể thấy ở đây, chúng ta lấy chuối, chúng tôi đặt nó thông qua một hàm băm, 84 00:03:37,570 --> 00:03:40,190 và nó nói, hey, mà nên đi ở chỉ số 1. 85 00:03:40,190 --> 00:03:45,120 >> Vì vậy, chúng tôi về cơ bản có thể nghĩ ra một hash bảng như một loạt các thùng khác nhau. 86 00:03:45,120 --> 00:03:49,880 Và mỗi người trong những thùng được đi để giữ người đứng đầu một danh sách liên kết. 87 00:03:49,880 --> 00:03:55,030 Và trong danh sách liên kết là nơi mà chúng ta có thể thực sự đặt phần khác nhau của dữ liệu. 88 00:03:55,030 --> 00:03:57,820 >> Nhiều hơn như vậy lặn một chút thành một hàm băm, đây là 89 00:03:57,820 --> 00:03:59,870 ví dụ tôi chỉ mô tả nơi chúng tôi chỉ nói, 90 00:03:59,870 --> 00:04:02,460 OK, lấy chữ cái đầu tiên của từ và chúng tôi 91 00:04:02,460 --> 00:04:03,990 sẽ sắp xếp nó vào xô. 92 00:04:03,990 --> 00:04:08,490 Vì vậy, có lẽ, sẽ có 26 thùng, một cho mỗi chữ cái của bảng chữ cái. 93 00:04:08,490 --> 00:04:10,090 Tại sao không phải là này một hàm băm tốt? 94 00:04:10,090 --> 00:04:13,461 Điều gì làm cho này không lý tưởng? 95 00:04:13,461 --> 00:04:13,960 Yeah. 96 00:04:13,960 --> 00:04:15,790 >> Đung Bạn đang đi để có va chạm. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Yeah, chính xác. 98 00:04:16,390 --> 00:04:18,000 Bạn sẽ có va chạm. 99 00:04:18,000 --> 00:04:18,954 Vì vậy, đó là một chuyện. 100 00:04:18,954 --> 00:04:21,620 Và chúng ta sẽ nói về cách chúng tôi có thể sửa chữa va chạm chỉ trong một giây. 101 00:04:21,620 --> 00:04:23,980 Một vấn đề khác với điều này hàm băm cụ thể 102 00:04:23,980 --> 00:04:25,980 là khác nhau của chúng tôi xô đang có được 103 00:04:25,980 --> 00:04:28,960 kích cỡ của khá mạnh khác nhau. 104 00:04:28,960 --> 00:04:33,840 >> Chúng tôi biết rằng có một toàn bộ rất nhiều nhiều từ bắt đầu bằng A hơn X, 105 00:04:33,840 --> 00:04:38,980 vì vậy chúng ta sẽ có rất xô không cân bằng trong bảng băm của chúng tôi. 106 00:04:38,980 --> 00:04:40,050 Mát. 107 00:04:40,050 --> 00:04:41,340 Vì vậy, yeah, chúng ta hãy quay trở lại các điểm va chạm. 108 00:04:41,340 --> 00:04:42,900 Chúng ta sẽ làm gì nếu có một vụ va chạm? 109 00:04:42,900 --> 00:04:44,490 >> Chúng tôi có một vài lựa chọn khác nhau. 110 00:04:44,490 --> 00:04:47,600 Vì vậy, một, vì vậy giả sử chúng ta đang cố gắng đặt berry vào bảng băm của chúng tôi. 111 00:04:47,600 --> 00:04:50,370 Và chúng ta thấy, oh, chúng tôi muốn để đặt nó trong chỉ số 1, 112 00:04:50,370 --> 00:04:52,070 nhưng chuối đã sống ở đó. 113 00:04:52,070 --> 00:04:53,110 Chúng ta sẽ làm gì? 114 00:04:53,110 --> 00:04:54,560 Chúng tôi có hai tùy chọn chính. 115 00:04:54,560 --> 00:04:58,050 >> Số một là chúng ta có thể nói, OK, không có phòng trong chỉ số 1, 116 00:04:58,050 --> 00:05:03,210 nhưng hãy chỉ tiếp tục tìm kiếm thông qua cho đến khi chúng ta có thể tìm thấy một chỗ mở. 117 00:05:03,210 --> 00:05:08,490 Vì vậy, chúng tôi sẽ nói, OK, hãy đặt nó ở vị trí 3. 118 00:05:08,490 --> 00:05:09,240 Đó là một lựa chọn. 119 00:05:09,240 --> 00:05:11,470 Đó gọi là tuyến tính thăm dò. 120 00:05:11,470 --> 00:05:15,500 >> Và một lựa chọn thứ hai là nói, OK, tốt, chúng ta hãy làm cho mỗi người trong các xô 121 00:05:15,500 --> 00:05:17,470 là người đứng đầu của danh sách liên kết. 122 00:05:17,470 --> 00:05:21,910 Và đó là OK nếu có nhiều hơn một điều trong một cái xô. 123 00:05:21,910 --> 00:05:23,820 Chúng tôi chỉ cần đi để thêm nó lên phía trước. 124 00:05:23,820 --> 00:05:26,032 Vì vậy, ở đây bạn có thể thấy, OK, khi chúng ta chèn berry, chúng tôi 125 00:05:26,032 --> 00:05:28,240 chỉ cần lấy chuối, loại đẩy nó qua một chút 126 00:05:28,240 --> 00:05:29,842 và ném một quả mọng trong đó. 127 00:05:29,842 --> 00:05:31,050 Và đó cũng hoàn toàn tốt. 128 00:05:31,050 --> 00:05:32,830 Điều này được gọi là xâu chuỗi riêng biệt. 129 00:05:32,830 --> 00:05:38,100 Bạn có thể nghĩ về điều này như loại như một mảng của người đứng đầu các danh sách liên kết. 130 00:05:38,100 --> 00:05:41,950 Bất kỳ câu hỏi về băm bảng, các hàm băm? 131 00:05:41,950 --> 00:05:44,290 Thật tuyệt vời. 132 00:05:44,290 --> 00:05:45,470 >> Cây và cố gắng. 133 00:05:45,470 --> 00:05:47,287 Vì vậy, một cây là bất kỳ loại của cấu trúc dữ liệu 134 00:05:47,287 --> 00:05:49,453 trong đó có một số loại của hệ thống phân cấp hoặc một số loại 135 00:05:49,453 --> 00:05:51,247 của bảng xếp hạng cho các đối tượng khác nhau của bạn. 136 00:05:51,247 --> 00:05:53,580 Và điều này sẽ trở thành siêu rõ ràng khi chúng ta thấy một ví dụ. 137 00:05:53,580 --> 00:05:56,960 Chúng tôi thấy có cố gắng, cùng với bảng băm, trong pset5-- 138 00:05:56,960 --> 00:06:00,700 trong đó, một lần nữa, trò chơi hoàn toàn công bằng cho điều này quiz-- như dữ liệu khác 139 00:06:00,700 --> 00:06:03,110 cấu trúc mà chúng ta có thể lưu trữ những thứ khác nhau. 140 00:06:03,110 --> 00:06:06,782 Trong trường hợp của từ điển, chúng tôi lưu trữ một loạt các từ. 141 00:06:06,782 --> 00:06:08,240 Vì vậy, chúng ta hãy nhìn vào một số cây. 142 00:06:08,240 --> 00:06:10,190 Vì vậy, đây là một ví dụ của một cái cây. 143 00:06:10,190 --> 00:06:13,105 Nó có một loại cấu trúc, rằng cấu trúc phân cấp, 144 00:06:13,105 --> 00:06:15,920 nơi bạn có thể thấy rằng nút này 1 ở đầu 145 00:06:15,920 --> 00:06:20,750 có một số loại cấp bậc trên 2 và 3, mà là trên 4, 5, 6 và 7, 146 00:06:20,750 --> 00:06:22,860 mà là trên 8 và 9. 147 00:06:22,860 --> 00:06:25,210 Vì vậy, đó là tất cả chúng ta có ý nghĩa của một cây, vì vậy bạn có thể chỉ cần loại 148 00:06:25,210 --> 00:06:26,660 của hình ảnh này trong đầu của bạn. 149 00:06:26,660 --> 00:06:29,050 >> Bây giờ, chúng tôi có một vài cây chuyên biệt hơn. 150 00:06:29,050 --> 00:06:31,070 Vì vậy, một ví dụ là một cây nhị phân. 151 00:06:31,070 --> 00:06:33,290 Và một cây nhị phân là, một lần nữa, chỉ cần đi để được 152 00:06:33,290 --> 00:06:37,040 một cấu trúc dữ liệu với một số loại hệ thống cấp bậc, nhưng mỗi nút 153 00:06:37,040 --> 00:06:38,650 có thể có nhiều nhất là hai đứa con. 154 00:06:38,650 --> 00:06:41,530 Đó là nơi mà các nhị phân từ xuất phát từ. 155 00:06:41,530 --> 00:06:43,410 Vì vậy, đây là một ví dụ của một cây nhị phân. 156 00:06:43,410 --> 00:06:45,720 Vì vậy, đó là một loại nhỏ hơn của cây. 157 00:06:45,720 --> 00:06:48,960 >> Bây giờ chúng ta có được thậm chí nhiều hơn và cụ thể nói về nhị phân tìm kiếm nhị phân trees-- 158 00:06:48,960 --> 00:06:51,310 cây, thay. 159 00:06:51,310 --> 00:06:56,430 Vì vậy, đây là ý tưởng không chỉ gây ra mỗi nút có ít nhất hai con, 160 00:06:56,430 --> 00:07:00,300 nhưng tất cả các trẻ em đến trái đang có được nhỏ hơn 161 00:07:00,300 --> 00:07:03,450 và tất cả các em đến đúng sẽ được lớn hơn. 162 00:07:03,450 --> 00:07:05,890 Vì vậy, chúng tôi chỉ thông báo trong cây nhị phân, có 163 00:07:05,890 --> 00:07:08,650 không có mối quan hệ giữa các số. 164 00:07:08,650 --> 00:07:12,990 Nhưng trong tìm kiếm nhị phân của chúng tôi cây, chúng ta thấy, OK, đây là 44. 165 00:07:12,990 --> 00:07:17,080 Và tất cả các số bên trái của 44 mọi thứ nhỏ hơn và bên phải 166 00:07:17,080 --> 00:07:17,920 là lớn hơn. 167 00:07:17,920 --> 00:07:20,130 >> Và đó nắm giữ tại mỗi mức của cây. 168 00:07:20,130 --> 00:07:24,810 Vì vậy, ở đây, đây là nhỏ hơn 22 và số này lớn hơn 22. 169 00:07:24,810 --> 00:07:26,390 Và đó là cây tìm kiếm nhị phân. 170 00:07:26,390 --> 00:07:28,900 Tại sao chúng ta nghĩ rằng nó được gọi là một cây tìm kiếm nhị phân? 171 00:07:28,900 --> 00:07:30,651 Thuật toán nào nó nhắc nhở bạn về? 172 00:07:30,651 --> 00:07:31,650 Đung tìm kiếm nhị phân. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: tìm kiếm nhị phân. 174 00:07:32,480 --> 00:07:35,150 Bởi vì nếu bạn đang tìm kiếm một số lượng cụ thể trong cây này, 175 00:07:35,150 --> 00:07:38,800 tại mọi điểm, bạn có thể chỉ cần gõ và một nửa cây, đó là rất tốt. 176 00:07:38,800 --> 00:07:43,800 Và đó sẽ cung cấp cho chúng tôi một cái gì đó trông rất giống tìm kiếm nhị phân. 177 00:07:43,800 --> 00:07:45,870 Bất kỳ câu hỏi? 178 00:07:45,870 --> 00:07:47,570 Tất cả các bên phải, thoáng mát. 179 00:07:47,570 --> 00:07:48,560 >> Tất cả các quyền, cố gắng. 180 00:07:48,560 --> 00:07:49,657 Yêu thích của mọi người. 181 00:07:49,657 --> 00:07:51,990 Vì vậy, đây là ví dụ mà chúng tôi đã nhìn thấy một bó trong lớp. 182 00:07:51,990 --> 00:07:54,710 Và một lần nữa, điều này chỉ khác là cách mà chúng ta có thể lưu trữ dữ liệu. 183 00:07:54,710 --> 00:07:57,530 Trong trường hợp của từ điển, một lần nữa, này chỉ là có được chuỗi. 184 00:07:57,530 --> 00:08:00,870 Vì vậy, chúng ta hãy xem những gì này thực sự trông giống như ở một mức độ thấp hơn một chút. 185 00:08:00,870 --> 00:08:03,690 >> Vì vậy, chúng ta hãy có một cái nhìn tại một nút trong một Trie. 186 00:08:03,690 --> 00:08:07,532 Và chúng ta thấy, OK, có đi là một Boolean và một nút, 187 00:08:07,532 --> 00:08:09,170 một con trỏ đến một node. 188 00:08:09,170 --> 00:08:11,400 Và chúng ta thấy rằng Boolean được gọi là is_word. 189 00:08:11,400 --> 00:08:13,490 Vì vậy, về cơ bản, đó là sẽ tương ứng 190 00:08:13,490 --> 00:08:16,750 để những hình tam giác nhỏ mà nói, nếu bạn đã nhận được ở đây, 191 00:08:16,750 --> 00:08:19,100 bạn đã tìm thấy một từ hoàn chỉnh. 192 00:08:19,100 --> 00:08:23,670 >> Chúng ta biết rằng "Turing" hơn đây là một từ hoàn chỉnh, 193 00:08:23,670 --> 00:08:28,030 trong khi chỉ T-U-R không phải là một từ bởi vì chúng ta không thấy rằng đồng bằng nhỏ. 194 00:08:28,030 --> 00:08:31,440 Và đó là đồng bằng nhỏ, một lần nữa, tương ứng với is_word này, 195 00:08:31,440 --> 00:08:34,480 is_word Boolean này. 196 00:08:34,480 --> 00:08:36,320 Và sau đó chúng tôi có một mảng của trẻ em. 197 00:08:36,320 --> 00:08:39,860 Vì vậy, ở mỗi cấp, bạn có một nút cụ thể, 198 00:08:39,860 --> 00:08:42,470 và rằng các điểm nút để một mảng của toàn bộ bảng chữ cái. 199 00:08:42,470 --> 00:08:44,346 >> Vì vậy, bạn có thể thấy, một lần nữa, trong picture-- này tôi 200 00:08:44,346 --> 00:08:48,170 sẽ tiếp tục trở lại và nhảy forth-- rằng mảng ở đầu 201 00:08:48,170 --> 00:08:51,640 có một loạt các khác nhau các nút sắp tắt của nó. 202 00:08:51,640 --> 00:08:57,140 Nó có 26 hay 27 nếu bạn muốn để bao gồm một nhân vật phụ. 203 00:08:57,140 --> 00:09:01,320 Và điều này cho chúng ta một cách để lưu trữ dữ liệu của chúng tôi 204 00:09:01,320 --> 00:09:04,450 trong một cách mà có thể được xem xét trên mà bạn có thể tìm kiếm siêu nhanh. 205 00:09:04,450 --> 00:09:06,650 Thời gian tra cứu cho một Trie là gì? 206 00:09:06,650 --> 00:09:07,970 >> Đung [không nghe được]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Yeah. 208 00:09:08,300 --> 00:09:09,550 Về lý thuyết, đó là thời gian liên tục. 209 00:09:09,550 --> 00:09:13,230 Nó chỉ có được kích thước của từ mà bạn muốn tìm kiếm. 210 00:09:13,230 --> 00:09:15,950 Ngay cả nếu chúng ta thêm một zillion nhiều từ để Trie của chúng tôi, 211 00:09:15,950 --> 00:09:18,160 nó sẽ không đưa chúng ta bất kỳ thời gian để xác định 212 00:09:18,160 --> 00:09:19,690 nếu một từ đã cho là trong Trie. 213 00:09:19,690 --> 00:09:21,412 Vì vậy, đó là thực sự tốt đẹp. 214 00:09:21,412 --> 00:09:23,697 >> Đung Em mới khởi tạo mảng đó? 215 00:09:23,697 --> 00:09:24,780 Bạn đã bỏ lỡ một hoặc hai điểm. 216 00:09:24,780 --> 00:09:26,130 Bạn có thể chỉ nói về mà cho một thứ hai? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Chắc chắn, hoàn toàn. 218 00:09:26,680 --> 00:09:27,590 Câu hỏi hay. 219 00:09:27,590 --> 00:09:31,140 Câu hỏi đặt ra là, chúng tôi có một mảng đó 220 00:09:31,140 --> 00:09:34,180 sẽ có nút như sao trái ngược với chỉ nút, phải không? 221 00:09:34,180 --> 00:09:35,180 Mát. 222 00:09:35,180 --> 00:09:37,990 Vì vậy, ở đây những gì chúng ta đang nói là mảng của chúng tôi chỉ là 223 00:09:37,990 --> 00:09:40,035 sẽ là con trỏ đến mảng khác. 224 00:09:40,035 --> 00:09:42,910 Vì vậy, nó essentially-- nó loại cảm thấy như một danh sách liên kết theo cách này 225 00:09:42,910 --> 00:09:46,620 nơi mỗi người trong các con chỉ cần trỏ đến nút tiếp theo. 226 00:09:46,620 --> 00:09:49,030 >> Và cách mà chúng tôi thực sự xác định, hey, OK, 227 00:09:49,030 --> 00:09:52,320 chúng tôi đã lặp thông qua toàn bộ một từ, là từ này trong từ điển, 228 00:09:52,320 --> 00:09:54,476 chúng ta chỉ cần kiểm tra is_word này. 229 00:09:54,476 --> 00:09:55,100 Great câu hỏi. 230 00:09:55,100 --> 00:09:55,675 Yeah. 231 00:09:55,675 --> 00:09:56,216 Đung OK. 232 00:09:56,216 --> 00:09:57,470 Vì vậy, thời gian chạy cho các Trie là gì? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Chắc chắn rồi. 234 00:09:58,386 --> 00:10:01,852 Vì vậy, thời gian chạy cho một Trie cho tra cứu là có được thời gian liên tục. 235 00:10:01,852 --> 00:10:04,310 Vì vậy, nó chỉ có được sự số của các chữ cái trong từ. 236 00:10:04,310 --> 00:10:06,310 Nó không phụ thuộc vào Kích thước của từ điển 237 00:10:06,310 --> 00:10:09,510 hoặc kích thước của cấu trúc dữ liệu. 238 00:10:09,510 --> 00:10:12,170 Vì vậy, đây là một ví dụ đơn giản hơn một chút. 239 00:10:12,170 --> 00:10:15,430 >> Trong trường hợp này, bạn có thể thấy rằng dơi từ có trong từ điển 240 00:10:15,430 --> 00:10:18,900 và bạn có zoom, nhưng bạn không có một cái gì đó giống như sở thú. 241 00:10:18,900 --> 00:10:20,050 Làm thế nào chúng ta sẽ làm cho sở thú? 242 00:10:20,050 --> 00:10:24,276 Làm thế nào để chúng ta thêm thú với chúng tôi từ điển, Trie của chúng tôi? 243 00:10:24,276 --> 00:10:24,776 Yeah. 244 00:10:24,776 --> 00:10:27,014 >> Đung Hãy is_word đúng đối với [không nghe được]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Tốt. 246 00:10:27,930 --> 00:10:31,731 Vì vậy, chúng tôi muốn nói Z-O-O, và sau đó chúng tôi muốn kiểm tra tắt hộp đó là tốt. 247 00:10:31,731 --> 00:10:32,230 Thật tuyệt. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Hãy so sánh rất ngắn gọn cố gắng so với bảng băm. 250 00:10:37,930 --> 00:10:39,770 Cố gắng là thực sự tuyệt vời bởi vì, như chúng tôi đã nói, 251 00:10:39,770 --> 00:10:41,610 họ cung cấp tra cứu hằng số thời gian. 252 00:10:41,610 --> 00:10:44,285 Nhưng bất lợi rất lớn là họ đang humongous. 253 00:10:44,285 --> 00:10:46,160 Bạn có thể có cảm giác, thậm chí bằng cách nhìn vào nó, 254 00:10:46,160 --> 00:10:48,454 rằng nó sẽ mất một số tiền rất lớn của bộ nhớ. 255 00:10:48,454 --> 00:10:50,620 Vì vậy, chúng ta sẽ có nhiều lớn hơn bảng băm, 256 00:10:50,620 --> 00:10:52,270 nhưng họ sẽ cung cấp cho chúng tôi lần tra cứu nhanh hơn nhiều. 257 00:10:52,270 --> 00:10:54,478 Vì vậy, đó là loại của bạn cân bằng, những gì mà bạn quan tâm, 258 00:10:54,478 --> 00:10:57,350 cho dù đó là tốc độ hoặc bộ nhớ. 259 00:10:57,350 --> 00:11:02,251 Bất kỳ câu hỏi về điều đó, tất cả các cấu trúc dữ liệu C. 260 00:11:02,251 --> 00:11:02,750 Đẹp. 261 00:11:02,750 --> 00:11:03,250 ĐƯỢC. 262 00:11:03,250 --> 00:11:07,322 Chúng tôi sẽ chuyển sang một chút bit của phát triển web với Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 ĐƯỢC. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Bạn có thể sử dụng máy tính xách tay của tôi. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK, mát mẻ. 269 00:11:14,912 --> 00:11:17,120 Như chúng ta đi ngay bây giờ để web phát triển, chúng tôi nói chuyện một chút 270 00:11:17,120 --> 00:11:20,680 về việc thay đổi quyền truy cập file và thư mục 271 00:11:20,680 --> 00:11:24,190 để họ có thể được truy cập cho người sử dụng khác, với thế giới, 272 00:11:24,190 --> 00:11:28,640 và do đó chúng ta có thể xem như thế nào về cơ bản chúng ta có thể truyền đạt cho họ 273 00:11:28,640 --> 00:11:32,600 khi chúng ta phát triển những thứ như các trang web rằng chúng tôi đã chủ yếu được làm. 274 00:11:32,600 --> 00:11:36,400 >> Vì vậy, chúng ta đã thấy lệnh chmod, đó là thay đổi chế độ, về cơ bản. 275 00:11:36,400 --> 00:11:39,300 Đó là một lệnh Linux và nó thay đổi quyền truy cập 276 00:11:39,300 --> 00:11:40,410 của các đối tượng hệ thống tập tin. 277 00:11:40,410 --> 00:11:43,370 Và một đối tượng hệ thống tập tin là chỉ là một thư mục, tập tin, 278 00:11:43,370 --> 00:11:46,810 bất cứ điều gì mà bạn có thể thay đổi quyền hạn của. 279 00:11:46,810 --> 00:11:53,750 >> Vì vậy, để xem các tập tin cho phép, chúng ta gõ lệnh ls, danh sách, -l. 280 00:11:53,750 --> 00:11:56,500 Và khi chúng tôi loại đó, chúng tôi thường thấy một số điều khoản 281 00:11:56,500 --> 00:11:59,660 mà nhìn kiểu như thế này ở phía trước của một tên thư mục. 282 00:11:59,660 --> 00:12:01,260 Vì vậy, d đề cập đến thư mục. 283 00:12:01,260 --> 00:12:05,930 Và sau đó chúng tôi có ba Tam hoàng mà về cơ bản 284 00:12:05,930 --> 00:12:11,675 tham khảo các điều khoản của một trong hai một người sử dụng, một nhóm, hoặc thế giới. 285 00:12:11,675 --> 00:12:16,490 >> Các loại quyền mà chúng ta có thể có cho ba nhóm người 286 00:12:16,490 --> 00:12:20,830 hoặc là r để đọc, w cho viết, và x để thực thi. 287 00:12:20,830 --> 00:12:23,650 Và chúng ta có thể có những người cho nhóm và thế giới như là tốt. 288 00:12:23,650 --> 00:12:26,940 Điều khó là đôi khi khi chúng ta gõ lệnh chmod, 289 00:12:26,940 --> 00:12:32,960 chúng tôi sẽ nhập một số số đó bao gồm ba bit. 290 00:12:32,960 --> 00:12:36,990 Vì vậy, chúng ta có thể làm như thế 777 và rằng về cơ bản 291 00:12:36,990 --> 00:12:40,450 giới thiệu đến các giá trị gia tăng của mỗi của các hội Tam hoàng 292 00:12:40,450 --> 00:12:45,060 vì r sẽ chỉ đến 4, w sẽ ám chỉ đến 2, và x sẽ chỉ đến 1, 293 00:12:45,060 --> 00:12:50,020 do đó, khi cộng lại, mỗi người trong số các con số sẽ đi xuống đến một số tích lũy 294 00:12:50,020 --> 00:12:52,750 đến một giá trị tích lũy giữa 0 và 7. 295 00:12:52,750 --> 00:12:55,150 Vì vậy, chúng ta cũng có thể có 0 cho không có quyền truy cập vào tất cả. 296 00:12:55,150 --> 00:12:58,200 Và đó về cơ bản sẽ cung cấp cho chúng tôi các điều khoản cho một trong hai người sử dụng, 297 00:12:58,200 --> 00:13:00,450 nhóm, hoặc thế giới. 298 00:13:00,450 --> 00:13:02,620 Bất kỳ câu hỏi về điều này cho đến nay? 299 00:13:02,620 --> 00:13:05,331 >> Đung Bạn nói đọc là 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Yes. 301 00:13:06,164 --> 00:13:07,568 Đung [không nghe được]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Yup. 303 00:13:08,504 --> 00:13:11,790 Đung Và sau đó bằng cách thêm tất cả những những người khác sẽ chỉ ra số của bạn. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Yeah. 305 00:13:12,665 --> 00:13:14,970 Yeah. 306 00:13:14,970 --> 00:13:17,810 Đây là những câu hỏi lớn. 307 00:13:17,810 --> 00:13:20,490 Xinh xắn. 308 00:13:20,490 --> 00:13:25,340 Tiếp theo, chúng tôi nhảy vào HTML và một thêm chút thông tin về phát triển web. 309 00:13:25,340 --> 00:13:27,990 Vì vậy, HTML chỉ có nghĩa là HyperText Markup Language. 310 00:13:27,990 --> 00:13:30,460 Và đó là đánh dấu ngôn ngữ mà là một tiêu chuẩn 311 00:13:30,460 --> 00:13:32,720 mà nó được sử dụng để tạo ra các trang web. 312 00:13:32,720 --> 00:13:35,750 >> Nó được gọi là một ngôn ngữ đánh dấu bởi vì nó không thực sự biên soạn. 313 00:13:35,750 --> 00:13:40,310 Nó không nói làm thế nào một số mã nên được thực hiện hoặc bất cứ điều gì như thế. 314 00:13:40,310 --> 00:13:44,800 Nó chỉ phác họa và mô tả cách một web 315 00:13:44,800 --> 00:13:46,840 trang nên được thiết lập với mỗi phần tử của nó 316 00:13:46,840 --> 00:13:48,460 và làm thế nào họ nên tìm đến người sử dụng. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Một số trong các thẻ HTML mà chúng ta đã đi qua như sau. 319 00:13:57,110 --> 00:14:00,500 Tất cả các tài liệu HTML của chúng tôi bắt đầu với html DOCTYPE. 320 00:14:00,500 --> 00:14:02,550 Sau đó, chúng tôi luôn có các tag html. 321 00:14:02,550 --> 00:14:03,930 Chúng tôi có một cái đầu và một cơ thể. 322 00:14:03,930 --> 00:14:07,890 Và điều quan trọng là HTML có loại này của cấu trúc lồng nhau 323 00:14:07,890 --> 00:14:09,280 vì nó rất rõ ràng. 324 00:14:09,280 --> 00:14:13,200 Và sau đó nó trở nên rất rõ ràng khi chúng ta cần mở và thực sự tags gần. 325 00:14:13,200 --> 00:14:18,400 Và chúng ta luôn cần phải đóng thẻ mà chúng tôi đã mở. 326 00:14:18,400 --> 00:14:23,170 >> Và ở đây chúng tôi có một số các loại điều trước mà chúng ta muốn có. 327 00:14:23,170 --> 00:14:26,580 Vì vậy, chúng tôi có, ví dụ, danh hiệu CS50. 328 00:14:26,580 --> 00:14:31,980 Và sau đó, chúng tôi thực sự có thể liên kết một style sheet 329 00:14:31,980 --> 00:14:34,030 định nghĩa như thế nào chúng ta tạo kiểu cho trang web của chúng tôi. 330 00:14:34,030 --> 00:14:35,650 Đó là CSS. 331 00:14:35,650 --> 00:14:39,320 Chúng ta sẽ đi qua nó trong cặp đôi tiếp theo của các slide là tốt. 332 00:14:39,320 --> 00:14:42,580 >> Trong cơ thể, chúng tôi thiết một số lớp học và ID. 333 00:14:42,580 --> 00:14:45,860 Và như một lời nhắc nhở, một lần nữa, ID là duy nhất và các lớp học 334 00:14:45,860 --> 00:14:47,390 có thể được gán cho nhiều mặt hàng. 335 00:14:47,390 --> 00:14:52,110 Và điều đó chỉ có nghĩa là chúng ta có thể sử dụng các lớp và ID 336 00:14:52,110 --> 00:14:55,860 trong structures-- khác như vậy, cho Ví dụ, trong các tập tin CSS hay phong cách 337 00:14:55,860 --> 00:15:00,940 sheets-- để chỉ yếu tố cụ thể và về cơ bản nói rằng chúng tôi muốn phong cách 338 00:15:00,940 --> 00:15:03,280 hoặc thiết kế một số yếu tố trong một số cách đặc biệt. 339 00:15:03,280 --> 00:15:06,440 Và chúng tôi giới thiệu cho họ bởi ID và các lớp học của họ. 340 00:15:06,440 --> 00:15:09,870 Và chúng ta cũng có thể tham khảo những điều khác nhau của thẻ là tốt, 341 00:15:09,870 --> 00:15:13,830 nhưng ID và các lớp học chỉ cung cấp cho chúng tôi một số tính linh hoạt và cụ thể những gì chúng tôi 342 00:15:13,830 --> 00:15:15,850 muốn tham khảo. 343 00:15:15,850 --> 00:15:19,620 >> Vì vậy, chỉ là một ví dụ. 344 00:15:19,620 --> 00:15:22,730 Chúng tôi có thể, một lần nữa, trong vòng một tập tin CSS, nơi chúng tôi 345 00:15:22,730 --> 00:15:25,770 muốn xác định một số style-- nên màu sắc, phông chữ, 346 00:15:25,770 --> 00:15:30,340 và công cụ như that-- chúng ta có thể xác định phong cách cho một cơ thể. 347 00:15:30,340 --> 00:15:32,640 Vì vậy, đó sẽ xác định nó cho các từ khóa toàn bộ cơ thể. 348 00:15:32,640 --> 00:15:36,160 Nhưng sau đó chúng ta cũng có thể định nghĩa một phong cách cho một #title. 349 00:15:36,160 --> 00:15:40,390 Và một lần nữa, các hashtag đề cập đến của chúng tôi ID và dấu chấm đề cập đến lớp học của chúng tôi. 350 00:15:40,390 --> 00:15:44,760 >> Và sau đó cho .info, chúng tôi cũng có thể thiết lập một số thuộc tính. 351 00:15:44,760 --> 00:15:49,750 Và một lần nữa, khi chúng tôi quay trở lại, chúng tôi đã có của chúng tôi lớp được gọi là thông tin và tiêu đề ID của chúng tôi. 352 00:15:49,750 --> 00:15:53,422 Và chúng ta có thể thấy rằng chúng tôi tham khảo để chúng bằng #title và .info. 353 00:15:53,422 --> 00:15:55,380 Đung bạn sẽ nói dấu thăng [? chấp nhận tôi? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Xin lỗi? 355 00:15:55,725 --> 00:15:58,120 Đung bạn sẽ nói dấu thăng [? chấp nhận tôi? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: hashtag có nghĩa là ID, vì vậy #title 357 00:16:01,400 --> 00:16:07,890 đề cập đến bất cứ điều gì các yếu tố có ID này được gọi là tiêu đề. 358 00:16:07,890 --> 00:16:10,735 Và sau đó các dấu chấm dùng để chỉ một lớp. 359 00:16:10,735 --> 00:16:14,590 Vì vậy, .info đề cập đến yếu tố này bởi vì nó có các thông tin lớp học. 360 00:16:14,590 --> 00:16:15,090 Yup. 361 00:16:15,090 --> 00:16:17,905 >> Đung Tại sao bạn phân biệt chúng trong HTML? 362 00:16:17,905 --> 00:16:20,985 Tại sao bạn nói những điều nào đó ID và điều nào đó là lớp học? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Đó chỉ là lên đến you-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Lặp lại câu hỏi. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, xin lỗi. 366 00:16:25,370 --> 00:16:29,480 Tại sao chúng ta phân biệt các yếu tố nhất định như ID và các yếu tố khác như các lớp học? 367 00:16:29,480 --> 00:16:34,760 Đó chỉ là bởi vì nó thực sự thường là một sự lựa chọn thiết kế. 368 00:16:34,760 --> 00:16:38,520 Nó cung cấp cho bạn rất nhiều tính linh hoạt trong việc 369 00:16:38,520 --> 00:16:43,250 có thể nói rằng tôi muốn chi tiết cụ thể này có ID này vì họ muốn 370 00:16:43,250 --> 00:16:45,300 để làm được rất nhiều điều với nó, và tôi chỉ 371 00:16:45,300 --> 00:16:50,010 muốn xác định một phong cách, phong cách nhất định hoặc màu sắc bất cứ điều gì cho mục đó. 372 00:16:50,010 --> 00:16:52,630 Và cách để làm điều đó chỉ đem lại cho nó một ID. 373 00:16:52,630 --> 00:16:55,060 >> Và sau đó nếu tôi muốn có một vài mặt hàng khác nhau 374 00:16:55,060 --> 00:16:58,940 có mà, thay vì đi và thiết lập their-- 375 00:16:58,940 --> 00:17:03,840 thay vì làm nó bằng tag vì thẻ sẽ 376 00:17:03,840 --> 00:17:07,369 thiết lập các tế bào cho cả tag cho mỗi lần thẻ được sử dụng, 377 00:17:07,369 --> 00:17:09,740 bạn có thể thiết lập một lớp học cho nhiều mục. 378 00:17:09,740 --> 00:17:15,109 Và sau đó chỉ cần truy cập vào lớp đó và nói Tôi muốn phong cách lớp này theo cách đó. 379 00:17:15,109 --> 00:17:17,579 >> Và một lần nữa, các lớp có thể có nhiều mặt hàng khác nhau 380 00:17:17,579 --> 00:17:21,150 và ID phải là duy nhất. 381 00:17:21,150 --> 00:17:21,849 Lớn câu hỏi. 382 00:17:21,849 --> 00:17:25,339 Bất kỳ câu hỏi khác? 383 00:17:25,339 --> 00:17:26,220 OK, tuyệt vời. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Một lần nữa, đây là cách các selectors được tham chiếu trong CSS, với hashtag, 386 00:17:35,330 --> 00:17:40,031 với dấu chấm, hay không có bất cứ điều gì cho việc phân công các phong cách của một số thẻ, 387 00:17:40,031 --> 00:17:40,530 giống như cơ thể. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 Và ở đây chúng tôi có chung Cú pháp của cách thức này được thực hiện. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Để lặp lại một số tốt nhất thực hành cho HTML và CSS, 392 00:17:55,680 --> 00:17:59,170 chúng ta cần phải, một lần nữa, đóng tất cả các thẻ HTML mà chúng tôi mở. 393 00:17:59,170 --> 00:18:03,950 Và những gì chúng tôi đề nghị bạn làm cho các dự án cuối cùng của bạn, 394 00:18:03,950 --> 00:18:10,560 cũng như cho CS50 Tài chính, là làm cho chắc chắn rằng tất cả các HTML của bạn xác nhận. 395 00:18:10,560 --> 00:18:12,920 Và đó là thực hiện với W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> Và sau đó những gì chúng ta đã làm và những gì chúng tôi khuyên bạn nên làm 397 00:18:16,940 --> 00:18:19,790 được tách phong cách, vì vậy CSS từ ngữ đánh dấu HTML. 398 00:18:19,790 --> 00:18:24,210 Vì vậy, bất cứ điều gì liên quan đến cách trang của bạn sẽ trông trực quan 399 00:18:24,210 --> 00:18:27,330 và làm thế nào nó sẽ được sửa đổi nên đi vào một tài liệu CSS. 400 00:18:27,330 --> 00:18:33,880 Và sau đó đánh dấu của bạn nói như thế nào điều có quan hệ với nhau là HTML, 401 00:18:33,880 --> 00:18:37,550 và rằng cần phải đi vào bên trong các tài liệu HTML của bạn. 402 00:18:37,550 --> 00:18:38,590 Bất kỳ câu hỏi? 403 00:18:38,590 --> 00:18:39,226 MHM. 404 00:18:39,226 --> 00:18:42,628 >> Đung chính xác những gì đang xảy ra về với xác nhận trang 405 00:18:42,628 --> 00:18:47,945 khi chúng ta đang chứng thực HTML rằng [không nghe được] tạo ra? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Vậy what-- nghĩ đến em. 407 00:18:49,850 --> 00:18:53,020 Vì vậy, những gì chính xác là đi về với xác nhận trang 408 00:18:53,020 --> 00:18:55,570 và tại sao chúng ta cần phải làm điều đó? 409 00:18:55,570 --> 00:18:59,180 Về cơ bản, chúng ta cần phải làm điều đó bởi vì rất nhiều lần, trình duyệt của bạn, 410 00:18:59,180 --> 00:19:01,390 nếu bạn không đóng một thẻ hay đại loại thế, 411 00:19:01,390 --> 00:19:05,680 Trình duyệt của bạn vẫn sẽ làm cho một trang web và vẫn có thể làm việc, 412 00:19:05,680 --> 00:19:10,840 nhưng đó là cách tốt nhất để đảm bảo rằng bạn đã, một lần nữa, đóng tất cả các thẻ của bạn, 413 00:19:10,840 --> 00:19:13,190 rằng tất cả các yếu tố của bạn cách mà họ nên được, 414 00:19:13,190 --> 00:19:18,470 và về cơ bản nó là do ước mà được cài đặt sẵn. 415 00:19:18,470 --> 00:19:21,970 >> Đó là, một lần nữa, chỉ một điều mà bạn nên 416 00:19:21,970 --> 00:19:24,040 được học tập để được làm, như trái ngược với việc 417 00:19:24,040 --> 00:19:25,696 Mã sloppier và công cụ như thế. 418 00:19:25,696 --> 00:19:26,688 Yeah. 419 00:19:26,688 --> 00:19:27,680 Ồ xin lỗi. 420 00:19:27,680 --> 00:19:29,221 Tôi nghĩ bạn đã được nâng cao tay của bạn. 421 00:19:29,221 --> 00:19:31,240 Đung Không, tôi chỉ là [không nghe được]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> Đung Cảm ơn bạn. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Tất nhiên, cảm ơn bạn. 425 00:19:36,181 --> 00:19:41,680 Vì vậy, một lần nữa, xảy ra vào như thế nào thông tin được chuyển giao 426 00:19:41,680 --> 00:19:44,630 và các mô hình truyền thông để chuyển thông tin. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP chỉ có nghĩa là Transmission Control Protocol và IP 429 00:19:48,600 --> 00:19:51,260 đề cập đến Internet Protocol. 430 00:19:51,260 --> 00:19:54,275 Và đó chỉ đề cập đến cách dữ liệu được chuyển giao. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Nếu chúng ta có một số dữ liệu cần giao cho you-- vậy 433 00:20:02,710 --> 00:20:06,770 bạn thực hiện một yêu cầu cho một máy chủ nào đó. 434 00:20:06,770 --> 00:20:09,800 Ví dụ, khi chúng ta cố gắng truy cập cs50.net, 435 00:20:09,800 --> 00:20:12,420 chúng tôi thực hiện một yêu cầu các máy chủ CS50 và chúng tôi 436 00:20:12,420 --> 00:20:14,720 thấy rằng chúng tôi muốn có được loại thông tin này. 437 00:20:14,720 --> 00:20:19,294 Và sau đó được dựa trên giao thức này cho cách thông tin này được phân phối, 438 00:20:19,294 --> 00:20:21,460 các máy chủ cung cấp thông tin lại cho chúng tôi, khách hàng. 439 00:20:21,460 --> 00:20:25,590 Và sau đó chúng tôi có thể xem các thông tin cho trang 440 00:20:25,590 --> 00:20:26,390 và sau đó sử dụng nó. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Vì vậy, sau đó Hypertext Transfer Protocol chỉ là một giao thức khác, hoặc thiết lập 443 00:20:33,050 --> 00:20:37,470 các công ước mà định nghĩa như thế nào trình duyệt web và máy chủ web 444 00:20:37,470 --> 00:20:38,890 nên giao tiếp. 445 00:20:38,890 --> 00:20:43,730 Và đưa tất cả điều này với nhau, HTTP, một lần nữa, 446 00:20:43,730 --> 00:20:50,960 chỉ định nghĩa như thế nào siêu văn bản này được xác định bằng HTML mà chúng tôi đã làm việc đó, 447 00:20:50,960 --> 00:20:59,500 nó như thế nào phải được gửi đến quý vị và làm thế nào mà dữ liệu được gửi đến bạn 448 00:20:59,500 --> 00:21:00,540 được cho bạn. 449 00:21:00,540 --> 00:21:05,990 >> Và đó là lý do tại sao, nếu các bạn nhớ từ một lớp học, chúng tôi đã có rất nhiều yêu cầu 450 00:21:05,990 --> 00:21:08,970 và chúng tôi đã có rất nhiều cú pháp cho những yêu cầu mà chúng tôi 451 00:21:08,970 --> 00:21:10,250 sẽ đi qua ngay bây giờ. 452 00:21:10,250 --> 00:21:13,270 Vì vậy, một lần nữa, khi chúng tôi gửi một yêu cầu đến máy chủ, 453 00:21:13,270 --> 00:21:15,920 chúng ta phải xác định một vài điều. 454 00:21:15,920 --> 00:21:18,520 Vì vậy, chúng ta cần phải tìm các loại các yêu cầu mà chúng tôi đang thiết. 455 00:21:18,520 --> 00:21:22,180 Và một lần nữa, chúng ta có, ví dụ, GET là một loại phương pháp 456 00:21:22,180 --> 00:21:25,290 mà chúng tôi có trong yêu cầu của chúng tôi. 457 00:21:25,290 --> 00:21:31,710 >> Và sau đó HTTP / 1.1 chỉ là giao thức mà chúng ta đang sử dụng hiện nay. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Hầu hết thời gian, đó là đi để các giao thức mà chúng ta đang sử dụng. 460 00:21:36,890 --> 00:21:40,290 Vì vậy, nếu bạn có một câu hỏi như thế trên bài kiểm tra của bạn. 461 00:21:40,290 --> 00:21:43,120 Đó là ước rằng chúng tôi có cho đến nay. 462 00:21:43,120 --> 00:21:46,580 >> Dấu gạch chéo ngược đề cập đến những gì sắp xếp điều chúng ta đang yêu cầu. 463 00:21:46,580 --> 00:21:52,810 Sau đó, máy chủ của chúng tôi là, ví dụ, trong này trường hợp, chúng tôi đang cố gắng để đi đến google.com. 464 00:21:52,810 --> 00:21:57,070 Vì vậy, đây là giá trị cho một máy chủ. 465 00:21:57,070 --> 00:21:59,330 Đây là một kiểu yêu cầu mà có thể được gửi đi. 466 00:21:59,330 --> 00:22:02,890 >> Và sau đó là một loại phản ứng mà có thể được gửi đi, một lần nữa, dựa trên giao thức này, 467 00:22:02,890 --> 00:22:05,190 là một lần nữa, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Vì vậy, đó là phiên bản HTTP nữa. 469 00:22:07,150 --> 00:22:09,730 200 OK chỉ là các mã trạng thái. 470 00:22:09,730 --> 00:22:12,860 Và đó là OK chỉ là một cụm từ dựa trên mã trạng thái. 471 00:22:12,860 --> 00:22:15,520 >> Và sau đó các Content-Type dùng để chỉ loại 472 00:22:15,520 --> 00:22:20,295 được trả lại cho bạn đó là cho rằng trang web mà bạn nhận được 473 00:22:20,295 --> 00:22:22,570 và rằng trình duyệt của bạn có thể làm sau đó. 474 00:22:22,570 --> 00:22:24,401 Và đó là text / html. 475 00:22:24,401 --> 00:22:26,660 >> Đung không 1.1 có nghĩa là gì? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Đó chỉ là phiên bản of-- oh, những gì hiện 1.1 nghĩa là gì? 477 00:22:29,910 --> 00:22:37,075 Đó chỉ là các phiên bản, HTTP phiên bản của một giao thức mà chúng ta đang sử dụng. 478 00:22:37,075 --> 00:22:37,700 Great câu hỏi. 479 00:22:37,700 --> 00:22:38,366 Các câu hỏi khác? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> Đung bạn có thể tổng hợp Content-Type nhanh chóng thực? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Vì vậy mà là những gì các máy chủ. 483 00:22:48,150 --> 00:22:51,020 các loại information-- là gì loại nội dung là câu hỏi. 484 00:22:51,020 --> 00:22:53,400 Vì vậy, đó là các loại thông tin mà bạn có được trở lại 485 00:22:53,400 --> 00:22:58,200 từ các máy chủ, các loại dữ liệu mà trình duyệt có thể sau đó 486 00:22:58,200 --> 00:23:00,604 và việc này là bạn đang sử dụng. 487 00:23:00,604 --> 00:23:03,020 Đung là những gì này giao thức là nói cho bạn để làm gì? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Xin lỗi? 489 00:23:03,390 --> 00:23:05,380 Đung Có phải đó là những gì các giao thức nói gì? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: Các protocol-- 491 00:23:05,915 --> 00:23:07,940 Đung --what sự Content-Type là hay what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: Các giao thức dựa on-- giao thức nói cho bạn là gì? 493 00:23:12,040 --> 00:23:16,070 Đó chỉ là cách rằng thông tin này 494 00:23:16,070 --> 00:23:18,610 được giao cho bạn dựa về những gì sắp xếp của giao thức 495 00:23:18,610 --> 00:23:21,830 được thông tin này đã nhận giao lại cho bạn. 496 00:23:21,830 --> 00:23:23,500 Điều đó làm cho tinh thần loại? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Bạn có thể nghĩ về giao thức 499 00:23:30,070 --> 00:23:33,300 như a-- Tôi nghĩ rằng Giáo sư Malan mô tả nó 500 00:23:33,300 --> 00:23:36,910 trong lớp là loại giống như a-- nó giống như tương đương với tín hiệu bắt tay con người. 501 00:23:36,910 --> 00:23:44,930 Nói, giống như, hey, tôi là một yêu cầu và tôi biết làm thế nào để xử lý HTTP phiên bản 1.1. 502 00:23:44,930 --> 00:23:48,770 Và sau đó các máy chủ nói, oh, OK, I-- và cả hai tồn tại. 503 00:23:48,770 --> 00:23:51,337 Tôi cũng biết làm thế nào để đối phó với HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 Và tôi sẽ cung cấp cho bạn sao một số nội dung. 505 00:23:53,170 --> 00:23:56,230 Trong trường hợp này, nó sẽ là các loại văn bản / html. 506 00:23:56,230 --> 00:23:58,480 Vì vậy, nó là loại chỉ là một cách trong số họ cho communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Nó chỉ xác nhận rằng bạn đang 508 00:24:00,480 --> 00:24:03,290 cả sau cùng giao thức và cả hai 509 00:24:03,290 --> 00:24:06,620 khách hàng và các server-- vậy trình duyệt của bạn và server-- 510 00:24:06,620 --> 00:24:09,280 loại biết những gì bạn đang nói về và có 511 00:24:09,280 --> 00:24:12,557 các quy ước cho đi qua trong dữ liệu. 512 00:24:12,557 --> 00:24:17,022 >> Đung Vì vậy, các Content-Type part-- Content-Type text / html-- đó 513 00:24:17,022 --> 00:24:18,521 một phần riêng biệt của cùng một thông điệp? 514 00:24:18,521 --> 00:24:20,509 Hoặc là nó một phần của chúng ta hãy nói, 200? 515 00:24:20,509 --> 00:24:22,010 Có 200 nói với họ rằng hoặc is-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 nói rằng tất cả đã đi OK. 517 00:24:23,770 --> 00:24:27,900 Và sau đó gõ nội dung là sắp xếp của một phần riêng biệt của cùng một thông điệp, 518 00:24:27,900 --> 00:24:34,274 và nói những điều mà tôi trả lại, loại này của văn bản / html. 519 00:24:34,274 --> 00:24:35,690 Nó chỉ cho biết thêm thông tin. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Có bất cứ điều gì thêm? 522 00:24:39,995 --> 00:24:40,495 ĐƯỢC. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Bất kỳ câu hỏi khác về điều này? 525 00:24:46,530 --> 00:24:48,370 Thật tuyệt vời. 526 00:24:48,370 --> 00:24:54,070 Vì vậy, một số trạng thái HTTP khác chúng ta có thể thêm vào 200 OK, 527 00:24:54,070 --> 00:24:59,500 những người mà chúng tôi đã nhìn thấy có lẽ có thể rất nhiều là 403 và 404. 528 00:24:59,500 --> 00:25:05,190 Vì vậy, 404, nếu bạn đã cố gắng để truy cập cái gì đó không tồn tại. 529 00:25:05,190 --> 00:25:10,460 Vì vậy, ví dụ, trong bạn Psets CS50 Tài chính, 530 00:25:10,460 --> 00:25:15,640 nếu bạn đã được dựng hình quote.html và bạn không có tập tin đó, 531 00:25:15,640 --> 00:25:19,740 nhưng thay vào đó bạn có quote.php, mà sẽ cho kết quả trong một 404 Không tìm thấy 532 00:25:19,740 --> 00:25:21,600 bởi vì các tập tin có thể không tồn tại. 533 00:25:21,600 --> 00:25:25,690 >> Đối với một 403 cấm, mà đề cập đến các điều khoản. 534 00:25:25,690 --> 00:25:31,150 Vì vậy, nếu một số tập tin không thể đọc được bởi thế giới, bạn có thể nhận được một 403 trở về. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Một số người khác mà có lẽ bạn get-- 301, dời đi vĩnh viễn; 537 00:25:37,810 --> 00:25:41,300 302, Tìm thấy; 304, sửa đổi; 400, Bad Request; 538 00:25:41,300 --> 00:25:47,330 và sau đó Internal Server Error cho 500 và 503, Service Unavailable. 539 00:25:47,330 --> 00:25:48,140 Vâng. 540 00:25:48,140 --> 00:25:51,490 >> Đung chúng Will dự kiến ghi nhớ tất cả những trạng thái? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Tôi sẽ có chúng trên tờ cheat của bạn. 542 00:25:53,739 --> 00:25:55,146 [Cười] 543 00:25:55,146 --> 00:25:59,954 Đung là chúng tôi dự kiến biết những gì gây nên mỗi một? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Có phải họ? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Đối với những người mà chúng tôi đã chạy into-- vì vậy câu hỏi was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Có phải họ dự kiến biết những gì mỗi một trong những trạng thái 547 00:26:08,010 --> 00:26:09,330 mã có thể được kích hoạt bởi? 548 00:26:09,330 --> 00:26:13,240 Vì vậy, đối với những người mà chúng tôi đã sử dụng và chạy vào, tôi sẽ nói rằng, có. 549 00:26:13,240 --> 00:26:16,610 Vì vậy, chúng tôi đã chắc chắn nhìn thấy 200 OK và giảng dạy nó trong psets. 550 00:26:16,610 --> 00:26:19,071 Chúng tôi đã nhìn thấy 403, 404. 551 00:26:19,071 --> 00:26:20,550 Đối với những người khác? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: Tôi sẽ nói 500 có vẻ như trò chơi công bằng. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, yeah. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Yeah. 555 00:26:24,246 --> 00:26:27,006 Chỉ cần có một cảm giác chung về những gì gây ra cho họ. 556 00:26:27,006 --> 00:26:28,880 Và cũng chỉ bởi những tên, bạn có thể loại 557 00:26:28,880 --> 00:26:32,890 như làm một giáo dục đoán như những gì thực sự gây ra cho họ. 558 00:26:32,890 --> 00:26:36,919 Ví dụ, di chuyển vĩnh viễn, có thể các tập tin đã được chuyển vĩnh viễn. 559 00:26:36,919 --> 00:26:39,328 >> Đung Nhưng trên một trang trước kỳ thi, đã có một quá 560 00:26:39,328 --> 00:26:41,050 làm thế nào để bạn mong đợi chúng tôi trả lời đó? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Đó là giá trị zero điểm. 562 00:26:42,883 --> 00:26:45,870 Các câu hỏi trên 418 trong ấm trà là một kỹ thuật trạng thái HTTP, 563 00:26:45,870 --> 00:26:47,090 nhưng nó là giá trị zero điểm. 564 00:26:47,090 --> 00:26:48,320 Rõ ràng, bạn không dự kiến ​​sẽ biết chúng. 565 00:26:48,320 --> 00:26:49,670 >> Đung có phải là một trong những thực tế? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: Đó là một thực tế một, nhưng nó không có nghĩa là bất cứ điều gì. 567 00:26:51,970 --> 00:26:52,700 Nó chỉ là một trò đùa. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Người internet là buồn cười. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: câu hỏi lớn, guys. 571 00:26:59,680 --> 00:27:01,452 Bất kỳ câu hỏi khác? 572 00:27:01,452 --> 00:27:04,891 >> Đung lỗi máy chủ nội bộ là gì? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Internal lỗi máy chủ chỉ 574 00:27:06,640 --> 00:27:10,050 có nghĩa là bạn đã không thể giao tiếp 575 00:27:10,050 --> 00:27:13,400 với các máy chủ cho một số lý do. 576 00:27:13,400 --> 00:27:15,400 Vì vậy, nó không nhất thiết cái gì mà đã làm 577 00:27:15,400 --> 00:27:19,170 với khách hàng hoặc một cái gì đó như thế. 578 00:27:19,170 --> 00:27:22,170 Tôi không biết về bất kỳ ví dụ cụ thể chúng ta đã đi qua để giải thích, 579 00:27:22,170 --> 00:27:23,000 nhưng yeah. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Chắc chắn rồi. 581 00:27:23,250 --> 00:27:25,625 Vì vậy, ví dụ, như chúng ta hãy nói rằng bạn đang làm việc trên mashup 582 00:27:25,625 --> 00:27:30,440 và một máy chủ của Google đã đi xuống cho một số lý do, mất điện, chúng ta hãy nói. 583 00:27:30,440 --> 00:27:33,400 Đó sẽ là một máy chủ nội bộ lỗi hoặc một số loại of-- thích bạn 584 00:27:33,400 --> 00:27:34,630 sẽ không nhận được một phản ứng lại. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Yeah. 586 00:27:35,260 --> 00:27:37,050 Nó chỉ là khi bạn đang không thể giao tiếp 587 00:27:37,050 --> 00:27:40,299 với các máy chủ cho một số lý do vì của nó đi xuống hoặc một số lý do khác. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Vì vậy, nhảy vào PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, không giống như HTML, là một ngôn ngữ lập trình. 591 00:27:49,930 --> 00:27:54,820 Và chúng tôi bắt đầu sử dụng nó bởi vì nó rất hữu ích cho phát triển web. 592 00:27:54,820 --> 00:27:56,940 >> Chúng tôi sử dụng lần đầu CS50 Tài chính. 593 00:27:56,940 --> 00:28:02,240 Và về cơ bản nó sẽ giúp chúng tôi mang lại cùng nhau đánh dấu này, việc thiết kế, 594 00:28:02,240 --> 00:28:07,460 và làm thế nào chúng ta thực sự sử dụng thông tin để hiển thị những thứ trên một trang web. 595 00:28:07,460 --> 00:28:11,870 Vì vậy, chính PHP có nghĩa là PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 do đó, nó là một backnorym đệ quy bằng cách riêng của mình. 597 00:28:15,360 --> 00:28:22,330 Và thẻ mở cho PHP, chúng tôi bên trái và mũi tên đúng với những dấu hỏi 598 00:28:22,330 --> 00:28:23,060 và php. 599 00:28:23,060 --> 00:28:25,890 >> Vì vậy, chúng tôi đã nhìn thấy một bó của nó. 600 00:28:25,890 --> 00:28:29,150 Bây giờ, chúng ta chỉ đi qua một số trong những điều cơ bản về nó. 601 00:28:29,150 --> 00:28:32,280 Vì vậy, với PHP, biến tên bắt đầu bằng ký hiệu đô la. 602 00:28:32,280 --> 00:28:35,660 Chúng tôi không chỉ định, một lần nữa, một biến gõ nữa. 603 00:28:35,660 --> 00:28:38,450 Cũng giống như chúng đã làm với C, chúng ta không cần phải làm điều đó. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Chúng tôi có thể làm một loạt các khác nhau công cụ với các biến. 606 00:28:44,490 --> 00:28:47,750 Chúng tôi có thể đặt chúng lại với nhau bằng cách kết hợp chúng 607 00:28:47,750 --> 00:28:52,900 với ký hiệu dấu chấm, mà chúng ta không thể làm trong C một lần nữa. 608 00:28:52,900 --> 00:28:57,490 Một lần nữa, chúng ta có một sự linh hoạt hơn chút với PHP với các biến số. 609 00:28:57,490 --> 00:29:00,080 Một lần nữa, chúng tôi không có một chức năng chính. 610 00:29:00,080 --> 00:29:03,370 >> Và PHP được giải thích như trái ngược với biên soạn, 611 00:29:03,370 --> 00:29:09,970 Vì vậy, chỉ cách chúng tôi đã làm cho các tập tin C, chúng ta không cần phải làm điều đó cho PHP. 612 00:29:09,970 --> 00:29:15,440 Nhưng thay vào đó, cách mà ngôn ngữ được điều hành bởi chính nó, nó được giải thích. 613 00:29:15,440 --> 00:29:18,550 Và sau đó lỏng lẻo chỉ có nghĩa là chúng tôi 614 00:29:18,550 --> 00:29:22,490 không cần phải chỉ định một biến loại và các loại biến 615 00:29:22,490 --> 00:29:25,415 được hiểu trong thời gian chạy. 616 00:29:25,415 --> 00:29:29,185 >> Đung Nhưng những gì đã làm bạn có nghĩa là do dot nối? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Chắc chắn rồi. 618 00:29:30,060 --> 00:29:37,660 Khi chúng tôi muốn đưa những điều together-- vì vậy nếu chúng ta đã có một số biến 619 00:29:37,660 --> 00:29:41,500 có giá trị của 3 và chúng tôi đã có một biến đó có giá trị của chuỗi, 620 00:29:41,500 --> 00:29:45,920 chúng ta có thể đặt các biến với nhau bằng cách đặt một dấu chấm ở giữa chúng 621 00:29:45,920 --> 00:29:46,970 và cách nối chúng. 622 00:29:46,970 --> 00:29:52,670 Hoặc chúng ta có thể tạo ra một biến gọi tên 623 00:29:52,670 --> 00:29:56,900 và đặt nó lại với nhau bằng cách nối hai chuỗi. 624 00:29:56,900 --> 00:30:00,680 >> Vì vậy, nếu chúng ta có một chuỗi trong đôi báo giá và chúng tôi đặt một dấu chấm sau đó, 625 00:30:00,680 --> 00:30:03,660 và sau đó chúng tôi đã có một chuỗi khác, mà sẽ tạo ra một chuỗi hoàn toàn. 626 00:30:03,660 --> 00:30:05,242 >> Đung OK. 627 00:30:05,242 --> 00:30:06,450 MARIA Latvia: Đã được rằng rõ ràng không? 628 00:30:06,450 --> 00:30:07,099 Đung Yeah. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Vâng. 631 00:30:08,766 --> 00:30:11,146 >> Đung Khi bạn nói giải thích chứ không phải là biên soạn, 632 00:30:11,146 --> 00:30:14,160 bạn đang nói về bạn không cần phải được làm cụ thể khi 633 00:30:14,160 --> 00:30:15,906 nói đến PHP so với C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Khi chúng ta nói hiểu như là trái ngược với biên soạn, 636 00:30:20,710 --> 00:30:21,850 làm những gì chúng tôi có nghĩa gì? 637 00:30:21,850 --> 00:30:26,220 Vì vậy, điều đó có nghĩa rằng chúng ta không cần các tập tin thực thi để chạy PHP. 638 00:30:26,220 --> 00:30:29,870 Nó có nghĩa là nó chạy như nó đi. 639 00:30:29,870 --> 00:30:31,650 Điều đó có ý nghĩa? 640 00:30:31,650 --> 00:30:32,495 Hơn một chút. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Như vậy bạn có thể nghĩ đến một thông dịch viên 642 00:30:34,620 --> 00:30:38,980 như là một chương trình mà là trách nhiệm cho đi từng dòng PHP 643 00:30:38,980 --> 00:30:42,745 và thực sự thực hiện nó, như trái ngược để biên dịch tất cả xuống để nhị phân. 644 00:30:42,745 --> 00:30:46,050 Nó không thực sự có nghĩa là bất cứ điều gì khoảng cách cụ thể chúng ta cần phải có. 645 00:30:46,050 --> 00:30:49,470 Chúng tôi vẫn cần chính xác, và không quên dấu chấm phẩy của bạn, và chắc chắn 646 00:30:49,470 --> 00:30:51,470 bạn có dấu hiệu đồng đô la của bạn, và những thứ như thế. 647 00:30:51,470 --> 00:30:52,240 Câu hỏi hay. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Yeah. 649 00:30:53,115 --> 00:30:55,590 Vì vậy, từng dòng, như trái ngược với với các tập tin C, 650 00:30:55,590 --> 00:30:59,100 chúng ta phải làm cho toàn bộ thức trước khi chúng ta thực sự có thể chạy nó. 651 00:30:59,100 --> 00:31:00,360 Đó là sự khác biệt chính. 652 00:31:00,360 --> 00:31:02,655 Nhưng một lần nữa, chúng ta không thể thực sự là chưa cụ thể. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Vì vậy, các mảng trong PHP đại diện thực sự là một bản đồ ra lệnh. 655 00:31:13,950 --> 00:31:17,550 >> Vì vậy, giá trị mảng liên kết đến các phím. 656 00:31:17,550 --> 00:31:23,350 Hai cách để khai báo một mảng, dựa trên cú pháp này, 657 00:31:23,350 --> 00:31:26,380 chúng ta có thể rõ ràng hơn trong nói rằng chúng tôi có một mảng 658 00:31:26,380 --> 00:31:31,010 và chúng tôi có Key1 này mà các bản đồ để value1 này, key2 mà các bản đồ value2. 659 00:31:31,010 --> 00:31:34,660 Hoặc chúng ta có thể chỉ cần tạo một mảng có chứa các giá trị bản thân 660 00:31:34,660 --> 00:31:38,360 và sau đó các phím được hiểu theo một cách. 661 00:31:38,360 --> 00:31:40,000 Bất kỳ câu hỏi về điều này? 662 00:31:40,000 --> 00:31:42,500 >> Đung gì sẽ các phím là trong ví dụ thứ hai? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Ví dụ, nó chỉ các phím trong này không nhất thiết 667 00:31:55,780 --> 00:31:56,550 tạo nên sự khác biệt. 668 00:31:56,550 --> 00:32:01,720 Họ chỉ cần xác định làm thế nào bạn có thể sử dụng các giá trị bên trong của nó. 669 00:32:01,720 --> 00:32:08,660 Vì vậy, nếu chúng ta có một foreach vòng lặp trong PHP mà có 670 00:32:08,660 --> 00:32:14,760 cho phép chúng tôi đi qua tất cả các giá trị, chúng ta có thể đi qua tất cả các giá trị, 671 00:32:14,760 --> 00:32:19,570 ngay cả khi chúng tôi đã có hoặc đã không được định nghĩa một phím cụ thể trong các trang web của 672 00:32:19,570 --> 00:32:20,820 cú pháp trước đó. 673 00:32:20,820 --> 00:32:23,460 >> Vì vậy, ngay cả với loại này của mảng, chúng ta vẫn có thể 674 00:32:23,460 --> 00:32:26,260 có một vòng lặp foreach mà đi qua mỗi 675 00:32:26,260 --> 00:32:31,240 của các giá trị trong các chìa khóa trong mảng. 676 00:32:31,240 --> 00:32:36,180 Vì vậy, cú pháp của một foreach vòng lặp, chúng ta bắt đầu với một mảng. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Biến $ arr Đây là mảng thực tế của chúng tôi đã định nghĩa trong các slide trước 679 00:32:43,900 --> 00:32:47,550 như giá trị đó theo nghĩa đen đi qua mỗi giá trị, 680 00:32:47,550 --> 00:32:50,122 bất kể chúng tôi đã có một chìa khóa hay không. 681 00:32:50,122 --> 00:32:53,080 Và sau đó chúng ta có thể làm điều gì đó với các giá trị bên trong vòng lặp foreach. 682 00:32:53,080 --> 00:32:57,730 Vì vậy, một lần nữa, nếu chúng ta có một mảng như thế này đây created-- 683 00:32:57,730 --> 00:33:03,270 vì vậy chúng tôi có chìa khóa của foo và giá trị của bar, chìa khóa của baz và giá trị của qux-- 684 00:33:03,270 --> 00:33:09,730 chúng ta có thể có một vòng lặp foreach đi qua mảng như là giá trị quan trọng 685 00:33:09,730 --> 00:33:11,900 và sau đó làm điều gì đó với chìa khóa và / hoặc giá trị. 686 00:33:11,900 --> 00:33:15,980 Nhưng chúng ta không nhất thiết phải luôn luôn phải có một foreach vòng đó 687 00:33:15,980 --> 00:33:19,410 đi qua mảng như là chìa khóa để đồ giá trị. 688 00:33:19,410 --> 00:33:26,060 Chúng tôi có thể đi qua foreach vòng lặp mảng như là giá trị. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: Và tôi nghĩ đối với: là câu hỏi của bạn, những gì 690 00:33:28,990 --> 00:33:31,229 là chỉ số tiềm ẩn? 691 00:33:31,229 --> 00:33:31,895 Đung Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Yeah, yeah. 694 00:33:33,406 --> 00:33:36,150 Vì vậy, về cơ bản, nếu bạn không xác định một chìa khóa, nó sẽ là 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Yeah. 696 00:33:37,140 --> 00:33:41,718 Cũng giống như với C, nó không lập chỉ mục nếu bạn không chỉ định khóa. 697 00:33:41,718 --> 00:33:42,384 Đung Xin lỗi. 698 00:33:42,384 --> 00:33:43,827 Bạn có thể thử nói một chút to hơn? 699 00:33:43,827 --> 00:33:45,270 Tôi đang gặp một chút rắc rối mọi thứ nghe. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Tôi rất xin lỗi. 701 00:33:46,478 --> 00:33:48,439 Vâng, tất nhiên. 702 00:33:48,439 --> 00:33:50,230 Vì vậy, bạn muốn tôi đi qua này một lần nữa? 703 00:33:50,230 --> 00:33:51,680 Hoặc là this-- 704 00:33:51,680 --> 00:33:54,930 Đung Vì vậy, trên slide-- trước nếu bạn chỉ có thể quay trở lại trong một giây. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Tất nhiên, xin lỗi. 706 00:33:57,313 --> 00:33:59,237 Đung Vì vậy, thứ hai mảng ở đây không 707 00:33:59,237 --> 00:34:04,135 dường như có một giá trị để chìa khóa, loại [? nhân quả. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Phải, phải. 709 00:34:05,343 --> 00:34:07,608 Đung Vậy làm thế nào mà làm việc khi bạn nói nó là tất cả hoặc không có gì. 710 00:34:07,608 --> 00:34:08,969 Với tôi, đó trông giống như a [? foo?] đã. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Yeah, yeah. 712 00:34:10,093 --> 00:34:12,969 Vì vậy, một lần nữa, đây là một bản đồ ra lệnh trong ý nghĩa này 713 00:34:12,969 --> 00:34:15,639 rằng có được hiểu, Ví dụ, các chỉ số 714 00:34:15,639 --> 00:34:20,159 ở đây có thể được hiểu như là 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Một lần nữa, đó là có những chỉ số tương đương của chúng tôi 716 00:34:25,929 --> 00:34:28,980 của việc có các phím được ánh xạ vào các giá trị. 717 00:34:28,980 --> 00:34:34,710 Vì vậy, nếu chính của chúng tôi là 0-- xin lỗi. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Không, có đang phấn lên đây. 719 00:34:36,524 --> 00:34:36,929 Nó thực sự tốt đẹp. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Đó là tuyệt vời. 721 00:34:37,460 --> 00:34:38,260 ĐƯỢC. 722 00:34:38,260 --> 00:34:49,489 Vì vậy, một lần nữa, $ arr 0 sẽ là chìa khóa cho các giá trị 1. 723 00:34:49,489 --> 00:34:51,138 0 sẽ là chìa khóa cho các giá trị 1. 724 00:34:51,138 --> 00:34:51,971 Đung Tôi xin lỗi. 725 00:34:51,971 --> 00:34:53,190 Đó là vô hình. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Được rồi, nevermind. 727 00:34:53,659 --> 00:34:54,980 Chalk là một ý tưởng tồi. 728 00:34:54,980 --> 00:34:58,030 Tôi mang nó trở lại. 729 00:34:58,030 --> 00:35:01,425 Bạn có thể nghĩ rằng trong những chìa khóa 0 như bản đồ với giá trị 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Yeah. 731 00:35:02,300 --> 00:35:04,630 Vì vậy, đây là 0, điều này là 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Đây có thể là chìa khóa của bạn. 733 00:35:05,760 --> 00:35:10,020 Bạn có thể nghĩ chúng as-- yeah. 734 00:35:10,020 --> 00:35:12,740 Vì vậy, thay vì phải các phím rõ ràng, họ đang 735 00:35:12,740 --> 00:35:17,180 loại hiểu là các chỉ số bắt đầu từ 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Phấn đã không giúp đỡ. 738 00:35:24,820 --> 00:35:25,722 Yeah. 739 00:35:25,722 --> 00:35:30,914 >> Đung Đối với các vòng lặp foreach, nếu chúng ta muốn xem như giá trị, 740 00:35:30,914 --> 00:35:33,245 nó sẽ chỉ tự động chỉ số 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Yeah. 742 00:35:34,120 --> 00:35:35,745 Nó sẽ đi qua mỗi giá trị. 743 00:35:35,745 --> 00:35:39,130 Đung [Không nghe thấy] như 0 hoặc sẽ mà chỉ làm 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Bạn sẽ có nói như dấu đô la và sau đó 745 00:35:43,710 --> 00:35:46,266 một số tên biến, giá trị. 746 00:35:46,266 --> 00:35:47,182 Đung [không nghe được]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Xin lỗi? 749 00:35:50,964 --> 00:35:52,839 Đung Xin lỗi, tôi chỉ cần cố gắng để nhớ. 750 00:35:52,839 --> 00:35:57,190 Làm thế nào bạn làm điều đó nếu bạn có thể làm điều đó tự động lập chỉ mục chỉ 0 trên là? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Vậy làm thế nào bạn sẽ làm điều đó nếu bạn không có tên chính cụ thể? 752 00:36:00,780 --> 00:36:01,710 >> Đung Yeah. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Bạn sẽ chỉ define-- chỉ cần nói cho mình như một số tên. 754 00:36:07,820 --> 00:36:17,950 Vì vậy, trong psets của bạn, các bạn might nhớ foreach $ hàng là $ hàng, 755 00:36:17,950 --> 00:36:24,610 chúng tôi tạo ra ourself $ hàng này nói chúng tôi muốn đi qua hàng như hàng $. 756 00:36:24,610 --> 00:36:28,360 Mặc dù chúng tôi không có $ này rõ ràng hàng xác định, 757 00:36:28,360 --> 00:36:31,990 chúng ta chỉ có thể đi và nói điều này có thể là chìa khóa của chúng tôi, 758 00:36:31,990 --> 00:36:33,615 và chỉ cần đi qua mỗi giá trị. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> Đung vậy là giá trị của một biến mới chúng tôi đang tạo ra để lưu trữ [Không nghe thấy]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Vì vậy, nó không vốn dĩ là một biến mới. 763 00:36:49,990 --> 00:37:00,310 Đó là một biến chỉ đến bên trong của mảng để mỗi người trong số họ. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: Đó là một tên biến mới. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Yeah, đó là một tên biến mới, 766 00:37:04,018 --> 00:37:06,680 nhưng nó không inherently-- yeah. 767 00:37:06,680 --> 00:37:08,950 Nó chỉ là một biến mới mà bạn có thể làm điều đó. 768 00:37:08,950 --> 00:37:12,680 Vì vậy, chỉ cần làm thế nào để chúng tôi làm $ hàng là $ hàng, hàng 769 00:37:12,680 --> 00:37:17,980 là một tên biến mới mà chúng tôi có thể tạo ra trong vòng lặp foreach của chúng tôi. 770 00:37:17,980 --> 00:37:22,065 Nó không phải preexist trước đó. 771 00:37:22,065 --> 00:37:25,777 >> Đung bạn có thể đi qua logic cho mỗi, sử dụng ví dụ đó? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: MHM. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Ồ xin lỗi. 775 00:37:32,080 --> 00:37:33,780 Dưới đây là ví dụ. 776 00:37:33,780 --> 00:37:34,280 Chắc chắn. 777 00:37:34,280 --> 00:37:38,950 Vì vậy, đối với mỗi array-- vậy đó có nghĩa là đi đến mảng này 778 00:37:38,950 --> 00:37:43,930 như là chìa khóa value-- đó sẽ đi qua mảng này 779 00:37:43,930 --> 00:37:49,480 và lần đầu tiên đi và nhận được foo, foo trọng và thanh giá trị. 780 00:37:49,480 --> 00:37:51,570 Và sau đó vào thứ hai lần lặp của vòng lặp for, 781 00:37:51,570 --> 00:37:55,090 nó sẽ đi qua và mất các baz phím và qux giá trị. 782 00:37:55,090 --> 00:38:00,512 Và sau đó bạn có thể làm điều gì đó với một trong hai người hoặc cả hai. 783 00:38:00,512 --> 00:38:03,488 >> Đung Vì vậy, ý tưởng đằng sau có một điểm quan trọng để các giá trị, 784 00:38:03,488 --> 00:38:07,470 điều gì làm bạn kết thúc việc tiếp cận? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: ý tưởng là gì của việc có một trỏ chìa khóa để đánh giá? 786 00:38:10,680 --> 00:38:16,400 Nó chỉ là một quy ước, một cách đi qua mảng 787 00:38:16,400 --> 00:38:22,600 và có thể truy cập vào một trong hai khóa hoặc giá trị hoặc cả hai và sử dụng chúng. 788 00:38:22,600 --> 00:38:27,100 >> Đung vai trò cho việc gì ra lệnh foreach chạy? 789 00:38:27,100 --> 00:38:29,250 Vì vậy, nếu chúng ta thêm các yếu tố để các mảng sau, 790 00:38:29,250 --> 00:38:32,140 những người sẽ là những người đầu tiên gọi trong mảng foreach, 791 00:38:32,140 --> 00:38:33,750 hoặc nó sẽ có sau này? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Vậy là những gì thứ tự mà các foreach 793 00:38:37,770 --> 00:38:39,210 vòng lặp đi qua một mảng trong? 794 00:38:39,210 --> 00:38:42,220 Nó đi qua đầu tiên yếu tố để các yếu tố cuối cùng, 795 00:38:42,220 --> 00:38:43,400 đến các yếu tố thêm vào cuối. 796 00:38:43,400 --> 00:38:48,020 Nếu bạn thêm các yếu tố sau này, họ sẽ được accessed-- các yếu tố đầu tiên sẽ 797 00:38:48,020 --> 00:38:51,410 được truy cập như là người đầu tiên phần tử của mảng, 798 00:38:51,410 --> 00:38:57,620 và sau đó bạn sẽ đi qua từng các yếu tố như loại của một ordered-- 799 00:38:57,620 --> 00:39:02,930 không phải là một lệnh, nhưng cách mà họ đã được đưa vào mảng. 800 00:39:02,930 --> 00:39:06,855 >> Đung yếu tố mới nữa được thêm vào sau này? 801 00:39:06,855 --> 00:39:10,680 Vì vậy, họ đang added-- họ sẽ là người những người cuối cùng trong [? lặp đi lặp lại. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: yếu tố mới can-- về cơ bản, khi các yếu tố mới được thêm vào, 803 00:39:14,280 --> 00:39:16,520 được họ thêm vào cuối của mảng? 804 00:39:16,520 --> 00:39:17,632 >> Đung Yeah. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Tôi tin như vậy. 806 00:39:18,840 --> 00:39:20,850 Vâng. 807 00:39:20,850 --> 00:39:24,330 Và sau đó với vòng lặp foreach của bạn, sau khi bạn đã thêm các yếu tố mới 808 00:39:24,330 --> 00:39:26,790 và bạn đi qua chúng, các yếu tố mới sẽ 809 00:39:26,790 --> 00:39:30,930 được accessed-- nguyên tố mới, nếu nó thêm vào cuối cùng, nó sẽ được truy cập lần cuối. 810 00:39:30,930 --> 00:39:34,416 >> Đung bạn có thể chỉ cần cung cấp cho một ví dụ của cái gì đó sẽ [không nghe] 811 00:39:34,416 --> 00:39:37,404 với một cái gì đó có giá trị như [không nghe được] hoặc giá trị, 812 00:39:37,404 --> 00:39:38,910 thích cách bạn muốn định dạng đó? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Chắc chắn rồi. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Tôi có thể cho một ví dụ về những gì chúng ta sẽ làm gì với các giá trị? 816 00:39:46,410 --> 00:39:52,440 Vì vậy, những gì các bạn có thể quen với là chúng ta đã đi qua một mảng 817 00:39:52,440 --> 00:39:55,380 và về cơ bản in mỗi nguyên tố, 818 00:39:55,380 --> 00:40:00,910 Ví dụ, như một phần của một danh sách đặt hàng, hoặc cái gì đó. 819 00:40:00,910 --> 00:40:02,674 Điều đó có ý nghĩa hay chúng ta muốn đối với: 820 00:40:02,674 --> 00:40:04,340 Đung chúng ta có thể in ra các giá trị này? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Vâng, chúng ta có thể in và sau đó về cơ bản $ giá trị vì tại 822 00:40:13,220 --> 00:40:16,570 rằng giá trị cụ thể, chúng tôi sẽ là in các giá trị bên trong của nó. 823 00:40:16,570 --> 00:40:20,150 Vì vậy, nếu chúng ta ở phiên đầu tiên của chúng tôi của nó và chúng tôi in $ giá trị, 824 00:40:20,150 --> 00:40:23,775 chúng ta sẽ được in bar. 825 00:40:23,775 --> 00:40:27,020 >> Đung Có cũng là cho vòng trong PHP hay chỉ là vòng lặp foreach? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Có cũng cho vòng trong PHP. 827 00:40:30,430 --> 00:40:33,399 Và logic của họ chủ yếu là các giống như những gì bạn đã được sử dụng để. 828 00:40:33,399 --> 00:40:34,690 Đung Vì vậy, giá trị của nó là null. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Nó giống như giống nhau. 830 00:40:35,090 --> 00:40:35,590 Yeah. 831 00:40:35,590 --> 00:40:37,747 Đung tôi chỉ cần đi để hỏi. 832 00:40:37,747 --> 00:40:39,695 Vì vậy, khi bạn khai báo một mảng, bạn không cần 833 00:40:39,695 --> 00:40:42,617 để nói những gì kích thước nó sẽ được, có nghĩa là bạn có thể chỉ 834 00:40:42,617 --> 00:40:44,417 thêm và lấy đi yếu tố [không nghe được]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Yup. 837 00:40:45,750 --> 00:40:46,251 Chính xác. 838 00:40:46,251 --> 00:40:48,875 Khi chúng ta khai báo một mảng, chúng tôi không cần phải nói gì kích thước của nó là, 839 00:40:48,875 --> 00:40:51,022 vì vậy chúng tôi chỉ có thể thêm các yếu tố vào nó sau này là tốt. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Nhiều câu hỏi? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Vì vậy, việc đưa PHP và HTML với nhau, những gì chúng tôi đã seen-- tốt, 844 00:41:05,950 --> 00:41:15,130 Ví dụ, trong ví dụ này, chúng ta có một dạng HTML có một trường đầu vào. 845 00:41:15,130 --> 00:41:18,830 >> Và các lĩnh vực đầu vào chỉ là tên và sau đó nó có một nút Submit. 846 00:41:18,830 --> 00:41:26,040 Và khi bạn nhấn Submit nút, trong file hello.php của chúng tôi, 847 00:41:26,040 --> 00:41:32,130 bởi vì các phương pháp đối với hình thức là nhận được, chúng ta có thể truy cập bất cứ điều gì là tại tên 848 00:41:32,130 --> 00:41:40,360 bởi điều này có được biến toàn cầu is-- cú pháp cho nó là $ _GET. 849 00:41:40,360 --> 00:41:44,520 Và sau đó chúng ta có thể truy cập bất cứ điều gì người dùng nhập vào bên trong đó hình thức cho tên 850 00:41:44,520 --> 00:41:47,410 bằng cách xác định tên của lĩnh vực đó. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Bất kỳ câu hỏi khác hoặc bất kỳ câu hỏi trên ví dụ cụ thể? 853 00:41:55,060 --> 00:41:58,275 >> Đung đâu là PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Ở đây. 855 00:41:59,150 --> 00:42:01,150 Vì vậy, đây là thẻ mở của chúng tôi cho PHP. 856 00:42:01,150 --> 00:42:01,530 >> Đung Oh, phải. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Yes. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg: The = là viết tắt cho điều này là PHP và chỉ echo. 860 00:42:09,609 --> 00:42:10,150 Đung Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Vâng, xin lỗi. 862 00:42:10,720 --> 00:42:12,040 Tôi đã làm nên rõ ràng. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Print. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Nó chỉ là chức năng cho phép chúng tôi in cái gì. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Great câu hỏi. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Vì vậy going-- yes. 869 00:42:25,495 --> 00:42:31,940 >> Đung Có được khá một chút tay mã hóa của PHP và HTML 870 00:42:31,940 --> 00:42:33,450 trên bài kiểm tra 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Có thể có một số tiền hợp lý của việc giải thích 873 00:42:38,810 --> 00:42:43,330 của PHP và HTML, không nhất thiết phải như một số lượng lớn các mã hóa, 874 00:42:43,330 --> 00:42:46,960 mặc dù bạn có thể phải viết một foreach vòng lặp, tuy nhiên, một vòng lặp for. 875 00:42:46,960 --> 00:42:49,790 Bất kỳ của các vòng mà chúng ta bao gồm ở đây là trò chơi công bằng. 876 00:42:49,790 --> 00:42:51,889 Và đó chủ yếu là nó. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Tôi sẽ được chuẩn bị. 878 00:42:53,430 --> 00:42:57,010 Trong cùng một cách mà chúng tôi yêu cầu bạn viết một loạt các chức năng C trên đố 0, 879 00:42:57,010 --> 00:42:59,766 Tôi sẽ chuẩn bị để làm việc cùng trong PHP và JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Yeah. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Tôi sẽ nói một little-- như chúng tôi không 882 00:43:03,210 --> 00:43:06,251 sẽ làm cho bạn viết HTML lớn Trang chỉ vì đó là một chút 883 00:43:06,251 --> 00:43:08,240 tẻ nhạt, nhưng bạn có thể có các bộ phận. 884 00:43:08,240 --> 00:43:09,310 Đó là trò chơi hoàn toàn công bằng. 885 00:43:09,310 --> 00:43:11,082 Giống như trang HTML nhỏ, hoàn toàn công bằng. 886 00:43:11,082 --> 00:43:11,623 Đung OK. 887 00:43:11,623 --> 00:43:13,814 Làm thế nào về trong JavaScript là tốt? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Yeah. 889 00:43:14,730 --> 00:43:15,250 Trò chơi công bằng JavaScript của. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Yeah. 891 00:43:15,635 --> 00:43:16,801 Đó là trò chơi hoàn toàn công bằng. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Chúng tôi sẽ nhận được cho rằng trong giống như 10 phút. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, một lần nữa, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 Về cơ bản nó cho phép chúng ta quản lý dữ liệu trong việc quản lý cơ sở dữ liệu quan hệ 895 00:43:28,651 --> 00:43:29,150 hệ thống. 896 00:43:29,150 --> 00:43:31,149 Điều đó chỉ có nghĩa là về cơ bản rằng chúng ta có một nơi nào đó 897 00:43:31,149 --> 00:43:37,980 để lưu trữ một số dữ liệu mà chúng tôi có thể muốn sử dụng trong một trang web hoặc trong một số hình thức khác. 898 00:43:37,980 --> 00:43:42,190 Và sau đó chúng tôi có các truy vấn để có được Thông tin từ cơ sở dữ liệu của chúng tôi, 899 00:43:42,190 --> 00:43:44,320 hoặc để chèn thông tin trong đó. 900 00:43:44,320 --> 00:43:47,560 Rất nhiều các UPDATE ones-- phổ biến, INSERT, SELECT, DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Vì vậy, cho UPDATE, đây là cú pháp để cập nhật dữ liệu trong một cơ sở dữ liệu. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Đang cập nhật bảng này được gọi là bảng bằng cách nói SET, 904 00:43:57,340 --> 00:44:04,170 chúng ta có thể thiết lập một số giá trị trong tất cả hàng để một cái gì đó tương đương khác. 905 00:44:04,170 --> 00:44:09,410 Vì vậy, chúng ta cũng có thể chỉ định một số cụ thể mục mà chúng ta muốn sửa đổi 906 00:44:09,410 --> 00:44:11,240 và có thể được sử dụng WHERE. 907 00:44:11,240 --> 00:44:16,380 Và chúng ta có thể xác định rằng chúng tôi chỉ muốn sửa đổi một số hàng nơi nhà cho, 908 00:44:16,380 --> 00:44:19,830 nếu chúng ta có một bảng của sinh viên và tất cả các sinh viên đã có nhà, 909 00:44:19,830 --> 00:44:24,890 vì vậy chúng tôi sẽ chỉ sửa đổi một số giá trị nơi một ngôi nhà bằng Currier, 910 00:44:24,890 --> 00:44:25,430 Ví dụ như. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Đối với INSERT, chúng ta có thể chèn giá trị nào đó vào một bảng. 913 00:44:31,800 --> 00:44:35,150 Vì vậy, INSERT INTO bảng, và sau đó các giá trị, 914 00:44:35,150 --> 00:44:39,080 và sau đó trong ngoặc đơn, chúng tôi chỉ định trong đó giá trị mà bạn muốn chèn. 915 00:44:39,080 --> 00:44:43,220 Vì vậy, INSERT INTO bảng, col1 và col2, giá trị là VAL1 và val2. 916 00:44:43,220 --> 00:44:48,930 Vì vậy, về cơ bản này sẽ chèn một hàng mới vào một bảng chứa các giá trị 1 và 2 917 00:44:48,930 --> 00:44:50,850 dưới các cột 1 và 2. 918 00:44:50,850 --> 00:44:54,760 >> Và sau đó chúng ta sẽ đi qua nhanh một ví dụ về cách thức này có vẻ 919 00:44:54,760 --> 00:44:56,310 giống như trong cơ sở dữ liệu của chúng tôi một chút. 920 00:44:56,310 --> 00:44:58,685 Nhưng truy vấn cuối cùng này mà tôi nghĩ rằng chúng ta sẽ đi qua, 921 00:44:58,685 --> 00:45:01,450 SELECT, nó chỉ cho phép chúng tôi để chọn dữ liệu từ một bảng 922 00:45:01,450 --> 00:45:03,080 để có thể sử dụng nó sau đó. 923 00:45:03,080 --> 00:45:05,830 Và cách chúng ta làm điều này là chúng tôi chỉ cần lưu trữ nó trong một số biến. 924 00:45:05,830 --> 00:45:07,780 Và sau đó chúng tôi có thể có thể sử dụng nó một lần nữa. 925 00:45:07,780 --> 00:45:10,260 >> Vì vậy CHỌN sao có nghĩa là chọn tất cả. 926 00:45:10,260 --> 00:45:13,280 Đó chỉ là một cách viết tắt để chọn tất cả. 927 00:45:13,280 --> 00:45:19,760 FROM table WHERE, chúng tôi đang tìm kiếm đối với một số điều kiện cụ thể, 928 00:45:19,760 --> 00:45:22,290 vì vậy, nơi cột bằng một cái gì đó, ví dụ. 929 00:45:22,290 --> 00:45:24,410 Nếu chúng ta chỉ muốn chọn tất cả các từ bảng, 930 00:45:24,410 --> 00:45:28,400 này chỉ là lựa chọn tất cả các cột và tất cả các hàng từ một bảng. 931 00:45:28,400 --> 00:45:32,040 >> Và sau đó DELETE FROM bảng ĐÂU col bằng gì gì đó, 932 00:45:32,040 --> 00:45:36,440 này chỉ xóa một số hàng từ bảng của tôi 933 00:45:36,440 --> 00:45:38,860 nơi chúng tôi có một số điều kiện cụ thể. 934 00:45:38,860 --> 00:45:41,870 Trong trường hợp này, các điều kiện là cột bằng gì gì đó. 935 00:45:41,870 --> 00:45:43,460 Vì vậy, chỉ là một ví dụ nhanh chóng này. 936 00:45:43,460 --> 00:45:49,100 Nếu chúng tôi có bảng này ngay tại đây và chúng tôi chèn nó vào một bảng, các giá trị, 937 00:45:49,100 --> 00:45:50,400 rằng sẽ chèn một hàng mới. 938 00:45:50,400 --> 00:45:56,380 Và nếu chúng ta có tự động tăng, điều này sẽ chỉ tăng ID của chúng tôi 0-1 đến 2. 939 00:45:56,380 --> 00:46:00,010 >> Nếu chúng ta chọn tất cả các từ học sinh, nó chỉ cần trả về tất cả các lĩnh vực và tất cả các hàng. 940 00:46:00,010 --> 00:46:02,430 Trường hợp năm lớn hơn hoặc bằng năm 2016, 941 00:46:02,430 --> 00:46:04,390 mà chỉ sẽ trở lại Hannah và bản thân mình. 942 00:46:04,390 --> 00:46:08,360 Và sau đó, nếu chúng ta chỉ cần chọn năm id và năm FROM sinh viên 943 00:46:08,360 --> 00:46:11,710 nơi có nhà ở là Cabot House, mà sẽ, một lần nữa, trở về Hannah và bản thân mình. 944 00:46:11,710 --> 00:46:14,430 >> Sau đó, nếu chúng ta đã xoá từ sinh viên nơi tên là bằng với Rob, 945 00:46:14,430 --> 00:46:16,760 đó sẽ xoá toàn bộ hàng. 946 00:46:16,760 --> 00:46:19,696 Và sau đó nếu chúng ta đặt Tên, sinh viên CẬP NHẬT 947 00:46:19,696 --> 00:46:21,570 Tên SET bằng đến Daven ĐÂU nhà bằng 948 00:46:21,570 --> 00:46:27,010 Cabot House, đó là sẽ đi đến những hàng và sau đó cập nhật tên. 949 00:46:27,010 --> 00:46:31,470 >> Và sau đó một vài kiểu dữ liệu SQL là CHAR, VARCHAR, INT, và FLOAT. 950 00:46:31,470 --> 00:46:32,760 Đây là những trò chơi công bằng. 951 00:46:32,760 --> 00:46:36,740 Tôi sẽ đi qua một lần nữa và chắc chắn rằng bạn biết 952 00:46:36,740 --> 00:46:40,930 và có chúng trên tờ cheat của bạn, những gì mỗi người trong những nhân vật 953 00:46:40,930 --> 00:46:44,140 đã được sử dụng, những gì bạn sử dụng chúng trên psets của bạn, 954 00:46:44,140 --> 00:46:48,050 và chắc chắn rằng bạn đã quen thuộc và thoải mái với việc phải chọn 955 00:46:48,050 --> 00:46:51,450 từ các loại dữ liệu khác nhau trong pset của bạn. 956 00:46:51,450 --> 00:46:51,950 Vâng. 957 00:46:51,950 --> 00:46:54,300 >> Đung gì được bảng đó được lưu trữ? 958 00:46:54,300 --> 00:46:57,119 Yeah, nơi được bảng này được lưu trữ? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Vâng, ngay bây giờ, nó không được lưu trữ. 960 00:46:59,160 --> 00:47:00,700 Dù sao, mà là bảng này được lưu trữ? 961 00:47:00,700 --> 00:47:04,503 Nhưng nó có thể được lưu trữ trong một cơ sở dữ liệu SQL. 962 00:47:04,503 --> 00:47:07,330 >> Đung Và đâu là cơ sở dữ liệu SQL? 963 00:47:07,330 --> 00:47:11,200 Trong máy tính, online một nơi nào đó, máy chủ? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Nó có thể là một số thứ khác nhau. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Chúng tôi đã giao tiếp với Bảng SQL chủ yếu là với phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Vì vậy, chúng tôi có thể yêu cầu một máy chủ để lưu trữ chúng cho chúng tôi. 967 00:47:22,060 --> 00:47:23,830 Chúng ta có thể lưu trữ chúng trên máy tính của riêng của chúng tôi. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Nó chỉ phụ thuộc vào làm thế nào bạn muốn làm điều đó cho chính mình. 969 00:47:27,950 --> 00:47:30,075 Nhưng chúng tôi đã được lưu trữ họ, như Hannah đã đề cập, 970 00:47:30,075 --> 00:47:31,755 vào phpMyAdmin, mà là trực tuyến. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 Và rồi con đường chúng tôi sử dụng PHP và SQL, chúng ta lưu nó 973 00:47:39,280 --> 00:47:43,450 vào một số biến những gì chúng ta đã truy vấn cho. 974 00:47:43,450 --> 00:47:48,370 >> Vì vậy, nếu chúng ta CHỌN TỪ tất cả lịch sử nơi user_id bằng với PHIÊN id, 975 00:47:48,370 --> 00:47:53,900 mà sẽ chọn tất cả các hàng cho người cụ thể người 976 00:47:53,900 --> 00:47:58,327 được đăng nhập từ lịch sử bảng và sắp xếp chúng thành hàng. 977 00:47:58,327 --> 00:48:00,410 Một điều thú vị để biết là mà chức năng truy vấn của CS50 978 00:48:00,410 --> 00:48:02,180 bảo vệ chống lại các thẻ SQL injection. 979 00:48:02,180 --> 00:48:07,420 Điều đó chỉ có nghĩa là nó làm cho chắc chắn các đầu vào được cho vào là đúng 980 00:48:07,420 --> 00:48:09,920 và rằng người người đang bước vào đầu vào 981 00:48:09,920 --> 00:48:15,100 không cố gắng để nhập vào một số độc hại mã để thể thả bảng của chúng tôi 982 00:48:15,100 --> 00:48:17,305 hoặc xóa tất cả mọi thứ bên trong dữ liệu của chúng. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Một cái nhìn tổng quát của Model View Controller mô hình, 985 00:48:23,400 --> 00:48:27,360 nó chỉ là một cách tổ chức và suy nghĩ về mã. 986 00:48:27,360 --> 00:48:29,100 Đó là một lần nữa, một mô hình thiết kế. 987 00:48:29,100 --> 00:48:33,380 Chúng tôi rằng điều đó có nghĩa là can-- và đó là thực hành tốt 988 00:48:33,380 --> 00:48:37,790 để tách các bộ phận khác nhau mã của chúng tôi và những gì họ 989 00:48:37,790 --> 00:48:40,530 kiểm soát thành ba mô. 990 00:48:40,530 --> 00:48:46,700 >> Vì vậy, điểm của chúng tôi là thường xuyên nhất của chúng tôi mẫu, bố trí của chúng tôi, cách 991 00:48:46,700 --> 00:48:48,260 mà chúng ta thiết lập như thế nào mã của chúng tôi trông. 992 00:48:48,260 --> 00:48:55,190 Đó chủ yếu là các tập tin CSS của chúng tôi và cách mà chúng tôi xác định việc thiết kế các mã của chúng tôi, 993 00:48:55,190 --> 00:48:55,710 về cơ bản. 994 00:48:55,710 --> 00:48:59,280 Điều khiển của chúng tôi chủ yếu là những gì chúng ta đã làm với các file PHP. 995 00:48:59,280 --> 00:49:03,030 Vì vậy, một lần nữa, làm việc với các thông tin mà chúng tôi có 996 00:49:03,030 --> 00:49:06,700 và xác định làm thế nào mà thông tin được sử dụng, 997 00:49:06,700 --> 00:49:10,660 và sau đó chuyển thông tin đó hoặc vào xem hoặc mô hình. 998 00:49:10,660 --> 00:49:13,880 Và mô hình, cách mà chúng tôi đã được sử dụng là đã được cơ sở dữ liệu của chúng tôi, 999 00:49:13,880 --> 00:49:17,510 vì vậy mà thông tin của chúng tôi là lưu trữ vì vậy nó có một nơi nào đó 1000 00:49:17,510 --> 00:49:21,490 để sống, và bất kỳ mã mà liên quan đến đường 1001 00:49:21,490 --> 00:49:25,410 mà chúng tôi nhận được thông tin hoặc cách mà chúng tôi cập nhật thông tin đó. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Vì vậy, trong mô hình MVC, HTTP yêu cầu được gửi đến một máy chủ web. 1004 00:49:33,200 --> 00:49:36,220 Sau đó, các diễn giải điều khiển các yêu cầu của người sử dụng 1005 00:49:36,220 --> 00:49:38,260 và sau đó xác nhận người dùng nhập vào. 1006 00:49:38,260 --> 00:49:41,580 Đó là tùy chọn mà chúng ta có bộ điều khiển giao tiếp 1007 00:49:41,580 --> 00:49:44,000 với một người mẫu, nên cái gì như cơ sở dữ liệu của chúng tôi 1008 00:49:44,000 --> 00:49:47,500 hoặc một số chức năng khác đó chuyển tiếp thông tin. 1009 00:49:47,500 --> 00:49:50,340 Và cuối cùng, bộ điều khiển gởi thông tin vào xem 1010 00:49:50,340 --> 00:49:52,090 do đó nó có thể được kết xuất và rằng nó có thể 1011 00:49:52,090 --> 00:49:55,860 trở nên hữu hình cho bất kỳ người truy cập vào các trang web. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Bất kỳ câu hỏi? 1014 00:50:01,340 --> 00:50:01,840 Thật tuyệt vời. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Vì vậy, một lần nữa, các mô hình, chức năng của nó, một lần nữa, 1017 00:50:08,469 --> 00:50:11,260 là lưu trữ liên tục của thông tin, quản lý và tổ chức dữ liệu. 1018 00:50:11,260 --> 00:50:13,890 Và những gì chúng tôi đã nhìn thấy rất đến nay là các cơ sở dữ liệu MySQL 1019 00:50:13,890 --> 00:50:16,200 và bất kỳ tập tin dữ liệu có thể sử dụng. 1020 00:50:16,200 --> 00:50:20,580 >> Xem, trình bày các thông tin người sử dụng, giao diện người dùng, hoặc giao diện người dùng. 1021 00:50:20,580 --> 00:50:22,350 Và ví dụ của việc này là HTML. 1022 00:50:22,350 --> 00:50:23,950 Và sau đó chúng ta có thể có tối thiểu PHP. 1023 00:50:23,950 --> 00:50:28,360 Vì vậy, một cho vòng lặp đó lặp trên dữ liệu được in ra 1024 00:50:28,360 --> 00:50:30,720 là một phần của xem, như trái ngược với bộ điều khiển. 1025 00:50:30,720 --> 00:50:35,660 Và sau đó có rất nhiều file PHP của chúng tôi rơi vào danh mục điều khiển. 1026 00:50:35,660 --> 00:50:38,410 Nó chỉ xử lý yêu cầu người sử dụng và lấy thông tin từ các mô hình. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Nhảy vào Document Object Model, điều này chỉ 1029 00:50:45,590 --> 00:50:47,700 đề cập đến cách HTML các tài liệu được tổ chức. 1030 00:50:47,700 --> 00:50:51,600 Và chúng được tổ chức thành một cây cấu trúc mà có một hệ thống phân cấp. 1031 00:50:51,600 --> 00:50:56,720 Vì vậy, nếu chúng ta có quyền truy cập vào [Không nghe thấy] đại diện của các tài liệu, 1032 00:50:56,720 --> 00:51:02,750 chúng ta có thể làm việc với các tài liệu, như chúng ta thao tác các đối tượng cơ bản. 1033 00:51:02,750 --> 00:51:06,630 >> Và để làm cho một này chút chút rõ ràng hơn, khi 1034 00:51:06,630 --> 00:51:10,540 chúng tôi có rất nhiều của chúng tôi thẻ khác nhau đáp ứng 1035 00:51:10,540 --> 00:51:12,590 đến các tuyến đường khác nhau trong cây của chúng tôi. 1036 00:51:12,590 --> 00:51:17,070 Và sau đó cho ví dụ này, chúng tôi có nút tài liệu bắt đầu. 1037 00:51:17,070 --> 00:51:20,010 Chúng tôi có, sau đó, nút HTML của chúng tôi mà chia tách vào đầu và cơ thể. 1038 00:51:20,010 --> 00:51:22,810 Đầu có tiêu đề và sau đó tiêu đề chứa hello, thế giới. 1039 00:51:22,810 --> 00:51:24,860 Và cơ thể chúng ta chỉ chứa hello, thế giới như là tốt. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Vì vậy, bất kỳ câu hỏi về bất kỳ của những điều mà chúng ta đã cho đến nay? 1042 00:51:31,900 --> 00:51:35,891 Và nếu không, Hannah sẽ mất hơn với JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Thật tuyệt vời. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, mát mẻ. 1045 00:51:37,473 --> 00:51:40,980 Nếu bất cứ điều gì đi lên với PHP hoặc HTML, hoặc bất kỳ thứ Maria được bảo hiểm, 1046 00:51:40,980 --> 00:51:42,700 chúng tôi luôn luôn có thể tạm dừng. 1047 00:51:42,700 --> 00:51:46,430 Chúng tôi đang làm tốt hơn trên thời gian một lần nữa, rất tuyệt vời. 1048 00:51:46,430 --> 00:51:48,770 Và chỉ để đi lại thực sự nhanh chóng này, 1049 00:51:48,770 --> 00:51:51,010 nếu bạn nhìn vào mỗi kỳ thi năm qua, đây 1050 00:51:51,010 --> 00:51:54,120 đi lên either-- đây là một số HTML, làm cho sơ đồ này. 1051 00:51:54,120 --> 00:51:58,380 Hoặc đây là sơ đồ này, làm cho một số HTML, vì vậy chắc chắn thực hành điều đó. 1052 00:51:58,380 --> 00:52:01,500 Và sau đó là một trong những được đảm bảo câu hỏi mà bạn có thể có được quyền. 1053 00:52:01,500 --> 00:52:02,000 Mát. 1054 00:52:02,000 --> 00:52:04,510 Vì vậy, chúng ta hãy nói về JavaScript và làm thế nào nó một chút 1055 00:52:04,510 --> 00:52:09,130 khác nhau từ các ngôn ngữ như PHP và C, hai ngôn ngữ, chúng tôi đã nhìn thấy trước. 1056 00:52:09,130 --> 00:52:10,780 Vì vậy, số một, nó lỏng lẻo. 1057 00:52:10,780 --> 00:52:14,630 Điều đó giống như PHP, nhưng không giống như C. 1058 00:52:14,630 --> 00:52:15,890 >> Đây là một ngôn ngữ giải thích. 1059 00:52:15,890 --> 00:52:19,870 Một lần nữa, đó là giống như PHP, không giống như C. Và điều này 1060 00:52:19,870 --> 00:52:24,630 sẽ cho phép chúng tôi để use-- nó hoạt động thực sự độc đáo với các trang web. 1061 00:52:24,630 --> 00:52:28,350 Nó sẽ cho phép chúng ta thao tác nội dung và nó trông như thế 1062 00:52:28,350 --> 00:52:30,300 và những gì nó làm. 1063 00:52:30,300 --> 00:52:32,330 >> Chúng ta sẽ thấy một chút của Ajax. 1064 00:52:32,330 --> 00:52:36,140 Nó cho phép chúng ta giao tiếp không đồng bộ với máy chủ khác nhau 1065 00:52:36,140 --> 00:52:37,950 và nhận được thông tin. 1066 00:52:37,950 --> 00:52:42,820 Và đây là điều mà thực sự tách JavaScript từ PHP và C 1067 00:52:42,820 --> 00:52:45,590 là nó là client-side. 1068 00:52:45,590 --> 00:52:49,860 Cả hai PHP và C là thường server-side. 1069 00:52:49,860 --> 00:52:51,960 >> Đối với hầu hết các phần và gần như hoàn toàn những gì 1070 00:52:51,960 --> 00:52:53,900 chúng tôi đã nhìn thấy, ít nhất là trong lớp này, JavaScript 1071 00:52:53,900 --> 00:52:57,040 hành vi trên phía máy khách, điều đó có nghĩa rằng trình duyệt là thực sự 1072 00:52:57,040 --> 00:52:58,597 chịu trách nhiệm về chạy nó. 1073 00:52:58,597 --> 00:53:01,180 Và điều đó có nghĩa là chúng ta không làm cần phải tương tác với máy chủ. 1074 00:53:01,180 --> 00:53:04,380 Vì vậy, nó có nghĩa là nó có thể được nhanh hơn rất nhiều bởi vì nó thực sự chỉ cần đó là Chrome, 1075 00:53:04,380 --> 00:53:10,420 đó là Safari, đó là Firefox, bất cứ điều gì bạn sử dụng thực sự chạy JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> Đung không đồng bộ có nghĩa là gì? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ah, những gì không đồng bộ nghĩa là gì? 1078 00:53:13,620 --> 00:53:14,250 Great câu hỏi. 1079 00:53:14,250 --> 00:53:17,890 Không đồng bộ means-- tốt, các nội dung trong đó 1080 00:53:17,890 --> 00:53:22,140 chúng ta sử dụng nó là, OK, chúng tôi đang tạo một trang web 1081 00:53:22,140 --> 00:53:23,860 và chúng ta cần phải nhận được một số thông tin. 1082 00:53:23,860 --> 00:53:28,250 Vì vậy, với các ví dụ về mashup, một số thông tin mà chúng tôi có thể muốn 1083 00:53:28,250 --> 00:53:30,580 là tiêu đề bài viết. 1084 00:53:30,580 --> 00:53:33,330 Bây giờ, chúng ta could-- một lựa chọn là để làm điều đó một cách đồng bộ 1085 00:53:33,330 --> 00:53:37,940 và điều đó có nghĩa cho phép của dừng lại, hãy lấy bài viết, 1086 00:53:37,940 --> 00:53:41,275 lấy bài báo trở lại, và sau đó render, nhưng đó sẽ là rất chậm. 1087 00:53:41,275 --> 00:53:44,150 Đó sẽ là một trải nghiệm người dùng xấu bởi vì bạn sẽ chỉ được ngồi 1088 00:53:44,150 --> 00:53:46,630 có chờ đợi điều gì để đáp ứng. 1089 00:53:46,630 --> 00:53:50,020 >> Không đồng bộ có nghĩa là chúng tôi sẽ tiếp tục đi về kinh doanh của chúng tôi, 1090 00:53:50,020 --> 00:53:52,529 hiển thị trang, và chúng tôi sẽ gửi đi một yêu cầu 1091 00:53:52,529 --> 00:53:54,570 đó là loại đi xảy ra trong nền. 1092 00:53:54,570 --> 00:53:57,610 Tôi nghĩ rằng chúng tôi sử dụng các ví dụ trong bài giảng của Rob gọi và nói, 1093 00:53:57,610 --> 00:53:59,980 hey, bạn có thể xem xét điều này lên cho tôi và lấy lại cho tôi, 1094 00:53:59,980 --> 00:54:02,870 như trái ngược với chỉ tôi chờ trên điện thoại. 1095 00:54:02,870 --> 00:54:07,020 Vì vậy, không đồng bộ có nghĩa là nó sẽ xảy ra trong nền đi từ chúng tôi 1096 00:54:07,020 --> 00:54:08,676 song song. 1097 00:54:08,676 --> 00:54:10,400 >> Great câu hỏi. 1098 00:54:10,400 --> 00:54:11,830 Bất cứ điều gì khác? 1099 00:54:11,830 --> 00:54:12,330 Thật tuyệt. 1100 00:54:12,330 --> 00:54:15,020 Chúng tôi sẽ nhảy nhiều hơn vào yêu cầu không đồng bộ với Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> Đung Liệu JavaScript-- nơi nào nó rơi với model-view-controller? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Great câu hỏi. 1103 00:54:19,620 --> 00:54:23,320 Trường hợp nào JavaScript mùa thu với model-view-controller? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Tôi đoán nó có thể fall-- vì vậy chúng tôi không thường 1106 00:54:28,350 --> 00:54:31,340 thích để squish nó vào mà mô hình, nhưng tôi đoán tôi sẽ nói, 1107 00:54:31,340 --> 00:54:34,280 OK, vì vậy JavaScript thực sự sẽ cho phép 1108 00:54:34,280 --> 00:54:37,587 chúng tôi thu thập dữ liệu, diễn giải dữ liệu, thực sự làm 1109 00:54:37,587 --> 00:54:38,920 điều có ý nghĩa với các dữ liệu. 1110 00:54:38,920 --> 00:54:41,100 Bằng cách đó, nó rất kiểm soát như thế nào. 1111 00:54:41,100 --> 00:54:43,900 >> Nhưng nó cũng sẽ cho phép chúng tôi hiển thị những thứ và những thứ in. 1112 00:54:43,900 --> 00:54:47,021 Bằng cách đó, nó rất quan điểm giống. 1113 00:54:47,021 --> 00:54:47,520 Yeah. 1114 00:54:47,520 --> 00:54:51,710 Vì vậy, nó là loại giống như trong PHP nơi nó có thể loại được cả hai. 1115 00:54:51,710 --> 00:54:53,330 Câu hỏi hay. 1116 00:54:53,330 --> 00:54:55,209 Bất cứ điều gì khác? 1117 00:54:55,209 --> 00:54:56,000 Tất cả các quyền, tuyệt vời. 1118 00:54:56,000 --> 00:54:57,120 Di chuyển ngay cùng. 1119 00:54:57,120 --> 00:54:59,110 >> Vì vậy, chúng ta hãy xem một ví dụ làm thế nào chúng ta có thể sử dụng 1120 00:54:59,110 --> 00:55:02,250 JavaScript trong một trong các chương trình web của chúng tôi. 1121 00:55:02,250 --> 00:55:05,680 Vì vậy, tôi sẽ xem xét việc này index.html với một bó của HTML. 1122 00:55:05,680 --> 00:55:08,800 Và điều tôi muốn bạn tập trung vào là thẻ script này. 1123 00:55:08,800 --> 00:55:13,280 Và điều này nói, OK, tôi muốn chạy một số JavaScript và đây là nơi nó sống. 1124 00:55:13,280 --> 00:55:15,400 Nó sống trong hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> Và rất nhiều như CSS, chúng ta có thể đặt Javascript trong HTML. 1126 00:55:21,120 --> 00:55:24,000 Tại sao chúng ta có thể muốn tách nó ra? 1127 00:55:24,000 --> 00:55:24,500 Yeah. 1128 00:55:24,500 --> 00:55:25,486 >> Đung dễ dàng hơn để viết lại? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Yeah. 1130 00:55:26,402 --> 00:55:28,450 Nó dễ dàng hơn để sử dụng trên các trang web khác nhau. 1131 00:55:28,450 --> 00:55:29,980 Nó giữ cho mọi thứ sạch hơn. 1132 00:55:29,980 --> 00:55:32,090 Nó chỉ thực hành tốt. 1133 00:55:32,090 --> 00:55:32,590 Thật tuyệt vời. 1134 00:55:32,590 --> 00:55:33,930 Câu trả lời tốt. 1135 00:55:33,930 --> 00:55:36,690 Vì vậy, tốt, vì vậy đây sẽ là index.html của chúng tôi. 1136 00:55:36,690 --> 00:55:39,430 Và sau đó xuống đây là của chúng tôi nhỏ nhỏ tập tin JavaScript. 1137 00:55:39,430 --> 00:55:42,410 >> Và tất cả nó nói là cảnh báo Xin chào, thế giới. 1138 00:55:42,410 --> 00:55:46,040 Vì vậy, những gì xảy ra là khi này renders-- trang 1139 00:55:46,040 --> 00:55:49,680 vì vậy nếu bạn đi đến bất cứ trang web này is-- tất cả những gì sẽ xảy ra 1140 00:55:49,680 --> 00:55:53,330 là nó sẽ nói, OK, tôi sẽ chạy mã JavaScript này. 1141 00:55:53,330 --> 00:55:56,370 Và mã JavaScript này chỉ nói cảnh báo Xin chào, thế giới. 1142 00:55:56,370 --> 00:55:59,090 Vì vậy, tôi sẽ có được điều này thân thiện chút pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Mát? 1144 00:56:00,360 --> 00:56:04,746 Đó là loại giống như của chúng tôi đầu tiên Chương trình JavaScript, Hello của chúng tôi, thế giới. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Chúng ta hãy xem xét thêm một chút về những gì cú pháp của JavaScript trông như thế nào. 1147 00:56:12,190 --> 00:56:16,330 Và đặc biệt, chúng ta hãy so sánh nó với C và PHP, mà chúng tôi đã nhìn thấy trước. 1148 00:56:16,330 --> 00:56:20,610 >> Trong JavaScript, chúng ta sẽ có var, tên của biến, và sau đó 1149 00:56:20,610 --> 00:56:21,690 giá trị thực tế của nó. 1150 00:56:21,690 --> 00:56:26,170 Và chúng ta không chỉ định một kiểu, chỉ như trong PHP, nhưng rất không giống như trong C. 1151 00:56:26,170 --> 00:56:28,850 Vì vậy, ví dụ, nếu chúng ta muốn để lưu trữ các giá trị 50, 1152 00:56:28,850 --> 00:56:32,490 trong C, chúng tôi sẽ phải nói, hey, C, tôi muốn một số nguyên, 1153 00:56:32,490 --> 00:56:35,076 Tôi sẽ gọi nó i, và giá trị của nó là 50. 1154 00:56:35,076 --> 00:56:36,450 Trong PHP, đó là một chút dễ dàng hơn. 1155 00:56:36,450 --> 00:56:41,880 Chúng ta nói, hey, tôi muốn có một biến gọi là i và giá trị của nó là 50. 1156 00:56:41,880 --> 00:56:45,890 Rất tương tự như vậy, trong JavaScript, chúng tôi nói hey, tôi muốn có một biến gọi là i, 1157 00:56:45,890 --> 00:56:47,080 giá trị của nó là 50. 1158 00:56:47,080 --> 00:56:52,140 Mỗi lần tiếp theo mà tôi sử dụng i, tôi không cần phải viết var. 1159 00:56:52,140 --> 00:56:53,810 Nó chỉ là tôi từ thời điểm đó. 1160 00:56:53,810 --> 00:56:58,660 Trong cùng một cách, trong C, nơi một khi chúng ta nói int i, chúng ta chỉ cần sử dụng i. 1161 00:56:58,660 --> 00:57:00,340 Mát? 1162 00:57:00,340 --> 00:57:01,800 Được rồi. 1163 00:57:01,800 --> 00:57:03,710 >> Chuyển sang vòng, May mắn thay, những gần như 1164 00:57:03,710 --> 00:57:06,720 tìm exactly-- Tôi nghĩ rằng họ đang chính xác giống như những gì 1165 00:57:06,720 --> 00:57:09,799 vòng được sẽ như thế nào trong một cái gì đó giống như C, nơi bạn cho vòng lặp 1166 00:57:09,799 --> 00:57:11,840 sẽ có ba parts-- một khởi tạo, 1167 00:57:11,840 --> 00:57:13,640 một điều kiện, và một bản cập nhật. 1168 00:57:13,640 --> 00:57:15,340 Một vòng lặp trong khi, có vẻ chính xác như nhau. 1169 00:57:15,340 --> 00:57:16,390 Chúng tôi chỉ cung cấp cho nó một điều kiện. 1170 00:57:16,390 --> 00:57:18,264 >> Và một việc phải làm trong khi vòng lặp, một lần nữa, chính xác như nhau. 1171 00:57:18,264 --> 00:57:20,190 Chúng tôi cung cấp cho nó một điều kiện. 1172 00:57:20,190 --> 00:57:24,510 Hãy nói rằng tôi muốn lặp over-- Tôi muốn làm điều gì đó năm lần. 1173 00:57:24,510 --> 00:57:27,840 Trong C, chúng ta có thể viết cho init i bằng 0. 1174 00:57:27,840 --> 00:57:30,480 i là ít hơn 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Chỉ có sự khác biệt, trong JavaScript, thay vì nói int i bằng 0, 1176 00:57:34,240 --> 00:57:36,820 chúng ta nói var i bằng 0. 1177 00:57:36,820 --> 00:57:38,370 Đẹp. 1178 00:57:38,370 --> 00:57:41,320 Đó là sự khác biệt duy nhất. 1179 00:57:41,320 --> 00:57:43,200 Bất kỳ câu hỏi nào về điều đó? 1180 00:57:43,200 --> 00:57:44,160 Vâng. 1181 00:57:44,160 --> 00:57:48,480 >> Đung Vì vậy, trong PHP, đó là cùng điều, ngoại trừ nhưng cũng giống như một biến? 1182 00:57:48,480 --> 00:57:49,564 Hoặc là một ví dụ var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Yeah. 1184 00:57:50,480 --> 00:57:52,310 Vì vậy, trong PHP, nó sẽ là một dấu đô la. 1185 00:57:52,310 --> 00:57:59,450 Vì vậy, nó sẽ $ i equals 0, $ i là ít hơn 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Great câu hỏi. 1187 00:58:02,490 --> 00:58:04,570 >> Bây giờ chúng ta hãy nói về khai báo hàm. 1188 00:58:04,570 --> 00:58:07,010 Trong C, khi chúng ta khai báo một chức năng, chúng tôi đã cho nó một cái tên 1189 00:58:07,010 --> 00:58:08,490 và chúng tôi đã cho nó một số thông số. 1190 00:58:08,490 --> 00:58:10,670 Và ngay từ đầu, chúng tôi đã viết các loại. 1191 00:58:10,670 --> 00:58:12,440 Trong JavaScript, tất cả chúng ta phải làm là viết 1192 00:58:12,440 --> 00:58:15,080 các chức năng từ khóa nói, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Tôi về để định nghĩa một hàm. 1194 00:58:16,570 --> 00:58:18,520 >> Trong trường hợp này, nó có tên tiền. 1195 00:58:18,520 --> 00:58:20,820 Và phải mất hai đối số, x và y. 1196 00:58:20,820 --> 00:58:23,280 Chú ý rằng chúng ta không quan tâm về các loại x và y. 1197 00:58:23,280 --> 00:58:26,280 Và cũng giống như C, chúng tôi có trở về từ khoá này, 1198 00:58:26,280 --> 00:58:29,140 vì vậy chúng tôi có thể làm điều gì đó như trở lại x và y. 1199 00:58:29,140 --> 00:58:32,540 >> Và bây giờ khi chúng tôi đã viết bài này đầu tiên chức năng, chúng ta có thể sử dụng số tiền bất cứ nơi nào. 1200 00:58:32,540 --> 00:58:34,740 Và đó là hoàn toàn tốt đẹp. 1201 00:58:34,740 --> 00:58:37,530 Một điều thực sự mát mẻ về JavaScript là rất không giống C 1202 00:58:37,530 --> 00:58:40,770 là chức năng có thể được đối xử như các giá trị. 1203 00:58:40,770 --> 00:58:43,895 Vì vậy, chúng ta có thể làm một cái gì đó giống như ở đây nơi tôi cho rằng tôi bao này up-- 1204 00:58:43,895 --> 00:58:46,400 Tôi phủ lên các var sum part-- và chúng ta chỉ nói 1205 00:58:46,400 --> 00:58:49,850 chức năng xy bằng trở lại x cộng với y. 1206 00:58:49,850 --> 00:58:52,140 >> Đó là những gì sẽ được gọi là một chức năng vô danh. 1207 00:58:52,140 --> 00:58:53,920 Đó là một chức năng mà không có một tên. 1208 00:58:53,920 --> 00:58:56,290 Trong khi điều này nói chức năng Tóm lại, blah, blah, blah, 1209 00:58:56,290 --> 00:58:59,340 điều này chỉ có thể nói chức năng. 1210 00:58:59,340 --> 00:59:02,020 Nhưng bây giờ mặc dù tôi có chức năng ẩn danh này, 1211 00:59:02,020 --> 00:59:03,630 chức năng mà thực sự chỉ là một giá trị. 1212 00:59:03,630 --> 00:59:05,160 Chúng ta có thể đối xử với nó như một giá trị. 1213 00:59:05,160 --> 00:59:10,180 >> Vì vậy, chúng ta có thể lưu nó trong một biến cùng cách chúng ta có thể lưu trữ 50 trong một biến. 1214 00:59:10,180 --> 00:59:13,870 Vì vậy, chúng ta có thể nói, OK, tôi muốn có một biến, nó được gọi là tổng hợp, 1215 00:59:13,870 --> 00:59:16,011 và nó là chức năng này. 1216 00:59:16,011 --> 00:59:18,760 Vì vậy, hai điều này là thực sự sẽ làm điều tương tự, 1217 00:59:18,760 --> 00:59:21,576 nhưng cú pháp là một chút khác nhau và các loại của một lưu ý thú vị. 1218 00:59:21,576 --> 00:59:22,076 Yeah. 1219 00:59:22,076 --> 00:59:25,548 >> Đung Vì vậy, bạn có thể gọi một chức năng đó là vô danh bằng cách nói, 1220 00:59:25,548 --> 00:59:28,244 khung tổng 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Yeah. 1222 00:59:29,160 --> 00:59:32,280 Bạn có thể gọi ẩn danh này chức năng trong cùng một cách. 1223 00:59:32,280 --> 00:59:33,350 Bạn sẽ làm gì sum (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Đó sẽ là hoàn toàn tốt đẹp. 1226 00:59:38,200 --> 00:59:41,575 >> Nếu tôi không làm var sum bằng chức năng, nếu tôi chỉ xóa 1227 00:59:41,575 --> 00:59:45,480 this-- Tôi biết nó trên tay tôi, nhưng giả vờ tôi đã xóa this-- sau đó 1228 00:59:45,480 --> 00:59:46,964 chức năng đó là loại chỉ đi. 1229 00:59:46,964 --> 00:59:49,630 Bạn không bao giờ có thể sử dụng nó một lần nữa bởi vì bạn không có một tên cho nó. 1230 00:59:49,630 --> 00:59:53,497 Thật khó để ám chỉ cái gì bạn không biết những gì để gọi. 1231 00:59:53,497 --> 00:59:54,080 Câu hỏi hay. 1232 00:59:54,080 --> 00:59:54,580 Yeah. 1233 00:59:54,580 --> 00:59:59,580 >> Đung bạn có thể tham khảo trong tổng những nơi khác với giá trị của x cộng với y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Có thể bạn tổng tài liệu tham khảo ở những nơi khác 1235 01:00:01,940 --> 01:00:03,360 với các giá trị x cộng với y? 1236 01:00:03,360 --> 01:00:05,130 Tôi không hoàn toàn chắc chắn những gì bạn có ý nghĩa. 1237 01:00:05,130 --> 01:00:10,582 >> Đung Vì vậy, quá khứ của bạn bán vô danh chức năng là tổng bằng này 1238 01:00:10,582 --> 01:00:14,452 chức năng ẩn danh, vì vậy số tiền là bây giờ là một biến mà bạn can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Đúng vậy. 1240 01:00:15,410 --> 01:00:18,980 Vì vậy, số tiền là biến, nhưng nó actually-- 1241 01:00:18,980 --> 01:00:23,770 để tổng hợp là một biến mà giá trị là chức năng. 1242 01:00:23,770 --> 01:00:27,030 Vì vậy, nó là một chức năng, đó là loại một điều lạ để quấn quanh đầu của bạn 1243 01:00:27,030 --> 01:00:29,880 vì chúng tôi đã chơi với C và bạn không thể làm điều đó trong C. 1244 01:00:29,880 --> 01:00:32,679 Nhưng bây giờ chúng ta có thể gọi tổng hợp các cùng một cách mà chúng ta có thể gọi sum ở đây. 1245 01:00:32,679 --> 01:00:33,220 Đung OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Yeah. 1247 01:00:33,970 --> 01:00:34,553 Câu hỏi hay. 1248 01:00:34,553 --> 01:00:35,438 Yeah. 1249 01:00:35,438 --> 01:00:39,862 >> Đung Vì vậy, chúng tôi không sử dụng nguyên mẫu trong PHP hay Javascript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Không, chúng tôi không cần phải sử dụng nguyên mẫu, 1251 01:00:42,070 --> 01:00:43,880 đặc biệt là trong JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Vì vậy, một điều xấu thực tế rằng tôi là sẽ nói rằng bạn không nên làm 1253 01:00:49,380 --> 01:00:52,620 là bạn không phải viết var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Bạn chỉ có thể bắt đầu làm i = 50. 1255 01:00:54,840 --> 01:00:57,490 Và sẽ chỉ làm cho tôi một biến toàn cầu. 1256 01:00:57,490 --> 01:01:00,550 >> Đó là thực tế rất xấu đến không bao giờ nói explicity var i, 1257 01:01:00,550 --> 01:01:01,800 nhưng nó là một cái gì đó bạn có thể làm. 1258 01:01:01,800 --> 01:01:03,591 Các thông dịch viên không sẽ hét vào mặt bạn. 1259 01:01:03,591 --> 01:01:05,920 JavaScript là khá giống như, bạn có thể làm những gì bạn muốn. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Ồ xin lỗi. 1262 01:01:09,800 --> 01:01:10,300 Có hai. 1263 01:01:10,300 --> 01:01:12,150 Trong quần màu da cam. 1264 01:01:12,150 --> 01:01:13,190 Đi trước. 1265 01:01:13,190 --> 01:01:14,390 >> Đung Không, bạn đi đầu tiên. 1266 01:01:14,390 --> 01:01:16,765 >> Đung Không, tôi chỉ nói Tôi đã không có bàn tay của tôi lên. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 ĐƯỢC. 1269 01:01:20,748 --> 01:01:26,604 Vì vậy, nếu bạn đã gọi mà lần đầu tiên, bây giờ tổng hợp, 1270 01:01:26,604 --> 01:01:29,864 chúng tôi gọi nó theo cùng một cách, x, y, giống như mỗi lần duy nhất? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Yeah. 1272 01:01:30,780 --> 01:01:32,572 Vì vậy, hai cơ bản làm điều tương tự. 1273 01:01:32,572 --> 01:01:35,113 Đung Và những gì là lợi thế của việc sử dụng một hay khác? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Không có lợi thế của việc sử dụng một hay khác. 1275 01:01:37,500 --> 01:01:40,080 Tôi chỉ muốn cho bạn thấy hai phần khác nhau của cú pháp. 1276 01:01:40,080 --> 01:01:42,770 Rất nhiều lần, nơi vô danh chức năng không có một mục đích 1277 01:01:42,770 --> 01:01:48,220 là nếu đối số khác chức năng nên được một chức năng. 1278 01:01:48,220 --> 01:01:50,600 Và chúng ta sẽ thấy rằng trong chỉ một giây với Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Vì vậy, nếu điều đó không làm cho bất kỳ ý nghĩa, lưu trữ nó ở phía sau đầu của bạn. 1280 01:01:53,577 --> 01:01:55,660 Đó là nơi mà một ẩn danh chức năng có thể có ích 1281 01:01:55,660 --> 01:01:58,284 bởi vì nó không thực sự có giá trị cho nó một cái tên, vì chúng tôi chỉ 1282 01:01:58,284 --> 01:01:59,443 sẽ sử dụng nó một lần. 1283 01:01:59,443 --> 01:02:00,370 Yeah. 1284 01:02:00,370 --> 01:02:03,635 >> Đung Nếu x và y thay đổi sau trên, sẽ tổng hợp thay đổi là tốt? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Nếu x và y thay đổi sau này, sẽ tổng hợp thay đổi là tốt? 1286 01:02:06,510 --> 01:02:08,840 Vì vậy, đây thực sự là tôi nghĩ cái gì đó, 1287 01:02:08,840 --> 01:02:12,260 một lần nữa, nó chỉ cảm thấy rất khác nhau từ C. Đây không phải là một giá trị. 1288 01:02:12,260 --> 01:02:13,620 Nó không phải 5. 1289 01:02:13,620 --> 01:02:15,550 Nó chỉ là chức năng riêng của mình. 1290 01:02:15,550 --> 01:02:19,110 Vì vậy, ngay sau khi bạn cung cấp cho nó các tham số, sau đó bạn sẽ thực sự tính toán một giá trị. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: Và sau đó bạn có thể gọi hàm 1292 01:02:21,193 --> 01:02:23,272 và sử dụng nó để có được một số giá trị. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Đúng vậy. 1294 01:02:24,230 --> 01:02:25,250 Chính xác. 1295 01:02:25,250 --> 01:02:25,863 Yeah. 1296 01:02:25,863 --> 01:02:27,946 >> Đung Vì vậy, nếu bạn chỉ lưu trữ nó trong biến, 1297 01:02:27,946 --> 01:02:31,430 như var x bằng tổng của hai values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Yeah. 1299 01:02:32,420 --> 01:02:35,320 Vì vậy, bạn chỉ có thể làm var sum bằng tổng của hai giá trị. 1300 01:02:35,320 --> 01:02:37,670 Yeah. 1301 01:02:37,670 --> 01:02:38,680 Bất kỳ câu hỏi khác? 1302 01:02:38,680 --> 01:02:39,642 Yeah. 1303 01:02:39,642 --> 01:02:42,047 >> Đung Nhưng sẽ là nhầm lẫn giữa tiền và số tiền? 1304 01:02:42,047 --> 01:02:45,062 Cũng giống như nếu bạn gọi tổng biến của bạn, bạn sẽ gọi hàm sum? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Nếu bạn đã làm một cái gì đó như thế, tổng số tiền bằng 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> Đung Yeah. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Tôi tin rằng sẽ ghi đè lên giá trị của tiền. 1310 01:02:56,465 --> 01:02:59,290 Vì vậy, một thú vị điều về JavaScript 1311 01:02:59,290 --> 01:03:02,950 là một biến duy nhất có thể đưa trên một loạt các loại khác nhau. 1312 01:03:02,950 --> 01:03:03,790 Xấu thực hành. 1313 01:03:03,790 --> 01:03:06,280 Bạn không nên làm điều gì đó giống như những gì bạn vừa nói. 1314 01:03:06,280 --> 01:03:10,240 >> Nhưng trong C, nếu tôi được thiết lập bằng một số nguyên, 1315 01:03:10,240 --> 01:03:13,570 chúng ta biết rằng không bao giờ sẽ trở thành một chuỗi. 1316 01:03:13,570 --> 01:03:15,670 Đây không phải là trường hợp của JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Vâng, câu hỏi hay. 1318 01:03:17,770 --> 01:03:20,151 Bất cứ điều gì khác? 1319 01:03:20,151 --> 01:03:20,650 Được rồi. 1320 01:03:20,650 --> 01:03:21,850 Làm tất cả phải vào thời gian. 1321 01:03:21,850 --> 01:03:23,050 Giữ đi. 1322 01:03:23,050 --> 01:03:25,200 Được rồi. 1323 01:03:25,200 --> 01:03:27,780 >> Nếu chúng ta nhìn vào một mảng trong JavaScript, đây là 1324 01:03:27,780 --> 01:03:30,250 nhanh một ví dụ của một mảng của chuỗi. 1325 01:03:30,250 --> 01:03:31,967 Và mảng có thể phát triển năng động. 1326 01:03:31,967 --> 01:03:33,675 Họ không có một kích thước cố định theo cùng một cách 1327 01:03:33,675 --> 01:03:37,990 mà họ làm trong C. Chúng ta có thể truy cập yếu tố chỉ với các dấu ngoặc vuông. 1328 01:03:37,990 --> 01:03:41,720 >> Điều đó có vẻ rất giống PHP và rất nhiều như C, nơi chúng ta có thể nói rằng, trong trường hợp này, 1329 01:03:41,720 --> 01:03:48,360 nếu tôi muốn từ JavaScript, tôi sẽ làm arr dấu ngoặc vuông với 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 Và sau đó nếu có nhớ trong C khi chúng ta muốn có được độ dài của một mảng, 1332 01:03:55,390 --> 01:03:56,820 nó đã thực sự gây phiền nhiễu. 1333 01:03:56,820 --> 01:03:58,460 Nhưng trong JavaScript, siêu dễ dàng. 1334 01:03:58,460 --> 01:03:59,910 Tất cả chúng tôi làm, .length. 1335 01:03:59,910 --> 01:04:01,120 Cung cấp cho nó các độ dài. 1336 01:04:01,120 --> 01:04:01,892 Đó là nó. 1337 01:04:01,892 --> 01:04:03,140 >> Đung Đó là đơn giản. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Yeah, làm cho cuộc sống của bạn dễ dàng hơn rất nhiều. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, object-- không có. 1341 01:04:11,560 --> 01:04:15,480 Các đối tượng trong cảm giác JavaScript rất giống cấu trúc trong C 1342 01:04:15,480 --> 01:04:18,280 và mảng kết hợp trong PHP. 1343 01:04:18,280 --> 01:04:20,270 Vì vậy, những gì chúng tôi đã nhìn thấy một rất nhiều là JSON, mà 1344 01:04:20,270 --> 01:04:23,150 viết tắt của JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 Và đó là cơ bản một cách của cấu trúc dữ liệu của chúng tôi. 1346 01:04:25,550 --> 01:04:27,880 >> Vì vậy, chúng ta hãy xem một ví dụ, có lẽ là dễ nhất. 1347 01:04:27,880 --> 01:04:32,540 Vì vậy, đây là một ví dụ của một đối tượng lưu trữ các lớp, CS50. 1348 01:04:32,540 --> 01:04:37,790 Và khi tôi nói lớp, tôi có nghĩa là tất nhiên, không like-- yeah, khóa học, CS50. 1349 01:04:37,790 --> 01:04:40,730 Và bạn sẽ thấy rằng tất cả mọi thứ trong đối tượng 1350 01:04:40,730 --> 01:04:43,526 sẽ được chứa trong dấu ngoặc nhọn. 1351 01:04:43,526 --> 01:04:48,260 >> Và chúng tôi bắt đầu để kết hợp tên trường hoặc phím với các giá trị khác nhau. 1352 01:04:48,260 --> 01:04:52,920 Vì vậy, bạn có thể bắt đầu để xem làm thế nào loại này cảm thấy như một mảng kết hợp trong PHP. 1353 01:04:52,920 --> 01:04:57,450 Vì vậy, chúng ta sẽ kết hợp lĩnh vực này hoặc tên khóa, khóa học, với chuỗi, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Chúng tôi sẽ có một người hướng dẫn. 1356 01:04:59,940 --> 01:05:00,940 Chúng ta sẽ phải TF. 1357 01:05:00,940 --> 01:05:05,240 Chúng ta sẽ có số psets và chúng ta sẽ có ghi lại. 1358 01:05:05,240 --> 01:05:10,720 Và một điều mát mẻ để lưu ý là tất cả những điều này có các loại khác nhau, 1359 01:05:10,720 --> 01:05:12,020 và đó là hoàn toàn tốt đẹp. 1360 01:05:12,020 --> 01:05:15,330 >> Nó tốt cho một đối tượng, trong thực tế, nó có thể dự kiến ​​cho một đối tượng 1361 01:05:15,330 --> 01:05:19,620 để có một sự kết hợp của các chuỗi và con số và phép toán luận và mảng 1362 01:05:19,620 --> 01:05:23,420 và bất cứ điều gì khác có lẽ bạn muốn có bên trong đối tượng của bạn. 1363 01:05:23,420 --> 01:05:28,570 Và lưu ý rằng đây là sẽ là tên hoặc các phím, và sau đó chúng tôi chỉ 1364 01:05:28,570 --> 01:05:30,300 thiết lập nó tương đương với một ít đại tràng. 1365 01:05:30,300 --> 01:05:32,015 >> Đung chính xác thì JSON có ý nghĩa gì? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: gì chính xác thì JSON nghĩa là gì? 1367 01:05:33,890 --> 01:05:36,470 JSON chỉ là viết tắt của JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Nó chỉ là một cách để định dạng. 1369 01:05:38,430 --> 01:05:40,040 Yeah. 1370 01:05:40,040 --> 01:05:41,800 Đó là một cách để định dạng dữ liệu của chúng tôi. 1371 01:05:41,800 --> 01:05:43,620 >> Trong C, đó là cấu trúc. 1372 01:05:43,620 --> 01:05:45,800 Trong PHP, đó là mảng kết hợp. 1373 01:05:45,800 --> 01:05:47,120 Trong JavaScript, chúng ta có các đối tượng. 1374 01:05:47,120 --> 01:05:48,969 >> Đung vậy CS50 là một đối tượng? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 là các đối tượng trong trường hợp này. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Bây giờ, làm thế nào chúng ta thực sự truy cập các lĩnh vực hoặc thay đổi các lĩnh vực này. 1378 01:05:57,880 --> 01:06:03,920 Ví dụ, giả sử chúng ta quyết định rằng bạn muốn có một ít pset học kỳ này. 1379 01:06:03,920 --> 01:06:06,300 Thay vì chín, chúng tôi chỉ cần đi để có tám. 1380 01:06:06,300 --> 01:06:08,240 Làm thế nào chúng ta sẽ thay đổi điều đó? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, một cách sai lầm. 1382 01:06:09,436 --> 01:06:11,060 Có hai cách mà chúng ta có thể làm điều đó. 1383 01:06:11,060 --> 01:06:13,490 Số một là với dấu chấm ký hiệu và số hai 1384 01:06:13,490 --> 01:06:15,750 là với các ký hiệu khung vuông. 1385 01:06:15,750 --> 01:06:19,720 Vì vậy, ví dụ, nếu tôi muốn thay đổi hoặc truy cập 1386 01:06:19,720 --> 01:06:26,820 lĩnh vực psets trong đối tượng CS50 của chúng tôi, những gì tôi sẽ làm gì CS50.psets là, 1387 01:06:26,820 --> 01:06:30,770 vì vậy tên của đối tượng dot tên của các lĩnh vực hoặc phím. 1388 01:06:30,770 --> 01:06:37,120 >> Rất tương tự như vậy, nó chính xác tương đương để làm CS50, và sau đó 1389 01:06:37,120 --> 01:06:42,050 trong dấu ngoặc vuông, psets. 1390 01:06:42,050 --> 01:06:42,837 Mát? 1391 01:06:42,837 --> 01:06:44,298 Yeah. 1392 01:06:44,298 --> 01:06:47,707 >> Đung vậy là JSON về mặt kỹ thuật vẫn JavaScript, 1393 01:06:47,707 --> 01:06:51,814 mặc dù trong psets chúng tôi tách nó ra [Không nghe thấy]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Chắc chắn rồi. 1395 01:06:52,730 --> 01:06:56,290 Vậy câu hỏi là, là JavaScript và JSON tương đương? 1396 01:06:56,290 --> 01:07:00,750 Vì vậy, JSON là ký hiệu, về cơ bản cách mà chúng tôi viết ra 1397 01:07:00,750 --> 01:07:02,700 một đối tượng từ JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Vì vậy, họ không phải là chính xác như nhau. 1399 01:07:05,190 --> 01:07:08,950 >> Tôi sẽ nói JavaScript, có là đối tượng trong JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON có những đối tượng và in chúng và hiển thị chúng 1401 01:07:12,590 --> 01:07:15,160 hoặc lưu trữ chúng trong một cách tốt đẹp. 1402 01:07:15,160 --> 01:07:18,110 Vì vậy, JSON không phải là một lập trình ngữ theo cách đó là JavaScript. 1403 01:07:18,110 --> 01:07:20,900 Nó chỉ là những ký hiệu cho đối tượng của chúng tôi trong JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Yeah. 1405 01:07:21,400 --> 01:07:24,144 >> Đung Vì vậy, những gì chính xác [Không nghe thấy] hoàn thành? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Chắc chắn rồi. 1407 01:07:25,060 --> 01:07:27,727 Vì vậy, điều này thực sự không có gì. 1408 01:07:27,727 --> 01:07:28,935 Đây chỉ là một cách để truy cập. 1409 01:07:28,935 --> 01:07:31,393 Vì vậy, chúng ta hãy nói rằng chúng ta muốn thay đổi số lượng các bộ vấn đề 1410 01:07:31,393 --> 01:07:32,450 9-8. 1411 01:07:32,450 --> 01:07:34,383 Những gì chúng tôi làm là làm điều gì đó như CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Vâng, câu hỏi lớn. 1414 01:07:39,400 --> 01:07:40,733 Đây là chỉ để cho bạn cú pháp. 1415 01:07:40,733 --> 01:07:43,620 Không thực sự làm bất cứ điều gì hữu ích. 1416 01:07:43,620 --> 01:07:46,085 Bất kỳ câu hỏi? 1417 01:07:46,085 --> 01:07:48,210 Di chuyển ngay cùng. 1418 01:07:48,210 --> 01:07:51,960 >> Vì vậy, chúng ta hãy xem xét một ví dụ nhanh chóng như thế nào JavaScript hoạt động bởi vì tôi đã nói với bạn nó 1419 01:07:51,960 --> 01:07:55,170 làm tất cả những điều này mát mẻ và cho phép chúng ta chỉnh sửa các trang web. 1420 01:07:55,170 --> 01:07:56,970 Chúng ta hãy thực sự nhìn thấy nó trong hành động. 1421 01:07:56,970 --> 01:07:59,850 Vì vậy, lấy ví dụ, tập tin HTML này. 1422 01:07:59,850 --> 01:08:04,350 >> Và điều tôi muốn bạn tập trung vào là tag đặc biệt này, đó là một nút, 1423 01:08:04,350 --> 01:08:06,182 với id search_button. 1424 01:08:06,182 --> 01:08:08,670 Nó chỉ trên trang. 1425 01:08:08,670 --> 01:08:10,690 Vì vậy, bây giờ chúng ta hãy xem những gì chúng tôi thực sự có thể làm được. 1426 01:08:10,690 --> 01:08:12,560 >> Vâng, giả sử khi bạn nhấp vào nút đó 1427 01:08:12,560 --> 01:08:16,010 chúng tôi muốn thực hiện một alert-- bạn nhấp vào nút. 1428 01:08:16,010 --> 01:08:17,840 Hãy xem cách chúng tôi có thể làm điều đó. 1429 01:08:17,840 --> 01:08:23,869 Vì vậy window.onload-- này không phải là điều mà bạn đã nhìn thấy trong lớp, do đó 1430 01:08:23,869 --> 01:08:26,180 sẽ không cần phải biết nó cho các bài kiểm tra. 1431 01:08:26,180 --> 01:08:33,660 Nhưng điều này về cơ bản nói, OK, cuộc gọi chức năng này khi tải cửa sổ. 1432 01:08:33,660 --> 01:08:35,080 >> Vì vậy, đó chỉ là loại mã thiết lập. 1433 01:08:35,080 --> 01:08:36,390 Đừng lo lắng quá nhiều về điều đó. 1434 01:08:36,390 --> 01:08:39,170 Những gì tôi muốn bạn tập trung vào là ở đây. 1435 01:08:39,170 --> 01:08:44,020 Chúng tôi nói var Album bằng document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Vì vậy, như bạn có thể đoán, điều này không là nó nói, 1437 01:08:46,450 --> 01:08:50,920 OK, đi tìm các phần tử với ID search_button. 1438 01:08:50,920 --> 01:08:52,790 Và bây giờ chúng tôi có mà yếu tố thực tế và tôi 1439 01:08:52,790 --> 01:08:56,279 đi để lưu trữ nó trong một Album biến. 1440 01:08:56,279 --> 01:09:00,651 Và bây giờ chúng ta có thể thực sự sử dụng yếu tố đó và thay đổi nó, hoặc truy cập vào các giá trị của nó, 1441 01:09:00,651 --> 01:09:01,359 những điều như thế. 1442 01:09:01,359 --> 01:09:04,649 Chúng tôi thực sự có thể bắt đầu tham gia với các trang web. 1443 01:09:04,649 --> 01:09:10,330 >> Vì vậy, ở đây tôi nói, OK, bây giờ mà tôi có nút đó, khi nó được click, 1444 01:09:10,330 --> 01:09:12,859 gọi hàm vô danh này. 1445 01:09:12,859 --> 01:09:16,811 Vì vậy, đây là nơi ẩn danh chức năng trở nên hữu ích. 1446 01:09:16,811 --> 01:09:18,060 Và những gì hiện các chức năng làm gì? 1447 01:09:18,060 --> 01:09:20,529 Vâng, nó chỉ gọi này chức năng cảnh báo, và nói rằng, 1448 01:09:20,529 --> 01:09:22,910 bạn nhấp vào nút Tìm kiếm. 1449 01:09:22,910 --> 01:09:29,670 >> Vì vậy, những gì sẽ xảy ra nếu tôi đi đến bất cứ nơi nào HTML này sống và tôi nhấn nút, 1450 01:09:29,670 --> 01:09:33,729 Tôi sẽ nhận được một cảnh báo chút ưa thích nói rằng bạn nhấp vào nút. 1451 01:09:33,729 --> 01:09:40,710 Vì vậy, điều cần tập trung vào here-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 được một HTML đặc biệt phần tử với các ID nhất định. 1453 01:09:44,960 --> 01:09:48,529 Và bây giờ chúng ta có thể thiết lập những gì sẽ xảy ra khi 1454 01:09:48,529 --> 01:09:50,702 rằng yếu tố đặc biệt được nhấp. 1455 01:09:50,702 --> 01:09:52,670 >> Đung Chúng tôi có phải đặt tất cả điều đó ở? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Xin lỗi? 1457 01:09:53,162 --> 01:09:55,130 >> Đung Chúng ta phải vật lý mã tất cả điều đó? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Chúng ta có phải vật lý mã tất cả điều đó? 1459 01:09:56,340 --> 01:09:56,839 Vâng. 1460 01:09:56,839 --> 01:09:58,120 Không phải là loại gây phiền nhiễu? 1461 01:09:58,120 --> 01:10:00,032 Điều này là rất nhiều mã. 1462 01:10:00,032 --> 01:10:01,574 >> Đung Bạn có thể nhập khẩu một cái gì đó. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Đúng vậy. 1464 01:10:02,532 --> 01:10:03,610 Chúng ta có thể sử dụng một cái gì đó. 1465 01:10:03,610 --> 01:10:08,140 Và trong particular-- oh, đó là nói với tôi rằng tôi phải dạy phần. 1466 01:10:08,140 --> 01:10:11,061 Đặc biệt, chúng ta hãy sử dụng thư viện jQuery, 1467 01:10:11,061 --> 01:10:13,060 bởi vì đó là thực sự lâu dài và thực sự gây phiền nhiễu 1468 01:10:13,060 --> 01:10:16,860 và tôi muốn để có thể đơn giản hóa nó và làm cho nó ngắn hơn và dễ dàng hơn để viết. 1469 01:10:16,860 --> 01:10:19,810 >> Vì vậy, jQuery là một thư viện JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Vì vậy, JavaScript là lập trình ngôn ngữ; jQuery là một thư viện. 1471 01:10:24,930 --> 01:10:27,190 Và nó làm cho một loạt các thứ dễ dàng hơn. 1472 01:10:27,190 --> 01:10:33,230 Nó làm thay đổi và đi qua một tài liệu HTML dễ dàng hơn nhiều. 1473 01:10:33,230 --> 01:10:35,030 >> Nó làm cho các sự kiện xử lý dễ dàng hơn. 1474 01:10:35,030 --> 01:10:37,580 Nó làm cho hình ảnh động dễ dàng hơn và nó làm cho Ajax dễ dàng hơn. 1475 01:10:37,580 --> 01:10:40,140 Vì vậy, hãy nhảy vào hai những điều đó ngay bây giờ. 1476 01:10:40,140 --> 01:10:40,900 Xin lỗi. 1477 01:10:40,900 --> 01:10:42,620 Trước khi chúng tôi làm, một số cú pháp cơ bản. 1478 01:10:42,620 --> 01:10:46,870 >> Đây là những gì gọi là nhất thư viện jQuery như thế nào. 1479 01:10:46,870 --> 01:10:50,520 Chúng tôi sử dụng đồng đô la này sign-- không có dấu hiệu kết nối với PHP, 1480 01:10:50,520 --> 01:10:56,030 chỉ inconvenient-- tên của một selector, dấu chấm, và sau đó là một hành động. 1481 01:10:56,030 --> 01:10:58,860 Vì vậy, chúng ta hãy xem một số ví dụ cụ thể về điều đó. 1482 01:10:58,860 --> 01:11:02,980 >> Vì vậy, đây thực sự là như nhau mã từ slide sự kiện. 1483 01:11:02,980 --> 01:11:08,740 Vì vậy, từ lâu, điều này trở nên xấu xí này đẹp hơn nhiều, điều nhỏ hơn. 1484 01:11:08,740 --> 01:11:10,370 Vì vậy, hãy cố gắng để phá vỡ này xuống. 1485 01:11:10,370 --> 01:11:17,090 Điều này nói, OK, jQuery-- đô la này sign-- jQuery, tìm thấy tôi ngoài cửa sổ. 1486 01:11:17,090 --> 01:11:18,480 Vì vậy, đó là chọn. 1487 01:11:18,480 --> 01:11:21,800 >> Khi nó tải, gọi chức năng này. 1488 01:11:21,800 --> 01:11:23,880 Vì vậy, đó là tất cả mọi thứ bên trong. 1489 01:11:23,880 --> 01:11:24,380 ĐƯỢC. 1490 01:11:24,380 --> 01:11:25,740 Càng xa càng tốt? 1491 01:11:25,740 --> 01:11:26,750 Được rồi. 1492 01:11:26,750 --> 01:11:32,970 >> Bây giờ, jQuery, tìm tôi điều với ID search_button. 1493 01:11:32,970 --> 01:11:36,090 Và những gì nó được click, gọi chức năng này. 1494 01:11:36,090 --> 01:11:37,900 Và sau đó chức năng của này chính xác như nhau. 1495 01:11:37,900 --> 01:11:41,052 Chỉ cần làm một chút cảnh giác, bạn nhấp vào nút Tìm kiếm. 1496 01:11:41,052 --> 01:11:42,650 >> Vì vậy, nó thực sự tốt đẹp. 1497 01:11:42,650 --> 01:11:46,260 Nó thực sự ngưng tụ và đơn giản hoá mã của chúng tôi. 1498 01:11:46,260 --> 01:11:49,030 Làm thế nào tôi biết rằng đó là ID search_button 1499 01:11:49,030 --> 01:11:50,960 và không giống như lớp search_button? 1500 01:11:50,960 --> 01:11:52,024 >> Đung hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Yeah. 1502 01:11:52,940 --> 01:11:56,450 Biểu tượng băm này, nó chỉ giống như CSS. 1503 01:11:56,450 --> 01:12:00,080 Vì vậy, hãy nhớ rằng, với CSS, khi chúng ta muốn chọn một cái gì đó bằng ID, 1504 01:12:00,080 --> 01:12:01,590 chúng tôi sử dụng các ký pound. 1505 01:12:01,590 --> 01:12:05,400 Và khi chúng tôi muốn chọn một cái gì đó của lớp, chúng tôi sử dụng các dấu chấm. 1506 01:12:05,400 --> 01:12:06,870 Thật tuyệt. 1507 01:12:06,870 --> 01:12:08,230 Có lý? 1508 01:12:08,230 --> 01:12:11,500 Vì vậy, jQuery là vụ chỉ làm cho cuộc sống của chúng tôi dễ dàng hơn. 1509 01:12:11,500 --> 01:12:12,000 Yeah. 1510 01:12:12,000 --> 01:12:15,660 >> Đung Vì vậy, tôi là một chút nhầm lẫn như để bao hàm vô danh làm việc. 1511 01:12:15,660 --> 01:12:19,027 Bạn đặt tên anonymouse này chức năng, chức năng? 1512 01:12:19,027 --> 01:12:20,594 Làm thế nào nó được gọi là? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Chắc chắn rồi. 1514 01:12:21,510 --> 01:12:25,812 Vì vậy, chức năng chỉ là một từ khóa nói, tôi về để định nghĩa một hàm. 1515 01:12:25,812 --> 01:12:26,520 Đung Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 Và sau đó chúng tôi vượt qua nó như một lập luận đối với: chúng ta hãy 1518 01:12:32,120 --> 01:12:37,040 one-- bên này đến chức năng nhấp chuột. 1519 01:12:37,040 --> 01:12:39,420 Vì vậy, yeah, chức năng đó, chức năng ẩn danh này, 1520 01:12:39,420 --> 01:12:40,910 trở thành một đối số thực tế. 1521 01:12:40,910 --> 01:12:43,632 Vì vậy, hãy nhớ trong JavaScript, chúng tôi có thể điều trị các chức năng như các giá trị. 1522 01:12:43,632 --> 01:12:44,340 Đung Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Yeah. 1524 01:12:45,256 --> 01:12:46,035 Tôi thích rằng "oh." 1525 01:12:46,035 --> 01:12:47,490 Tốt đẹp. 1526 01:12:47,490 --> 01:12:49,915 Các câu hỏi khác? 1527 01:12:49,915 --> 01:12:50,505 Thời gian? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Tốt. 1529 01:12:51,380 --> 01:12:52,760 Tốt. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Một số jQuery hữu ích nhanh chóng. 1532 01:12:55,720 --> 01:12:57,559 Tôi sẽ không đi thông qua tất cả các. 1533 01:12:57,559 --> 01:12:59,350 Các slide sẽ được lên trực tuyến một chút 1534 01:12:59,350 --> 01:13:02,040 sau đó, vì vậy bạn có thể kiểm tra nó ra một chút sau đó. 1535 01:13:02,040 --> 01:13:07,120 Nhưng về cơ bản, nói chung mô hình tổ chức mà chúng ta nói, 1536 01:13:07,120 --> 01:13:11,510 OK, hey, jQuery, đây là của tôi chọn và sau đó đây là một hành động. 1537 01:13:11,510 --> 01:13:15,940 Và bạn có thể làm những việc như truy cập giá trị của một biểu mẫu, truy cập một số HTML, 1538 01:13:15,940 --> 01:13:19,195 Kiểm soát những gì sẽ xảy ra khi người dùng nộp một hình thức, những điều như thế. 1539 01:13:19,195 --> 01:13:20,106 Vâng. 1540 01:13:20,106 --> 01:13:22,090 >> Đung Vì vậy, trong kỳ thi, chúng ta sẽ cần 1541 01:13:22,090 --> 01:13:25,066 để biết khá nhiều từ các tài liệu jQuery. 1542 01:13:25,066 --> 01:13:31,018 Vì vậy, cho rằng chúng tôi sao chép / dán jQuery tài liệu để cheat sheet của chúng tôi, 1543 01:13:31,018 --> 01:13:32,506 nơi của đường vẽ? 1544 01:13:32,506 --> 01:13:33,957 Giống như bao nhiêu chúng ta cần phải biết? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Great câu hỏi. 1546 01:13:35,290 --> 01:13:37,765 Câu hỏi là về cơ bản là cho rằng bạn 1547 01:13:37,765 --> 01:13:41,330 không thể truy cập tài liệu jQuery trong khi thử nghiệm, bao nhiêu nên bạn 1548 01:13:41,330 --> 01:13:41,830 biết? 1549 01:13:41,830 --> 01:13:45,540 Chúng tôi sẽ không mong đợi bạn đến với một số chức năng ngẫu nhiên 1550 01:13:45,540 --> 01:13:47,240 mà chúng ta mong đợi bạn để Google. 1551 01:13:47,240 --> 01:13:52,930 >> Những điều đó là công bằng trò chơi là tôi sẽ nói chỉ là loại cú pháp chung, 1552 01:13:52,930 --> 01:13:58,310 việc có thể chọn bằng ID và bởi class-- vì vậy chỉ cần như CSS. 1553 01:13:58,310 --> 01:14:01,876 Và sau đó các chức năng thực tế themself, chúng tôi sẽ có thể cho bạn biết. 1554 01:14:01,876 --> 01:14:02,376 Yeah. 1555 01:14:02,376 --> 01:14:05,591 >> Đung Vì vậy, khi bạn chọn bởi lớp sẽ có nghĩa là dấu chấm. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Vâng, chính xác. 1557 01:14:06,840 --> 01:14:07,340 Tốt. 1558 01:14:07,340 --> 01:14:10,461 Khi bạn chọn bằng class, nó sẽ để được chấm thay vì các ký pound. 1559 01:14:10,461 --> 01:14:10,960 Vâng. 1560 01:14:10,960 --> 01:14:12,710 >> Đung Sẽ bạn đi qua những khác biệt 1561 01:14:12,710 --> 01:14:14,310 giữa việc chọn bởi ID và class? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Chắc chắn rồi. 1563 01:14:14,560 --> 01:14:17,510 Sự khác biệt giữa việc lựa chọn ID và chọn bởi lớp. 1564 01:14:17,510 --> 01:14:20,685 Vì vậy, như Maria nói một chút ở trên, có 1565 01:14:20,685 --> 01:14:26,280 chỉ có thể là một thành phần của HTML với một ID nhất định, trong khi lớp học, 1566 01:14:26,280 --> 01:14:29,740 nó cho phép chúng ta nhóm một bó các yếu tố khác nhau lại với nhau, 1567 01:14:29,740 --> 01:14:34,300 vì vậy những điều có liên quan, nhưng không giống hệt nhau. 1568 01:14:34,300 --> 01:14:35,685 Điều đó trả lời các câu hỏi? 1569 01:14:35,685 --> 01:14:36,200 Thật tuyệt vời. 1570 01:14:36,200 --> 01:14:37,194 Vâng. 1571 01:14:37,194 --> 01:14:40,680 >> Đung gì nếu bạn có nhiều điều đó là trong cùng một lớp? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Điều gì sẽ xảy ra nếu bạn có nhiều điều mà 1573 01:14:42,150 --> 01:14:43,280 là những lớp học như thế? 1574 01:14:43,280 --> 01:14:45,829 Vì vậy, ví dụ, nếu chúng tôi chỉ sử dụng JavaScript tinh khiết, 1575 01:14:45,829 --> 01:14:48,120 chúng tôi sẽ làm một cái gì đó như document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 Và sau đó những gì mà thực sự làm là lợi nhuận một mảng của các yếu tố. 1578 01:14:56,320 --> 01:14:59,517 >> Và bạn phải hoặc là lặp qua họ hoặc tìm cái nào bạn muốn. 1579 01:14:59,517 --> 01:15:01,350 Nó sẽ không để cho bạn một yếu tố duy nhất. 1580 01:15:01,350 --> 01:15:03,450 Nó sẽ cung cấp cho bạn một mảng của các yếu tố. 1581 01:15:03,450 --> 01:15:05,280 Great câu hỏi. 1582 01:15:05,280 --> 01:15:07,700 Bất cứ điều gì khác? 1583 01:15:07,700 --> 01:15:09,520 Thật tuyệt vời. 1584 01:15:09,520 --> 01:15:12,860 >> Vì vậy, tôi nghĩ rằng nếu bạn đã quen thuộc với bất kỳ jQuery bạn đã thấy trong pset, 1585 01:15:12,860 --> 01:15:15,600 bạn sẽ được tốt để đi. 1586 01:15:15,600 --> 01:15:16,325 Câu hỏi? 1587 01:15:16,325 --> 01:15:17,610 Ồ không. 1588 01:15:17,610 --> 01:15:18,859 Tôi thực sự phải dạy. 1589 01:15:18,859 --> 01:15:19,358 Thư giãn. 1590 01:15:19,358 --> 01:15:20,035 Nó sẽ được tốt. 1591 01:15:20,035 --> 01:15:20,660 Tôi sẽ đến đó. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Hãy nói về Ajax. 1594 01:15:26,870 --> 01:15:31,350 Vì vậy, Ajax là có được a-- tốt, chúng ta hãy bắt đầu với những gì nó có nghĩa là. 1595 01:15:31,350 --> 01:15:32,350 Đó là một từ viết tắt. 1596 01:15:32,350 --> 01:15:35,855 Nó là viết tắt của Asynchronous Javascript và XML. 1597 01:15:35,855 --> 01:15:39,800 Và XML được về cơ bản là có được [Không nghe thấy] với một kiểu dữ liệu của chúng tôi. 1598 01:15:39,800 --> 01:15:42,100 Nhưng chúng tôi đã không thực sự sử dụng XML. 1599 01:15:42,100 --> 01:15:43,430 Thay vào đó, chúng ta chỉ cần sử dụng JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Vì vậy, về cơ bản, nó là một số data-- không đồng bộ, JavaScript, và dữ liệu, 1601 01:15:48,350 --> 01:15:50,040 trong trường hợp này, JSON. 1602 01:15:50,040 --> 01:15:52,820 Và mục tiêu của chúng tôi, như chúng tôi đã đề cập một chút trước đó, 1603 01:15:52,820 --> 01:15:56,880 được để có thể làm cho một yêu cầu, đã yêu cầu mà làm 1604 01:15:56,880 --> 01:16:00,700 điều của nó trong nền, nhưng vẫn tiếp tục 1605 01:16:00,700 --> 01:16:02,550 làm những gì chúng tôi đã có ý định làm. 1606 01:16:02,550 --> 01:16:06,650 Và sau đó khi thông tin đó là sẵn sàng, sau đó chúng tôi sẽ kết hợp nó. 1607 01:16:06,650 --> 01:16:08,470 >> Vì vậy, chúng ta hãy xem những gì này thực sự trông như thế nào. 1608 01:16:08,470 --> 01:16:11,210 Và điều này, bạn nên có một chút quen thuộc 1609 01:16:11,210 --> 01:16:13,680 từ pset8, một trong những bạn chỉ lại. 1610 01:16:13,680 --> 01:16:16,200 Vì vậy, đây là một jQuery hợp lệ chức năng mà chúng ta có thể 1611 01:16:16,200 --> 01:16:18,250 muốn biết about-- dấu đô la này. 1612 01:16:18,250 --> 01:16:21,500 Vì vậy, nó nói hàm jQuery, .getJSON. 1613 01:16:21,500 --> 01:16:25,020 >> Và những gì chức năng này có phải nó là mất một URL và một số parameters-- 1614 01:16:25,020 --> 01:16:28,000 vì vậy tôi nghĩ rằng trong trường hợp của pset8, nó là như thế, 1615 01:16:28,000 --> 01:16:33,520 URL là articles.php và thông số là đi = một số mã bưu chính. 1616 01:16:33,520 --> 01:16:41,580 Và nó nói, OK, tạo một yêu cầu để URL này với các tham số đã cho. 1617 01:16:41,580 --> 01:16:43,480 Và điều đó chỉ xảy ra. 1618 01:16:43,480 --> 01:16:47,730 >> Khi nó kết thúc, nó là một trong hai sẽ hoàn tất thành công 1619 01:16:47,730 --> 01:16:49,370 hoặc nó sẽ thất bại. 1620 01:16:49,370 --> 01:16:53,480 Vì vậy, đây là tương đương với các cuộc gọi Rob và yêu cầu ông phải làm điều gì đó. 1621 01:16:53,480 --> 01:17:00,260 Và sau đó khi ông gọi lại, ông là một trong hai sẽ nói rằng tôi đang thực hiện hoặc tôi không thành công. 1622 01:17:00,260 --> 01:17:04,030 >> Vì vậy, trong trường hợp bạn đang thực hiện, bạn nói, OK, tôi làm. 1623 01:17:04,030 --> 01:17:05,980 Và sau đó bạn gọi chức năng này. 1624 01:17:05,980 --> 01:17:08,915 Trong trường hợp này, nó sẽ là một chức năng đưa một số thông tin. 1625 01:17:08,915 --> 01:17:12,890 Người ta thường quan tâm là dữ liệu, các dữ liệu mà chúng tôi đã thực sự trở lại 1626 01:17:12,890 --> 01:17:15,900 như là kết quả của việc gọi .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> Và bạn có thể làm điều gì đó với nó. 1628 01:17:17,470 --> 01:17:23,670 Vì vậy, trong trường hợp của pset8, chúng tôi hiển thị nó như là một danh sách. 1629 01:17:23,670 --> 01:17:29,050 Fail là có được một chức năng được gọi là nếu yêu cầu không 1630 01:17:29,050 --> 01:17:30,450 vì lý do gì. 1631 01:17:30,450 --> 01:17:35,104 Và trong trường hợp của pset8, chúng tôi chỉ console.log nó. 1632 01:17:35,104 --> 01:17:36,020 Bất kỳ câu hỏi về điều đó? 1633 01:17:36,020 --> 01:17:36,300 Yeah. 1634 01:17:36,300 --> 01:17:39,633 >> Đung chúng ta có thể chỉ cần sử dụng chức năng theta thay vì chức năng, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Chắc chắn rồi. 1637 01:17:44,380 --> 01:17:46,713 Vì vậy, yeah, tôi nghĩ rằng trong pset, chúng ta chỉ thấy chức năng dữ liệu. 1638 01:17:46,713 --> 01:17:48,700 Vì vậy, nó chỉ là the-- có, OK. 1639 01:17:48,700 --> 01:17:50,510 Đó là những gì chúng ta đã thấy trong các pset. 1640 01:17:50,510 --> 01:17:51,480 Điều đó hoàn toàn tốt. 1641 01:17:51,480 --> 01:17:54,210 >> Đây chỉ là nếu bạn muốn để kéo ra thêm thông tin, 1642 01:17:54,210 --> 01:17:57,190 đó là những điều mà bạn có thể nhận được từ .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Câu hỏi hay. 1644 01:17:59,040 --> 01:17:59,706 Bất cứ điều gì khác? 1645 01:17:59,706 --> 01:18:00,206 Yeah. 1646 01:18:00,206 --> 01:18:01,787 >> Đung vậy getJSON là Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 Vì vậy, đây là các loại phần khó khăn. 1649 01:18:05,700 --> 01:18:12,390 Đây là một chức năng jQuery cho phép bạn để làm cuộc gọi không đồng bộ. 1650 01:18:12,390 --> 01:18:16,080 Và những cuộc gọi không đồng bộ, đó là những gì chúng ta đã được đề cập đến như Ajax. 1651 01:18:16,080 --> 01:18:16,850 Yeah. 1652 01:18:16,850 --> 01:18:20,185 Điều đó đã cho tôi một thời gian rất dài để kéo nhau khi tôi còn là sinh viên. 1653 01:18:20,185 --> 01:18:21,560 Đung Bạn có thể nói rằng một lần nữa? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Yeah. 1655 01:18:22,476 --> 01:18:23,630 Tôi có thể nói rằng một lần nữa? 1656 01:18:23,630 --> 01:18:29,010 Chức năng này .getJSON, nó là một chức năng jQuery. 1657 01:18:29,010 --> 01:18:31,970 Và nó sẽ làm cho một cuộc gọi không đồng bộ. 1658 01:18:31,970 --> 01:18:35,700 Và những cuộc gọi không đồng bộ, chúng tôi đã được đề cập đến những người như Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Bất kỳ câu hỏi khác? 1661 01:18:41,872 --> 01:18:43,330 Chúng tôi chỉ có một vài phút còn lại. 1662 01:18:43,330 --> 01:18:45,080 Và Maria đi quấn lên với an ninh 1663 01:18:45,080 --> 01:18:47,464 và sau đó chúng ta sẽ được chỉ là về thực hiện. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Vì vậy, đây is-- chỉ mất một vài giây để nhìn qua này. 1666 01:18:54,030 --> 01:18:56,750 Và đây không phải là một cái gì đó thực sự tuyệt vời. 1667 01:18:56,750 --> 01:18:59,430 Và ai đó có thể cho tôi biết tại sao? 1668 01:18:59,430 --> 01:19:05,650 Điều gì đang xảy ra trong foo và có thể có thể có khả năng dẫn đến một cái gì đó xấu, 1669 01:19:05,650 --> 01:19:06,770 và điều đó được gọi là? 1670 01:19:06,770 --> 01:19:07,270 Yeah. 1671 01:19:07,270 --> 01:19:10,391 Đung Nếu đối số đó là thông qua tại là hơn 12 ký tự, 1672 01:19:10,391 --> 01:19:11,454 nó có thể tràn ra ngoài. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Đúng vậy. 1674 01:19:12,370 --> 01:19:14,180 Hoàn hảo. 1675 01:19:14,180 --> 01:19:15,384 Đó là những gì được gọi là? 1676 01:19:15,384 --> 01:19:16,300 Bạn chỉ cần đề cập đến nó. 1677 01:19:16,300 --> 01:19:16,840 >> Đung Buffer overflow. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Yup, tràn bộ đệm. 1679 01:19:18,381 --> 01:19:21,230 Vì vậy, đây là một cái gì đó mà chúng ta tham khảo như tràn bộ đệm. 1680 01:19:21,230 --> 01:19:25,500 Và chúng ta thấy rằng bên trong của foo, chúng tôi đã xác định đệm của chúng tôi, c, 1681 01:19:25,500 --> 01:19:27,240 với kích thước là 12. 1682 01:19:27,240 --> 01:19:32,680 Tuy nhiên, trong chính chúng ta làm không kiểm tra trong bất kỳ cách nào cả 1683 01:19:32,680 --> 01:19:36,480 liệu argv1-- để là số thứ hai. 1684 01:19:36,480 --> 01:19:39,630 Chúng tôi không kiểm tra xem kích thước của nó là thích hợp. 1685 01:19:39,630 --> 01:19:43,380 >> Vì vậy, nếu chúng ta có một người sử dụng đặc biệt là độc hại 1686 01:19:43,380 --> 01:19:47,170 người đặt trong một số lập luận rằng đã còn hơn 12, và sau đó có khả năng 1687 01:19:47,170 --> 01:19:50,850 vượt ra ngoài giới hạn của đó lập luận, đã có một số mã thực thi 1688 01:19:50,850 --> 01:19:55,570 rằng ông đã cố gắng để làm một cái gì đó xấu với nó; sau đó điều này, điều gì sẽ xảy ra, 1689 01:19:55,570 --> 01:19:59,310 sẽ ghi đè lên sự trở lại địa chỉ của hàm foo, 1690 01:19:59,310 --> 01:20:04,370 gây ra các chức năng để khi trở về để thực thi mã đó. 1691 01:20:04,370 --> 01:20:07,540 Và sau đó những điều xấu có thể xảy ra. 1692 01:20:07,540 --> 01:20:09,850 Liệu điều này có ý nghĩa với tất cả mọi người? 1693 01:20:09,850 --> 01:20:12,424 >> Và làm thế nào chúng ta có thể bảo vệ chống lại điều này? 1694 01:20:12,424 --> 01:20:13,090 Bất kỳ đề xuất? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Về cơ bản, bên trong của có khả năng foo, làm thế nào 1697 01:20:21,890 --> 01:20:28,294 chúng ta có thể kiểm tra để đảm bảo rằng không thể xảy ra? 1698 01:20:28,294 --> 01:20:33,879 >> Đung Nếu kích thước 12 được vượt quá, bạn sẽ cấp phát bộ nhớ bổ sung? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Đề xuất là, phân bổ bộ nhớ bổ sung kích thước vượt quá. 1700 01:20:37,170 --> 01:20:39,800 Trên thực tế, chúng ta có thể làm điều gì đó rất nhiều đơn giản hơn đó là tốt. 1701 01:20:39,800 --> 01:20:44,870 Chúng tôi chỉ có thể có được độ dài chuỗi của các đối số được nhập, 1702 01:20:44,870 --> 01:20:48,590 kiểm tra nếu đó là ít hơn hoặc bằng 12-- 1703 01:20:48,590 --> 01:20:50,790 đó là những gì chúng tôi muốn nó là bởi vì chúng tôi không muốn 1704 01:20:50,790 --> 01:20:52,373 nó vượt quá giới hạn của bộ đệm của chúng tôi. 1705 01:20:52,373 --> 01:20:55,690 Và sau đó, nếu không, chúng tôi có thể làm việc với các đối số. 1706 01:20:55,690 --> 01:21:00,296 Và sau đó nếu có, chúng tôi thực sự muốn để Yello tiềm năng ở người sử dụng. 1707 01:21:00,296 --> 01:21:01,670 Nhưng điều này là làm thế nào chúng tôi sẽ làm điều đó. 1708 01:21:01,670 --> 01:21:02,443 Vâng. 1709 01:21:02,443 --> 01:21:04,360 >> Đung thể bạn giải thích memcpy nhanh chóng thực? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, xin lỗi. 1711 01:21:05,443 --> 01:21:06,040 Vâng. 1712 01:21:06,040 --> 01:21:11,290 Memcpy mất bất cứ điều gì is-- xin lỗi, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy mất bất cứ điều gì là trong quán bar, bất cứ điều gì được thông qua 1714 01:21:15,850 --> 01:21:18,050 lên foo như các đối số dòng lệnh. 1715 01:21:18,050 --> 01:21:19,440 Vì vậy, nó sẽ mất argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 được gọi là thanh ở đây. 1717 01:21:21,420 --> 01:21:24,453 Vì vậy, nó sẽ mất thanh và nó sẽ sao chép nó vào c. 1718 01:21:24,453 --> 01:21:25,402 >> Đung OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: Và nó sẽ copy-- đối số thứ ba chỉ đề cập 1720 01:21:28,360 --> 01:21:30,601 đến bao nhiêu nó sẽ sao chép vào c. 1721 01:21:30,601 --> 01:21:31,142 Đung Ah. 1722 01:21:31,142 --> 01:21:33,030 Vì vậy, cái này sao chép tất cả của nó sau đó. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Yeah, nó sao chép tất cả của nó. 1724 01:21:34,310 --> 01:21:34,810 Vâng. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Đầu tiên, chúng tôi đảm bảo thanh không phải là bằng vô giá trị bởi vì nó là một con trỏ. 1727 01:21:41,910 --> 01:21:44,680 Sau đó chúng ta có được độ dài chuỗi các quán bar. 1728 01:21:44,680 --> 01:21:47,530 Chúng tôi đảm bảo rằng nó nhỏ hơn hoặc bằng 12. 1729 01:21:47,530 --> 01:21:50,070 Và sau đó bởi vì chúng tôi đã thực hiện chắc chắn, chúng ta có thể thực sự 1730 01:21:50,070 --> 01:21:53,122 memcpy và chắc chắn rằng đó là OK. 1731 01:21:53,122 --> 01:21:53,705 Bất kỳ câu hỏi? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Thật tuyệt. 1734 01:21:58,690 --> 01:22:00,400 Tôi có hai câu hỏi đúng hay sai. 1735 01:22:00,400 --> 01:22:05,470 Bất cứ ai có thể cho tôi biết ngay nếu đây là đúng hay sai? 1736 01:22:05,470 --> 01:22:07,460 Có, đó là sai. 1737 01:22:07,460 --> 01:22:07,960 Chính xác. 1738 01:22:07,960 --> 01:22:09,330 Cả hai người họ đều sai lầm. 1739 01:22:09,330 --> 01:22:12,682 Vì vậy, bằng cách sử dụng một mật khẩu duy nhất là ý tưởng không bao giờ thực sự tốt 1740 01:22:12,682 --> 01:22:14,890 bởi vì nếu ai đó biết mật khẩu của bạn, họ có thể chỉ 1741 01:22:14,890 --> 01:22:16,260 truy cập vào tất cả các tài khoản khác của bạn. 1742 01:22:16,260 --> 01:22:19,260 Và sau đó các biểu tượng không phải làm gì để đảm bảo an ninh. 1743 01:22:19,260 --> 01:22:24,900 Chúng tôi thường phải tìm kiếm HTTPS thay vì HTTP và các URL. 1744 01:22:24,900 --> 01:22:28,560 >> Và một số loại khác của các cuộc tấn công mà chúng tôi đã đề cập, 1745 01:22:28,560 --> 01:22:31,390 rằng David đã đề cập trong thuyết trình, các cuộc tấn công SQL injection. 1746 01:22:31,390 --> 01:22:37,310 Chúng ta đã thấy rằng nếu chúng ta don't-- sự Chức năng truy vấn CS50 làm cho chắc chắn rằng SQL 1747 01:22:37,310 --> 01:22:39,530 tấn công tiêm không thể xảy ra. 1748 01:22:39,530 --> 01:22:42,640 Nhưng nếu chúng ta không sử dụng CS50, quote, unquote "trong truy vấn," 1749 01:22:42,640 --> 01:22:46,830 chúng ta sẽ phải đảm bảo rằng các người sử dụng đầu vào không phải là thực sự một số SQL 1750 01:22:46,830 --> 01:22:49,670 truy vấn mà sẽ gây ra tất cả bảng của chúng tôi để được giảm 1751 01:22:49,670 --> 01:22:54,070 hoặc một cái gì đó xấu xảy ra với cơ sở dữ liệu của chúng tôi. 1752 01:22:54,070 --> 01:22:56,790 >> Phiên cướp là một loại tấn công 1753 01:22:56,790 --> 01:23:05,940 điều đó xảy ra khi một số xấu người sử dụng một số phiên của nạn nhân 1754 01:23:05,940 --> 01:23:08,740 ID để truy cập các thông tin đăng nhập. 1755 01:23:08,740 --> 01:23:13,620 Vì vậy, một ví dụ rất nhỏ trong số đó là như thế nào nếu chúng ta có một máy tính công cộng, 1756 01:23:13,620 --> 01:23:21,120 sau đó người xấu đó đăng nhập và sau đó họ có cookie được lưu lại. 1757 01:23:21,120 --> 01:23:23,380 Và cookie không thay đổi cho phiên. 1758 01:23:23,380 --> 01:23:27,620 >> Sau đó, chúng tôi đã là nạn nhân đi và sau đó đăng nhập vào trang web. 1759 01:23:27,620 --> 01:23:30,290 Các cookie không thay đổi cho một buổi nào đó. 1760 01:23:30,290 --> 01:23:33,060 Và sau đó các nạn nhân đăng nhập vào các trang web và sau đó rời khỏi. 1761 01:23:33,060 --> 01:23:36,190 Và sau đó người người đi lại sau đó có thể vẫn sử dụng ID phiên họp của họ 1762 01:23:36,190 --> 01:23:37,430 để truy cập thông tin của họ. 1763 01:23:37,430 --> 01:23:40,050 Vì vậy, đó là một ví dụ về làm thế nào mà có thể xảy ra. 1764 01:23:40,050 --> 01:23:45,570 >> Và sau đó tôi sẽ không lo lắng quá nhiều về mã cụ thể hoặc bất cứ điều gì 1765 01:23:45,570 --> 01:23:49,270 như thế có thể gây ra điều này, nhưng có một số loại ý tưởng gì 1766 01:23:49,270 --> 01:23:51,400 các biến có liên quan trong việc này là. 1767 01:23:51,400 --> 01:23:53,897 Và sau đó thao tác tiêu đề dữ liệu là một loại tấn công 1768 01:23:53,897 --> 01:23:55,230 có David đã nói chuyện về. 1769 01:23:55,230 --> 01:23:59,730 Và nó chỉ đề cập đến những gì có thể xảy ra khi 1770 01:23:59,730 --> 01:24:04,300 các phản ứng, các HTTP phản ứng bên trong phần đầu của chúng tôi 1771 01:24:04,300 --> 01:24:05,720 không được làm vệ sinh đúng cách. 1772 01:24:05,720 --> 01:24:14,340 >> Và bất kỳ fields-- ví dụ, nếu một người nào đó sẽ ghi đè lên một trong những tiêu đề 1773 01:24:14,340 --> 01:24:18,860 giá trị có chứa bất cứ điều gì nhiều hơn những gì họ cần và thực sự contain-- 1774 01:24:18,860 --> 01:24:22,720 đựng, ví dụ, một 200 Mã trạng thái OK, sau đó họ 1775 01:24:22,720 --> 01:24:26,890 khả năng có thể làm độc hại điều khi họ không được phép. 1776 01:24:26,890 --> 01:24:30,815 Nhưng tôi sẽ không lo lắng quá nhiều về mã cụ thể 1777 01:24:30,815 --> 01:24:34,110 mà có thể gây ra điều này, chỉ là loại hiểu biết 1778 01:24:34,110 --> 01:24:37,290 thứ cấp cao như thế. 1779 01:24:37,290 --> 01:24:39,570 >> Tôi nghĩ rằng đây là tất cả rằng chúng ta phải trang trải. 1780 01:24:39,570 --> 01:24:40,090 Kinh ngạc. 1781 01:24:40,090 --> 01:24:43,310 Bất cứ ai có bất cứ câu hỏi nào về trong những điều mà chúng tôi được bảo hiểm? 1782 01:24:43,310 --> 01:24:44,213 Vâng. 1783 01:24:44,213 --> 01:24:48,077 >> Đung vậy, một loại câu hỏi nhiều hơn về hậu cần. 1784 01:24:48,077 --> 01:24:53,400 Là nội dung chủ yếu tập trung vào những thứ sau bài kiểm tra 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Vì vậy, Câu hỏi là, là nội dung 1786 01:24:55,730 --> 01:24:59,720 tập trung chủ yếu vào những điều sau bài kiểm tra 1? 1787 01:24:59,720 --> 01:25:06,070 Vì vậy, trọng tâm là về sau đố 1, ngoại trừ 1788 01:25:06,070 --> 01:25:10,914 rằng chúng ta cần phải tập trung vào những thứ trong pset5 và rất nhiều các cấu trúc dữ liệu 1789 01:25:10,914 --> 01:25:11,580 mà chúng tôi được bảo hiểm. 1790 01:25:11,580 --> 01:25:14,300 Và chúng ta không thể nói rằng chúng tôi có thể bỏ qua bất cứ điều gì trước khi 1791 01:25:14,300 --> 01:25:17,120 mà bởi vì nó được xây dựng trên nó là tốt. 1792 01:25:17,120 --> 01:25:21,845 >> Vì vậy, tập trung vào đó, cộng với chất liệu pset5 như bao gồm cả danh sách liên kết, ngăn xếp, 1793 01:25:21,845 --> 01:25:23,720 hàng đợi, và tất cả mọi thứ Hannah đã đi qua. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Đúng vậy. 1795 01:25:24,050 --> 01:25:27,450 Vâng, chúng tôi đã đi qua tất cả những thứ C ngay từ đầu rất nhanh chóng. 1796 01:25:27,450 --> 01:25:29,090 Nhưng hãy chắc chắn để xem xét đó. 1797 01:25:29,090 --> 01:25:32,700 Trở lại và xem các câu hỏi 0 bình luận. 1798 01:25:32,700 --> 01:25:36,110 >> Một vài ghi chú về hậu cần nhiều hơn, chỉ khi chúng ta có sự chú ý của bạn. 1799 01:25:36,110 --> 01:25:39,100 Chúng tôi sẽ có những giờ văn phòng cả ngày thứ hai và thứ ba đêm. 1800 01:25:39,100 --> 01:25:41,540 Họ đang đi để được ở MD 119. 1801 01:25:41,540 --> 01:25:44,220 Đây là tất cả trên trang web, vì vậy nếu bạn không nghe thấy nó, không phải lo lắng. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8:30 đến 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Yeah 8:30 đến 11:00. 1804 01:25:46,260 --> 01:25:46,910 Chúng tôi sẽ ở đó. 1805 01:25:46,910 --> 01:25:48,368 Chúng tôi sẽ có mặt để trả lời các câu hỏi. 1806 01:25:48,368 --> 01:25:49,480 Đó là chill đẹp và vui vẻ. 1807 01:25:49,480 --> 01:25:53,240 Các bạn có thể yêu cầu bất kỳ câu hỏi mà bạn có trên bài kiểm tra 1. 1808 01:25:53,240 --> 01:25:55,740 Và đố 1 là trên Thứ tư, do may mắn. 1809 01:25:55,740 --> 01:25:59,770 Nếu bạn có bất kỳ câu hỏi, có thể đến nói chuyện với chúng tôi lên ở đây một ngày-một. 1810 01:25:59,770 --> 01:26:00,880 Mát. 1811 01:26:00,880 --> 01:26:01,630 Cám ơn rất nhiều. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Cảm ơn rất nhiều, guys. 1813 01:26:02,880 --> 01:26:03,480 >> Đung Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [Vỗ tay] 1815 01:26:05,930 --> 01:26:07,530