1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [MUSIC CHƠI] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Hi, tất cả mọi người. 5 00:00:12,700 --> 00:00:15,866 Cảm ơn các bạn rất nhiều vì đã đến ra trong thời tiết kinh tởm cho một bài kiểm tra 6 00:00:15,866 --> 00:00:16,910 xem xét phiên. 7 00:00:16,910 --> 00:00:20,020 Như các bạn biết, đố vui một là ngày thứ Tư này. 8 00:00:20,020 --> 00:00:22,209 Vì vậy, chúng ta sẽ đi thông qua một loạt các chủ đề. 9 00:00:22,209 --> 00:00:24,000 Davin: Hey, tôi có thể nói một cái gì đó thật nhanh chóng? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Yeah, Davin của đi để nói một cái gì đó thật nhanh. 11 00:00:25,215 --> 00:00:25,780 Davin: Xin lỗi. 12 00:00:25,780 --> 00:00:29,490 Chỉ cần thực sự nhanh chóng, nếu bạn có thắc mắc về các bài kiểm tra, bạn có thể đi trực tuyến. 13 00:00:29,490 --> 00:00:32,420 Tới năm 2014 đố một, về các bài kiểm tra. 14 00:00:32,420 --> 00:00:34,680 Nó có hậu về nơi để đi, khi nào đi. 15 00:00:34,680 --> 00:00:38,100 Nếu bạn đang học đồng thời, chúng tôi sẽ có một bài kiểm tra trang điểm lúc 5:30. 16 00:00:38,100 --> 00:00:40,350 Hoặc nếu bạn đã gửi cho tôi một vấn đề, bạn có một số vấn đề khác. 17 00:00:40,350 --> 00:00:42,640 Nhưng 05:30 là make-up thời gian vào thứ Tư. 18 00:00:42,640 --> 00:00:44,540 Nhưng nếu bạn có câu hỏi, câu hỏi chung chung, 19 00:00:44,540 --> 00:00:45,748 trực tuyến có tất cả các dịch vụ hậu cần. 20 00:00:45,748 --> 00:00:47,690 Vì vậy, kiểm tra đầu tiên. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Vì vậy, đây là danh sách lớn của các chủ đề rằng chúng ta sẽ đi qua ngày hôm nay. 23 00:00:53,030 --> 00:00:57,390 Tôi sẽ bao gồm tất cả các C công cụ, đó là cột đầu tiên. 24 00:00:57,390 --> 00:01:00,710 Vì vậy, những thứ mà chúng tôi C bao phủ sau đố zero. 25 00:01:00,710 --> 00:01:05,459 Bắt đầu với một danh sách liên kết, trong đó bao gồm con trỏ. 26 00:01:05,459 --> 00:01:07,668 >> Được rồi, vì vậy chúng tôi thấy điều này trong phiên xem xét cuối cùng, 27 00:01:07,668 --> 00:01:10,000 do đó, tôi sẽ đi qua đây là một chút nhanh hơn. 28 00:01:10,000 --> 00:01:13,500 Chỉ cần giơ tay của bạn nếu bạn muốn tôi làm chậm lại hoặc giải quyết một cái gì đó hơn nữa. 29 00:01:13,500 --> 00:01:17,150 Nhưng chúng tôi sử dụng danh sách liên kết bởi vì chúng tôi bắt đầu bằng C với mảng. 30 00:01:17,150 --> 00:01:20,920 Và mảng là rất lớn, nhưng vấn đề là họ có một kích thước cố định. 31 00:01:20,920 --> 00:01:24,925 Danh sách liên kết cho phép chúng ta tạo ra động có kích thước cấu trúc dữ liệu. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> Và chúng tôi có hoạt động cơ bản của chúng tôi, chèn, xóa, và tìm kiếm. 34 00:01:32,320 --> 00:01:36,780 Và chúng ta có thể làm được chèn vào trường hợp tồi tệ nhất thời gian cố định 35 00:01:36,780 --> 00:01:39,140 nếu chúng ta chỉ cần đặt nó ở đầu. 36 00:01:39,140 --> 00:01:45,220 Xóa và tìm kiếm, tồi tệ nhất trường hợp lớn oh của n lần. 37 00:01:45,220 --> 00:01:47,140 Vì vậy, một lần nữa, chỉ để lật thông qua các hình ảnh, 38 00:01:47,140 --> 00:01:50,860 Tôi biết chúng tôi đã nhìn thấy những lần trước, nhưng chúng tôi muốn theo dõi các danh sách liên kết của chúng tôi 39 00:01:50,860 --> 00:01:53,440 bằng cách theo dõi các đầu của danh sách liên kết của chúng tôi. 40 00:01:53,440 --> 00:01:55,580 Bởi vì chúng ta biết rằng mỗi một trong các nút của chúng tôi 41 00:01:55,580 --> 00:01:58,610 là chỉ cần đi để trỏ đến nút tiếp theo trong danh sách liên kết của chúng tôi. 42 00:01:58,610 --> 00:02:00,460 >> Vì vậy, đó là cách chúng tôi tiếp tục theo dõi. 43 00:02:00,460 --> 00:02:02,910 Mặc dù đây không phải là miếng liên tục của bộ nhớ, 44 00:02:02,910 --> 00:02:07,410 chúng ta có thể tìm thấy chúng bằng cách chỉ sau các mũi tên khác nhau. 45 00:02:07,410 --> 00:02:09,800 Dưới đây là cấu trúc của chúng tôi cho một nút danh sách liên kết. 46 00:02:09,800 --> 00:02:11,440 Chúng tôi đã nhìn thấy lần cuối cùng này. 47 00:02:11,440 --> 00:02:13,080 Chúng tôi có nút struct của chúng tôi. 48 00:02:13,080 --> 00:02:14,340 Và nó có hai thuộc tính. 49 00:02:14,340 --> 00:02:17,020 Số một, thực tế giá trị, chúng tôi muốn lưu trữ. 50 00:02:17,020 --> 00:02:18,290 Trong trường hợp này, nó là một số nguyên. 51 00:02:18,290 --> 00:02:21,100 Nó có thể là một chuỗi, nó có thể là một char, bất cứ điều gì bạn muốn. 52 00:02:21,100 --> 00:02:24,710 Và sau đó, chúng ta phải theo dõi nút tiếp theo trong danh sách liên kết của chúng tôi. 53 00:02:24,710 --> 00:02:29,797 Vì vậy, đó sẽ là một con trỏ đến nút tiếp theo. 54 00:02:29,797 --> 00:02:31,880 Nếu bạn chỉ cần làm tìm kiếm, như tôi đã nói, 55 00:02:31,880 --> 00:02:34,900 bạn phải làm theo các mũi tên của bạn xuống. 56 00:02:34,900 --> 00:02:40,720 Chèn, bạn sẽ theo dõi các nơi còn lại của danh sách của bạn. 57 00:02:40,720 --> 00:02:44,150 Và bạn muốn chuyển hướng đầu để trỏ đến phần tử mới của chúng tôi, mà 58 00:02:44,150 --> 00:02:46,640 trong trường hợp này là một, và sau đó người ta sẽ điểm 59 00:02:46,640 --> 00:02:49,480 để phần còn lại của danh sách liên kết. 60 00:02:49,480 --> 00:02:52,996 Vì vậy, một lần nữa, tôi biết đây là một chút bit của một bài kiểm tra lặp lại từ số không. 61 00:02:52,996 --> 00:02:55,370 Vì vậy, chúng tôi phải rất cẩn thận về thứ tự mà chúng ta 62 00:02:55,370 --> 00:03:00,390 làm những pointings vì vậy chúng tôi không mất theo dõi của mặt sau của danh sách. 63 00:03:00,390 --> 00:03:04,122 OK, bất kỳ câu hỏi với chỉ đơn lẻ danh sách liên kết? 64 00:03:04,122 --> 00:03:06,060 Awesome, OK, mát mẻ. 65 00:03:06,060 --> 00:03:09,410 >> Vì vậy, bây giờ, chúng ta sẽ đi vào một cái gì đó chỉ hơi phức tạp hơn, 66 00:03:09,410 --> 00:03:10,920 danh sách liên kết kép. 67 00:03:10,920 --> 00:03:13,680 Vì vậy, ngoài việc giữ theo dõi của nút tiếp theo, 68 00:03:13,680 --> 00:03:16,220 chúng tôi cũng muốn theo dõi các nút trước đó. 69 00:03:16,220 --> 00:03:19,580 Và điều này cho phép chúng ta, nếu chúng tôi tại một số điểm trong danh sách liên kết của chúng tôi, 70 00:03:19,580 --> 00:03:23,110 không chỉ đi về phía trước, nhưng cũng lặp ngược. 71 00:03:23,110 --> 00:03:25,220 Bởi vì như chúng ta đã thấy trong một danh sách đơn lẻ liên kết, 72 00:03:25,220 --> 00:03:27,980 nếu chúng ta ở một số nút, và tất cả của một đột ngột, chúng tôi quyết định, 73 00:03:27,980 --> 00:03:30,160 thực sự, tôi muốn đến nút ngay trước tôi, 74 00:03:30,160 --> 00:03:32,034 bạn phải đi tất cả đường trở về đầu 75 00:03:32,034 --> 00:03:35,710 và lặp thông qua cho đến khi bạn tìm thấy nút mà bạn đang tìm kiếm. 76 00:03:35,710 --> 00:03:37,680 >> Vì vậy, điều này làm cho mọi thứ dễ dàng hơn một chút là chúng tôi 77 00:03:37,680 --> 00:03:39,670 cố gắng để lặp thông qua danh sách liên kết của chúng tôi. 78 00:03:39,670 --> 00:03:47,870 Nhưng nó đòi hỏi chúng ta phải theo dõi của một nhiều con trỏ, vì vậy một nút sao hơn. 79 00:03:47,870 --> 00:03:50,830 Được rồi, vì vậy ở đây đến phần thú vị. 80 00:03:50,830 --> 00:03:55,600 Chúng ta sẽ thực hành thực hiện loại bỏ các danh sách liên kết kép. 81 00:03:55,600 --> 00:03:58,660 Vì vậy, đây là một cái gì đó game hoàn toàn công bằng đối với các bài kiểm tra. 82 00:03:58,660 --> 00:04:00,750 Nó cho thấy trên các câu đố trong quá khứ. 83 00:04:00,750 --> 00:04:04,220 Vì vậy, chắc chắn được chuẩn bị để mã một chút trong C. 84 00:04:04,220 --> 00:04:07,900 Đừng quên rằng với tất cả niềm vui này PHP và JavaScript, 85 00:04:07,900 --> 00:04:10,560 chúng ta vẫn phải nhớ C. Vì vậy, để làm bàn chải lên trên đó 86 00:04:10,560 --> 00:04:12,146 nếu bạn đang cảm thấy gỉ. 87 00:04:12,146 --> 00:04:14,580 >> Được rồi, chúng ta hãy xem nếu chúng ta có thể làm điều này. 88 00:04:14,580 --> 00:04:16,312 OK, mát mẻ. 89 00:04:16,312 --> 00:04:18,600 Vì vậy, chúng ta sẽ cố gắng để chỉnh sửa ngay tại đây, 90 00:04:18,600 --> 00:04:20,707 và hy vọng điều này diễn ra như kế hoạch. 91 00:04:20,707 --> 00:04:23,915 Được rồi, không ai muốn cho tôi một đề nghị như thế nào tôi nên bắt đầu? 92 00:04:23,915 --> 00:04:27,030 Các giả định chỉ có tôi là ra là tôi đã 93 00:04:27,030 --> 00:04:30,180 có một cấu trúc được định nghĩa, một trong tôi thấy trên trang cuối cùng, 94 00:04:30,180 --> 00:04:31,420 trên slide cuối cùng. 95 00:04:31,420 --> 00:04:39,250 Và tôi đang lưu trữ đầu của liên kết của tôi danh sách trong một số con trỏ được gọi là danh sách. 96 00:04:39,250 --> 00:04:42,190 Có ai muốn để cho tôi bắt đầu? 97 00:04:42,190 --> 00:04:45,410 >> Đung bạn có thể tạo ra một mới nút để gọi thông qua danh sách? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, vì vậy chúng ta sẽ tạo ra 99 00:04:46,410 --> 00:04:47,951 một nút mới để thu thập thông qua danh sách. 100 00:04:47,951 --> 00:04:48,570 Tôi thích điều đó. 101 00:04:48,570 --> 00:04:50,799 Tôi sẽ chỉ gọi nó là con trỏ nếu đó là OK. 102 00:04:50,799 --> 00:04:52,340 Và nơi đó nên ban đầu bắt đầu? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> Đung Có lẽ tại người đứng đầu danh sách. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Chúng tôi muốn bắt đầu từ đầu, mà Tôi nói là sẽ được lưu trữ trong danh sách. 107 00:05:03,670 --> 00:05:04,170 Awesome. 108 00:05:04,170 --> 00:05:05,220 Cho đến nay, như vậy tốt. 109 00:05:05,220 --> 00:05:08,260 Và bây giờ, mục tiêu của chúng tôi là duyệt qua danh sách các 110 00:05:08,260 --> 00:05:12,870 cho đến khi chúng tôi tìm thấy các nút với giá trị n mà chúng ta muốn xóa. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Vì vậy, bây giờ là một phần nơi chúng tôi muốn lặp qua. 113 00:05:15,910 --> 00:05:19,488 Bất cứ ai có thể đề nghị một cách để lặp qua? 114 00:05:19,488 --> 00:05:20,979 >> Đung Một vòng lặp. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: Một vòng lặp. 116 00:05:21,840 --> 00:05:22,620 Tôi yêu nó. 117 00:05:22,620 --> 00:05:25,550 Cụ thể, chúng ta có thể thử một vòng lặp while. 118 00:05:25,550 --> 00:05:30,919 OK, và chúng tôi biết rằng chúng tôi đã đạt đến cuối danh sách của chúng tôi khi những gì? 119 00:05:30,919 --> 00:05:32,210 Đung Khi con trỏ là null. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Khi con trỏ là null. 121 00:05:33,418 --> 00:05:34,320 Đẹp, tôi thích nó. 122 00:05:34,320 --> 00:05:35,110 OK, mát mẻ. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Vì vậy, xin lỗi nếu cú ​​đúp bounding của tôi là loại rơi khỏi màn hình. 125 00:05:43,190 --> 00:05:44,090 Chúng tôi đã mang nó trở lại. 126 00:05:44,090 --> 00:05:46,610 OK, mát mẻ. 127 00:05:46,610 --> 00:05:48,690 Cái gì tiếp theo? 128 00:05:48,690 --> 00:05:51,950 >> Vì vậy, chúng tôi biết chúng tôi muốn xóa các nút có giá trị n. 129 00:05:51,950 --> 00:05:56,340 Vì vậy, chúng ta hãy tìm những trường hợp chúng tôi thực sự tìm thấy nút của chúng tôi. 130 00:05:56,340 --> 00:05:57,840 Vì vậy, làm thế nào tôi sẽ kiểm tra xem? 131 00:05:57,840 --> 00:06:02,210 Tôi chỉ muốn nói nếu con trỏ, và sau đó nếu tôi muốn nhận được các giá trị trên con trỏ, 132 00:06:02,210 --> 00:06:08,940 Tôi chỉ mũi tên n, bằng n, các tham số 133 00:06:08,940 --> 00:06:14,490 mà chúng tôi đã cung cấp cho chức năng này, nút mà chúng ta muốn thực sự xóa. 134 00:06:14,490 --> 00:06:17,090 Bất kỳ câu hỏi cho đến đây? 135 00:06:17,090 --> 00:06:18,360 Được rồi. 136 00:06:18,360 --> 00:06:24,140 OK, vì vậy bây giờ chúng ta hãy vẽ một bức tranh nhanh trên bảng để hình dung này. 137 00:06:24,140 --> 00:06:30,710 >> Vì vậy, chúng ta hãy nói có nút đáng yêu của chúng tôi. 138 00:06:30,710 --> 00:06:34,480 Và nó có một giá trị, tôi sẽ chỉ nói bốn. 139 00:06:34,480 --> 00:06:40,340 Và nó chỉ đến sau nút trong danh sách liên kết của chúng tôi. 140 00:06:40,340 --> 00:06:42,220 Và không có gì trước khi nó. 141 00:06:42,220 --> 00:06:45,800 Vì vậy, chúng ta có trước đây của chúng tôi chỉ để không có gì. 142 00:06:45,800 --> 00:06:48,110 Trong trường hợp này, chúng tôi chỉ về phía sau. 143 00:06:48,110 --> 00:06:50,960 OK, chỉ cần thiết lập của tôi danh sách liên kết ở đây. 144 00:06:50,960 --> 00:06:53,630 Và chúng tôi có một danh sách mà điểm để cấu trúc này để bắt đầu với. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Tôi sẽ vẽ một nhiều hơn cho vì lợi ích của sự hoàn chỉnh. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 OK. 149 00:07:06,117 --> 00:07:07,480 Tôi sẽ chỉ về phía trước này. 150 00:07:07,480 --> 00:07:09,550 Và tôi sẽ chỉ có một trở lại. 151 00:07:09,550 --> 00:07:10,360 Rất tiếc, xin lỗi. 152 00:07:10,360 --> 00:07:12,710 Yeah, có điều này ngược. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Làm điều đó một lần nữa. 155 00:07:16,967 --> 00:07:18,330 OK, có chúng tôi đi. 156 00:07:18,330 --> 00:07:19,910 Được rồi, đã nhận nó. 157 00:07:19,910 --> 00:07:21,780 OK, đây là hình ảnh của chúng tôi. 158 00:07:21,780 --> 00:07:24,860 >> OK, vì vậy chúng tôi muốn xem xét hai trường hợp. 159 00:07:24,860 --> 00:07:27,330 Trường hợp đầu tiên là nếu nút, chúng tôi muốn xóa 160 00:07:27,330 --> 00:07:29,420 là lúc bắt đầu của danh sách của chúng tôi. 161 00:07:29,420 --> 00:07:34,070 Và sau đó, trường hợp thứ hai mà chúng tôi muốn để xem xét là nếu nó bất cứ nơi nào khác. 162 00:07:34,070 --> 00:07:37,660 Tôi hiểu rằng đây là một hoàn toàn lộn xộn vẽ với tất cả xóa của tôi, 163 00:07:37,660 --> 00:07:40,400 nhưng hy vọng chúng tôi sẽ cố gắng thực hiện điều này rõ ràng có một số mã. 164 00:07:40,400 --> 00:07:45,450 >> OK, vì vậy chúng ta hãy che trường hợp nơi mà chúng tôi tìm thấy nút của chúng tôi, 165 00:07:45,450 --> 00:07:48,900 và nó ở rất bắt đầu của danh sách liên kết của chúng tôi. 166 00:07:48,900 --> 00:07:50,810 Bất cứ ai cho tôi một gợi ý ở đây là những gì 167 00:07:50,810 --> 00:07:54,684 Tôi nên làm gì để thực sự loại bỏ nút của chúng tôi? 168 00:07:54,684 --> 00:07:55,970 Đó là một chút khó khăn. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> Đung Bạn có để có những nút đó sẽ được trước khi nó 171 00:07:59,628 --> 00:08:01,794 và làm cho nó trỏ đến một trong đó sẽ là sau khi nó, 172 00:08:01,794 --> 00:08:03,004 và có những nút đó sẽ là sau khi nó và làm cho 173 00:08:03,004 --> 00:08:04,554 nó trỏ đến nút trước đó. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Chính xác. 175 00:08:05,220 --> 00:08:10,640 OK, vì vậy đây là trường hợp where-- chúng ta có hai trường hợp. 176 00:08:10,640 --> 00:08:14,100 Chúng tôi có các trường hợp nút mà chúng tôi đang tìm kiếm 177 00:08:14,100 --> 00:08:18,270 là mặt trước của danh sách. 178 00:08:18,270 --> 00:08:23,110 OK, và sau đó là trường hợp mà bạn được mô tả là không, phải không? 179 00:08:23,110 --> 00:08:24,500 Đó là một nơi khác trong danh sách. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Vì vậy, bạn nói, chúng ta cần phải nhìn vào các nút trước đó, 182 00:08:32,840 --> 00:08:36,500 và làm cho các nút trước trỏ đến nút tiếp theo. 183 00:08:36,500 --> 00:08:40,510 Vì vậy, chúng ta hãy nói chúng tôi cố gắng để đưa ra năm 184 00:08:40,510 --> 00:08:43,059 trong bản vẽ rất lộn xộn của tôi ở đây. 185 00:08:43,059 --> 00:08:47,530 Chúng tôi muốn chắc chắn rằng Bốn giờ chỉ đến sáu. 186 00:08:47,530 --> 00:08:49,590 Bốn điểm của cạnh sáu. 187 00:08:49,590 --> 00:08:52,150 Và sáu của điểm trước đến bốn. 188 00:08:52,150 --> 00:08:53,960 Đó là mục tiêu của chúng tôi ở đây, phải không? 189 00:08:53,960 --> 00:08:56,150 Đây là những gì tôi nghĩ rằng bạn vừa nói trên đó. 190 00:08:56,150 --> 00:08:58,450 >> OK, vì vậy hãy nhận rằng phần đầu tiên. 191 00:08:58,450 --> 00:09:02,300 Hãy làm việc có con trỏ trước trước. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Vì vậy, nên chỉ bốn cạnh của những gì? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Chính xác, trong trường hợp này, sáu. 196 00:09:14,900 --> 00:09:18,470 Vì vậy, chúng ta nên nói con trỏ, tiếp theo. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 Được rồi. 199 00:09:21,150 --> 00:09:24,870 Vì vậy, hãy để nhân thoát khỏi hình ảnh xấu xí này và cố gắng vẽ một đẹp hơn một chút. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Chúng tôi có đầu danh sách của chúng tôi ở đây. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 Và chỉ đến nút đầu tiên trong danh sách liên kết của chúng tôi, mà chúng tôi đã nói là bốn. 204 00:09:42,740 --> 00:09:45,620 Đây là nút thứ hai của chúng tôi, năm. 205 00:09:45,620 --> 00:09:47,307 Và nút thứ ba của chúng tôi, sáu. 206 00:09:47,307 --> 00:09:50,265 Chỉ cần cố gắng để vẽ chính xác như nhau hình ảnh, chỉ cần một chút sạch hơn. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, vì vậy bốn nhân tiếp theo ban đầu chỉ đến năm. 209 00:09:56,280 --> 00:09:58,620 Năm của điểm tiếp theo đến sáu. 210 00:09:58,620 --> 00:10:00,170 Sáu điểm trước đến năm. 211 00:10:00,170 --> 00:10:02,470 Và năm của điểm trước đến bốn. 212 00:10:02,470 --> 00:10:03,360 Đẹp hơn rất nhiều! 213 00:10:03,360 --> 00:10:04,530 OK, mát mẻ. 214 00:10:04,530 --> 00:10:07,770 >> Vì vậy, bây giờ, những gì chúng tôi đã làm chỉ ở đây, dòng mã này, 215 00:10:07,770 --> 00:10:12,680 trong đó nói rằng con trỏ trước tiếp theo, do đó có nghĩa là gì? 216 00:10:12,680 --> 00:10:17,540 Điều đó có nghĩa là nếu chúng ta nhìn vào năm, đi đến nút trước, 217 00:10:17,540 --> 00:10:21,970 và nó tiếp theo nên bây giờ điểm đến năm tiếp theo của. 218 00:10:21,970 --> 00:10:27,840 Vì vậy, về cơ bản, những gì mà là làm được đó là xóa mũi tên này 219 00:10:27,840 --> 00:10:29,640 và làm cho nó bỏ qua ngay năm. 220 00:10:29,640 --> 00:10:31,360 Có phải đó là rõ ràng? 221 00:10:31,360 --> 00:10:33,200 Tôi biết rằng có thể có một chút sơ sài. 222 00:10:33,200 --> 00:10:34,480 Tôi thấy một số đề cử đầu. 223 00:10:34,480 --> 00:10:35,390 Đó là tốt. 224 00:10:35,390 --> 00:10:36,670 OK, mát mẻ. 225 00:10:36,670 --> 00:10:39,590 Bây giờ, bước tiếp theo là gì? 226 00:10:39,590 --> 00:10:42,060 >> Tôi đã cài lại sau. 227 00:10:42,060 --> 00:10:45,297 Bây giờ, mà mũi tên khác tôi cần phải thay đổi? 228 00:10:45,297 --> 00:10:46,130 Cái này đây. 229 00:10:46,130 --> 00:10:47,560 Sáu trước đó. 230 00:10:47,560 --> 00:10:50,620 Chúng tôi không muốn sáu của trước để trỏ đến năm nữa. 231 00:10:50,620 --> 00:10:54,580 Chúng tôi muốn nó để trỏ đến bốn. 232 00:10:54,580 --> 00:10:56,190 Liệu hình ảnh mà có ý nghĩa? 233 00:10:56,190 --> 00:10:58,370 Vì vậy, bây giờ chúng ta có thể thực sự thực hiện năm ra. 234 00:10:58,370 --> 00:10:59,370 Vì vậy, hãy mảnh đó. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Tôi nên làm gì trước khi tôi thiết lập lại sáu của trước đến bốn? 237 00:11:11,180 --> 00:11:14,360 Bất kỳ ý tưởng đó? 238 00:11:14,360 --> 00:11:17,369 >> Đung Free nút giữa họ bằng cách thiết lập nó thành vô giá trị? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 Chắc chắn, mục tiêu cuối cùng của chúng tôi là sẽ được trả tự do cho các node. 241 00:11:21,100 --> 00:11:22,490 Vì vậy, chúng ta có thể làm điều đó ngay tại đây. 242 00:11:22,490 --> 00:11:23,540 Miễn con trỏ. 243 00:11:23,540 --> 00:11:24,810 Tuyệt đối. 244 00:11:24,810 --> 00:11:29,160 Nhưng ngay cả trước đó, hãy just-- đúng mục tiêu của chúng tôi 245 00:11:29,160 --> 00:11:38,730 ở đây là để thiết lập con trỏ tiếp theo trước bằng con trỏ trước. 246 00:11:38,730 --> 00:11:40,760 Tôi biết điều này là nhận được bao phủ lên. 247 00:11:40,760 --> 00:11:45,440 OK, chúng ta hãy take-- mát. 248 00:11:45,440 --> 00:11:46,990 Tất cả mọi người có thể nhìn thấy dòng dưới này? 249 00:11:46,990 --> 00:11:47,840 Hoặc là nó siêu nhỏ? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Vì vậy, trước khi chúng ta thực hiện dòng này ở đây, chúng tôi muốn 252 00:11:54,300 --> 00:11:58,375 để đảm bảo rằng con trỏ tới không phải là null. 253 00:11:58,375 --> 00:12:00,500 Bởi vì nếu con trỏ tiếp theo là null, những loại lỗi 254 00:12:00,500 --> 00:12:02,727 Tôi sẽ nhận được khi tôi cố gắng tham khảo một con trỏ null? 255 00:12:02,727 --> 00:12:03,560 Đung Seg lỗi. 256 00:12:03,560 --> 00:12:05,660 HANNAH: Một lỗi seg, xinh đẹp. 257 00:12:05,660 --> 00:12:09,690 OK, vì vậy nếu đó là không null, sau đó chúng ta có thể thiết lập lại. 258 00:12:09,690 --> 00:12:14,420 Và chúng tôi có sáu điểm lại đến bốn. 259 00:12:14,420 --> 00:12:17,440 Câu hỏi cho đến thời điểm này? 260 00:12:17,440 --> 00:12:17,940 Có? 261 00:12:17,940 --> 00:12:19,814 >> Đung Trong lần đầu tiên của bạn nếu tuyên bố, đã làm bạn 262 00:12:19,814 --> 00:12:23,817 có nghĩa là để có mũi tên tiếp theo, hay [không nghe được]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Tôi có nghĩa là con trỏ mũi tên n. 264 00:12:25,150 --> 00:12:30,270 Vì vậy, về cơ bản, những gì tôi đang cố gắng để làm được nói, các nút hiện tại mà tôi đang 265 00:12:30,270 --> 00:12:34,100 iterating trên, các nút hiện tại mà Tôi đang nhìn vào, tôi đang lưu trữ trong các con trỏ. 266 00:12:34,100 --> 00:12:37,630 Và tôi muốn biết con trỏ của giá trị, mà trong trường hợp này là n. 267 00:12:37,630 --> 00:12:39,500 Và tôi muốn xem, là các nút tôi đang tìm 268 00:12:39,500 --> 00:12:42,790 cho nút tôi là nhằm để xóa? 269 00:12:42,790 --> 00:12:47,657 Vì vậy, đó là lý do tại sao chúng tôi có ở đây trỏ n. 270 00:12:47,657 --> 00:12:49,857 >> Đung Vì vậy, các mũi tên đi để n, bạn thiết lập giá trị 271 00:12:49,857 --> 00:12:52,058 và lưu trữ nó trong một nút gọi là n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Vì vậy, nó giống như nếu tôi đi qua danh sách liên kết này 274 00:12:58,820 --> 00:13:00,310 và chỉ đến năm. 275 00:13:00,310 --> 00:13:03,600 Nếu tôi muốn có được giá trị đó, nếu Tôi muốn nhận được rằng số lượng, 5, 276 00:13:03,600 --> 00:13:06,400 Tôi phải làm con trỏ mũi tên n. 277 00:13:06,400 --> 00:13:06,900 Mát mẻ? 278 00:13:06,900 --> 00:13:07,900 Yeah. 279 00:13:07,900 --> 00:13:11,200 >> Đung là n tên của biến? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Yes. 281 00:13:11,700 --> 00:13:14,870 Vì vậy, nếu chúng ta lật lại một slide, n là tên 282 00:13:14,870 --> 00:13:18,660 các giá trị bên trong của nút trong danh sách liên kết của chúng tôi. 283 00:13:18,660 --> 00:13:21,510 Và tôi biết nó có thể có được một chút chút bối rối bởi vì chúng tôi cũng 284 00:13:21,510 --> 00:13:24,680 đang kêu gọi các điều mà chúng ta muốn xóa n. 285 00:13:24,680 --> 00:13:26,717 Vì vậy, đó là nơi mà một dòng đến từ. 286 00:13:26,717 --> 00:13:27,671 Yeah? 287 00:13:27,671 --> 00:13:31,010 >> Đung Những gì bạn có [Không nghe thấy] làm thế nào họ làm việc? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Một con trỏ [Không nghe thấy]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Chắc chắn. 291 00:13:37,520 --> 00:13:40,027 Bạn đang nói about-- mà dòng? 292 00:13:40,027 --> 00:13:41,526 Đung Dòng cuối cùng [không nghe được]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Chắc chắn rồi, OK. 295 00:13:45,250 --> 00:13:48,540 Vì vậy, chúng ta hãy nhìn vào bức tranh trong Để cố gắng để giải thích điều này. 296 00:13:48,540 --> 00:13:51,030 Tôi xin lỗi, cho camera, câu hỏi 297 00:13:51,030 --> 00:13:54,580 chúng ta có thể giải thích cho con trỏ mũi tên con trỏ tới trước. 298 00:13:54,580 --> 00:14:01,510 OK, vì vậy chúng ta hãy nói rằng chúng ta đang ở năm và mục tiêu của chúng tôi là để xóa năm. 299 00:14:01,510 --> 00:14:07,240 Vì vậy, con trỏ tới, mà trong số này Ba nút nào đó cho chúng ta? 300 00:14:07,240 --> 00:14:10,840 Điều đó mang lại cho chúng tôi đến nút thứ sáu, phải không? 301 00:14:10,840 --> 00:14:16,490 >> OK, vì vậy bây giờ chúng tôi đang yêu cầu cho trước của sáu. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 Và chúng tôi đang đặt này được bằng bốn, 304 00:14:20,210 --> 00:14:23,214 trong đó xảy ra là năm của trước đó. 305 00:14:23,214 --> 00:14:25,180 Tôi biết, đó là siêu khó để theo dõi. 306 00:14:25,180 --> 00:14:29,286 Tôi thực sự khuyên bạn vẽ hình ảnh nếu bạn nhận được một câu hỏi như thế này. 307 00:14:29,286 --> 00:14:30,242 Có? 308 00:14:30,242 --> 00:14:32,617 >> Đung là lý do mà chúng ta không có một [Không nghe thấy]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Chính xác. 311 00:14:38,570 --> 00:14:44,800 Vì vậy, câu hỏi là, tại sao chúng ta không cần phải kiểm tra ở đây? 312 00:14:44,800 --> 00:14:48,160 Tại sao chúng ta không cần phải kiểm tra xem con trỏ trước đó không phải là bằng vô giá trị? 313 00:14:48,160 --> 00:14:50,070 Và đó là bởi vì chúng tôi đã đã tách ra 314 00:14:50,070 --> 00:14:52,490 trường hợp nếu của con trỏ lúc bắt đầu. 315 00:14:52,490 --> 00:14:54,060 Câu hỏi rất hay. 316 00:14:54,060 --> 00:14:56,880 Bất cứ điều gì khác về điều này? 317 00:14:56,880 --> 00:14:57,380 OK, mát mẻ. 318 00:14:57,380 --> 00:14:58,360 Vì vậy, hãy hoàn thành nó. 319 00:14:58,360 --> 00:14:59,890 Chúng tôi gần như ở đó. 320 00:14:59,890 --> 00:15:01,310 >> Vì vậy, những gì nếu nó là ở đầu? 321 00:15:01,310 --> 00:15:03,360 Điều gì nếu thay vì cố gắng để xóa năm, 322 00:15:03,360 --> 00:15:06,240 chúng tôi thực sự muốn xóa bốn? 323 00:15:06,240 --> 00:15:07,270 Những gì tôi sẽ phải làm gì? 324 00:15:07,270 --> 00:15:09,610 Vâng, tôi muốn đặt lại đầu tôi với những gì? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Shout nó ra? 327 00:15:15,585 --> 00:15:16,710 Đung Người sau nó. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, vì vậy chúng tôi muốn liệt kê được chỉ để bất cứ điều gì con trỏ nút tiếp theo của chúng tôi là. 330 00:15:26,430 --> 00:15:29,040 Tốt. 331 00:15:29,040 --> 00:15:30,810 Và để tăng tính đầy đủ của vì lợi ích, chúng tôi sẽ 332 00:15:30,810 --> 00:15:35,590 muốn kiểm tra rằng miễn là danh sách của chúng tôi không phải là vô giá trị, miễn là danh sách của chúng tôi không phải là 333 00:15:35,590 --> 00:15:42,730 trống rỗng, sau đó chúng tôi muốn thiết lập bình đẳng trước của chúng tôi để null. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Câu hỏi cho đến nay? 336 00:15:50,230 --> 00:15:53,205 Một bước đi from--? 337 00:15:53,205 --> 00:15:55,530 >> Đung nó sẽ được nếu danh sách không bằng null? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Vâng, bạn đã hoàn toàn đúng. 339 00:15:56,950 --> 00:15:58,130 Tôi rất xin lỗi. 340 00:15:58,130 --> 00:16:00,040 Là danh sách không bằng null. 341 00:16:00,040 --> 00:16:01,915 Awesome. 342 00:16:01,915 --> 00:16:04,245 Đang cố gắng để mang lại điều này trên tất cả các màn hình. 343 00:16:04,245 --> 00:16:06,870 Nó loại rơi ra. 344 00:16:06,870 --> 00:16:07,730 Xin lỗi, guys. 345 00:16:07,730 --> 00:16:11,874 Và cuối cùng nhưng không kém, tất cả chúng ta phải làm là trả lại. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 Đó là nhồi nhét rất nhiều trong thực sự nhanh chóng. 348 00:16:15,400 --> 00:16:16,800 Mất một giây để xem qua này. 349 00:16:16,800 --> 00:16:18,216 Cho tôi biết nếu bạn có bất kỳ câu hỏi. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Yeah? 352 00:16:20,732 --> 00:16:26,940 >> Đung Nếu danh sách là tại đầu, then-- chờ, nevermind. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, tốt. 354 00:16:27,700 --> 00:16:30,987 Vì vậy, đây là danh sách nếu là ở phần đầu, chúng tôi loại bỏ nó vào bất cứ chúng tôi đưa vào. 355 00:16:30,987 --> 00:16:31,486 Yeah? 356 00:16:31,486 --> 00:16:33,777 >> Đung bạn có thể giải thích if đầu tiên tuyên bố một lần nữa? 357 00:16:33,777 --> 00:16:36,149 Nếu con trỏ đến n bằng n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Chắc chắn. 359 00:16:36,690 --> 00:16:42,780 Vì vậy, mục tiêu của chúng ta về toàn bộ chức năng này để xóa các node có giá trị n. 360 00:16:42,780 --> 00:16:47,460 Vì vậy, nếu chúng ta thấy, như chúng tôi lặp lại thông qua danh sách của chúng tôi, 361 00:16:47,460 --> 00:16:51,770 các nút có giá trị n, đó là một trong những chúng ta muốn xóa. 362 00:16:51,770 --> 00:16:57,286 Vì vậy, tất cả các xóa xảy ra bên trong là lớn nếu tuyên bố. 363 00:16:57,286 --> 00:16:58,593 Điều đó có ý nghĩa? 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Yeah? 366 00:16:59,990 --> 00:17:02,864 >> Đung Có lẽ bạn chỉ có thể xem nó, nhưng không bạn cũng cần một dòng 367 00:17:02,864 --> 00:17:06,024 để di chuyển qua danh sách? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Hãy mang lại điều này một chút, và chúng tôi sẽ ném mà ngay ở phía dưới. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Có lẽ ban sẽ đã là một ý tưởng tốt hơn một chút. 372 00:17:15,490 --> 00:17:17,829 Vì vậy, làm thế nào tôi sẽ di chuyển con trỏ về phía trước? 373 00:17:17,829 --> 00:17:20,184 >> Đung Pointer bằng con trỏ cộng với một. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Beautiful. 375 00:17:21,599 --> 00:17:25,050 Vì vậy, cho phép chúng tôi tiếp tục iterating qua. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 Đung sẽ không có được một người nào khác? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Một lần nữa? 379 00:17:29,028 --> 00:17:32,444 Đung sẽ không có được một người nào khác sau khi cũ lớn nếu 380 00:17:32,444 --> 00:17:35,519 tuyên bố [Không nghe thấy]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Phần nào? 382 00:17:36,310 --> 00:17:38,350 Tôi xin lỗi. 383 00:17:38,350 --> 00:17:41,800 >> Đung Các traversal, nên không có được một người nào khác? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Bạn hoàn toàn có thể có một người nào khác. 385 00:17:43,550 --> 00:17:46,930 Bởi vì tôi có quyền trở lại ở đó, bạn không cần một người nào khác. 386 00:17:46,930 --> 00:17:48,760 Nhưng yeah, câu hỏi hay. 387 00:17:48,760 --> 00:17:50,170 OK, yes? 388 00:17:50,170 --> 00:17:52,878 Đung chúng ta có thể nghĩ về con trỏ đó là di chuyển qua danh sách 389 00:17:52,878 --> 00:17:56,610 như tham gia vào các giá trị của mỗi nút trong danh sách? 390 00:17:56,610 --> 00:18:00,650 Hoặc chúng ta nên nghĩ về nó như là loại bên ngoài vào danh sách? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Hoặc là một trong là tốt, tôi nghĩ. 392 00:18:02,350 --> 00:18:05,880 Cách tôi tưởng tượng nó là Tôi nói, OK, tôi trỏ. 393 00:18:05,880 --> 00:18:06,520 Và đây là tôi. 394 00:18:06,520 --> 00:18:07,150 Đây là bàn tay của tôi. 395 00:18:07,150 --> 00:18:09,960 Tôi sẽ chỉ ra sự khác nhau những điều mà tôi muốn lặp qua. 396 00:18:09,960 --> 00:18:12,270 Đầu tiên, tôi sẽ chỉ cho người đứng đầu danh sách. 397 00:18:12,270 --> 00:18:14,144 Và nói với tôi rằng tôi là sẽ chỉ một đến bốn. 398 00:18:14,144 --> 00:18:18,060 Và vì vậy tôi, là người bên ngoài vào danh sách, Tôi có thể đến tất cả các yếu tố này. 399 00:18:18,060 --> 00:18:19,520 Vì vậy, tôi nghĩ mình là con trỏ. 400 00:18:19,520 --> 00:18:21,645 Đung Vì vậy, khi bạn xóa một trong những yếu tố, 401 00:18:21,645 --> 00:18:23,404 bạn xóa chính mình, do đó, để nói chuyện. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Chính xác. 403 00:18:24,070 --> 00:18:25,920 Vì vậy, bạn xóa các điều bạn đang trỏ đến. 404 00:18:25,920 --> 00:18:28,340 Vì vậy, trong ví dụ mà chúng ta đã thấy nơi chúng tôi 405 00:18:28,340 --> 00:18:31,670 cố gắng để xóa năm, khi tôi chỉ đến năm, 406 00:18:31,670 --> 00:18:34,200 Tôi muốn xóa điều tôi đang trỏ đến. 407 00:18:34,200 --> 00:18:35,870 Chính xác. 408 00:18:35,870 --> 00:18:36,577 Có? 409 00:18:36,577 --> 00:18:39,410 Đung chúng tôi đã đưa về chăm sóc của Trường hợp n không có trong danh sách? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Nếu n không có trong danh sách? 411 00:18:40,460 --> 00:18:43,501 Tất cả những gì sẽ xảy ra là bạn đi lặp lại qua và lặp 412 00:18:43,501 --> 00:18:47,616 thông qua, và sau đó, bạn sẽ để có được con trỏ là null, 413 00:18:47,616 --> 00:18:48,990 và sau đó bạn sẽ được thực hiện. 414 00:18:48,990 --> 00:18:50,812 >> Đung Vì vậy, chúng ta có để trở về bất cứ điều gì? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Chúng tôi có thể. 416 00:18:51,520 --> 00:18:54,500 Cách mà nếu được xác định này chức năng, tôi chỉ nói rằng nó sẽ trả về 417 00:18:54,500 --> 00:18:55,770 làm mất hiệu lực bất kể. 418 00:18:55,770 --> 00:18:58,360 Nhưng bạn có thể có một cái gì đó như trả lại một số nguyên, 419 00:18:58,360 --> 00:19:00,920 và nó có trở lại âm 1 nếu nó không thành công. 420 00:19:00,920 --> 00:19:03,070 Một cái gì đó như thế. 421 00:19:03,070 --> 00:19:04,494 Câu hỏi with-- có? 422 00:19:04,494 --> 00:19:05,410 Đung [Không nghe thấy]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Xin lỗi? 424 00:19:05,993 --> 00:19:07,419 Đung [Không nghe thấy]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Chắc chắn. 426 00:19:07,960 --> 00:19:11,730 Vì vậy, đó là một khi chúng ta đã actual-- thực hiện tất cả các công việc này di chuyển 427 00:19:11,730 --> 00:19:16,530 tất cả những mũi tên xung quanh, toàn bộ của chúng tôi Mục đích là để thoát khỏi các nút 428 00:19:16,530 --> 00:19:18,230 mà chúng ta đang tìm kiếm. 429 00:19:18,230 --> 00:19:21,610 Vì vậy, trong trường hợp này, giải phóng con trỏ, nếu tôi chỉ đến năm, 430 00:19:21,610 --> 00:19:24,670 nó giống như xóa nút giữa này. 431 00:19:24,670 --> 00:19:27,250 Đó là một phần con trỏ miễn phí. 432 00:19:27,250 --> 00:19:29,090 Điều đó có ý nghĩa? 433 00:19:29,090 --> 00:19:31,390 >> Đung vậy, thậm chí còn nghĩ bạn không [Không nghe thấy]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Vì vậy, chúng tôi giả định ngay từ đầu chúng tôi đã có một số danh sách đã có already-- 435 00:19:36,060 --> 00:19:37,220 họ đã đặt này lại với nhau. 436 00:19:37,220 --> 00:19:39,761 Vì vậy, để xây dựng này danh sách, họ chắc hẳn [không nghe được]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Cool. 439 00:19:42,750 --> 00:19:44,490 Bất cứ điều gì khác với điều này? 440 00:19:44,490 --> 00:19:46,386 Có? 441 00:19:46,386 --> 00:19:49,204 >> Đung gì nếu danh sách không bằng dòng null? 442 00:19:49,204 --> 00:19:49,704 [Không nghe thấy]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Ngay ở đây? 445 00:19:53,080 --> 00:19:53,840 Đung Yeah. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, tất cả tôi đang làm là tôi chỉ đảm bảo 447 00:19:57,370 --> 00:20:03,250 mà trước khi tôi cố gắng để tới đích của danh sách, trước khi tôi cố gắng để truy cập trước đó, 448 00:20:03,250 --> 00:20:07,210 Tôi muốn chắc chắn rằng nó không phải null để tôi không nhận được một lỗi seg. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, tôi biết điều này là khá rất nhiều để có được thông qua. 451 00:20:10,820 --> 00:20:14,950 Vì vậy, slide này sẽ được tạo sẵn cho bạn. 452 00:20:14,950 --> 00:20:17,341 Vì vậy, bạn có thể đi qua nó một cách chi tiết hơn. 453 00:20:17,341 --> 00:20:17,841 Có? 454 00:20:17,841 --> 00:20:19,749 >> Đung Tại sao danh sách [Không nghe thấy]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Chắc chắn. 457 00:20:24,670 --> 00:20:27,390 Vì vậy, danh sách thực sự chỉ đến yếu tố này ngay tại đây, 458 00:20:27,390 --> 00:20:29,200 phần tử đầu tiên trong danh sách. 459 00:20:29,200 --> 00:20:30,748 Vì vậy, nó không thể có một trước đó. 460 00:20:30,748 --> 00:20:31,736 Có? 461 00:20:31,736 --> 00:20:35,194 >> Đung Liệu các điểm trỏ đến cùng một địa chỉ trong bộ nhớ? 462 00:20:35,194 --> 00:20:38,404 Liệu nó trỏ đến cùng địa chỉ trong bộ nhớ là nút 463 00:20:38,404 --> 00:20:40,640 mà nó trỏ tới? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Vâng, nó chỉ đến nút này trong bộ nhớ. 465 00:20:43,865 --> 00:20:47,190 >> Đung Quyền, do đó khi bạn [Không nghe thấy]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: Trong một ý nghĩa là có. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 Được rồi, chúng ta hãy di chuyển cùng với điều này. 469 00:20:52,997 --> 00:20:55,330 Và nếu bạn có câu hỏi nhiều hơn, thanh xung quanh lúc kết thúc, 470 00:20:55,330 --> 00:20:57,130 và chúng ta có thể đi qua nó một lần nữa. 471 00:20:57,130 --> 00:20:58,120 OK, mát mẻ. 472 00:20:58,120 --> 00:21:00,490 Bây giờ, chúng tôi nhận được để di chuyển trên để băm bảng, cố gắng, 473 00:21:00,490 --> 00:21:04,940 và cây, mà bạn có siêu quen thuộc với p-thiết năm, Speller. 474 00:21:04,940 --> 00:21:11,020 >> Vì vậy, bảng băm chỉ là một mảng với danh sách liên kết đơn lẻ 475 00:21:11,020 --> 00:21:14,050 hoặc danh sách liên kết kép sắp tắt của nó. 476 00:21:14,050 --> 00:21:16,380 Vì vậy, chúng tôi có một số loại các mảng kết hợp. 477 00:21:16,380 --> 00:21:21,280 Và làm thế nào chúng ta biết được những mảng xô để có được vào, 478 00:21:21,280 --> 00:21:24,137 chúng tôi sử dụng một hàm băm. 479 00:21:24,137 --> 00:21:26,470 Vì vậy, trong trường hợp này, có thể bất cứ ai đoán những gì các hàm băm 480 00:21:26,470 --> 00:21:28,636 sẽ được chỉ dựa trên một số của đầu vào và đầu ra? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> Đung số thư của bảng chữ cái. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Chính xác. 484 00:21:33,860 --> 00:21:36,160 Nó chỉ đặt chúng theo thứ tự bảng chữ cái. 485 00:21:36,160 --> 00:21:39,280 Mọi thứ bắt đầu với một A được đưa vào nhóm đầu tiên. 486 00:21:39,280 --> 00:21:43,340 Tất cả mọi thứ với một B được đưa vào nhóm thứ hai, vv, và vv. 487 00:21:43,340 --> 00:21:45,620 Awesome, OK. 488 00:21:45,620 --> 00:21:48,980 Và một hàm băm là bất kỳ chức năng mà mất trong một từ 489 00:21:48,980 --> 00:21:51,910 và sẽ cho bạn biết những gì xô nó thuộc về. 490 00:21:51,910 --> 00:21:55,150 Vì vậy mà mục trong của chúng tôi mảng nó thuộc về. 491 00:21:55,150 --> 00:21:58,080 >> Vì vậy, mỗi khi tôi cung cấp cho tôi băm chức năng một lời, 492 00:21:58,080 --> 00:22:00,660 nó sẽ cho tôi cùng một đặt mỗi lần duy nhất. 493 00:22:00,660 --> 00:22:03,270 Vì vậy, nếu chúng ta sử dụng hàm băm từ slide trước 494 00:22:03,270 --> 00:22:05,950 nơi chúng tôi đang phân loại theo chữ cái đầu tiên của bảng chữ cái, 495 00:22:05,950 --> 00:22:08,230 mỗi khi tôi cung cấp cho tôi hàm băm "quả táo" 496 00:22:08,230 --> 00:22:10,180 nó nên luôn luôn cho tôi trở lại 0. 497 00:22:10,180 --> 00:22:12,890 Vì vậy, nếu tôi có một quả táo để đưa vào bảng băm của tôi, 498 00:22:12,890 --> 00:22:17,700 nếu tôi cung cấp cho "quả táo" để hàm băm của tôi, cần nói, hãy đặt nó trong thùng 0. 499 00:22:17,700 --> 00:22:19,980 Nếu tôi đang tìm kiếm một táo trong bảng băm của tôi 500 00:22:19,980 --> 00:22:24,340 và tôi nói, nơi sức táo sống, bạn yêu cầu hàm băm của bạn. 501 00:22:24,340 --> 00:22:26,900 Và nó nói, đi đến xô 0. 502 00:22:26,900 --> 00:22:29,150 Tất cả phải không? 503 00:22:29,150 --> 00:22:32,660 Câu hỏi với các chức năng băm? 504 00:22:32,660 --> 00:22:34,570 Awesome. 505 00:22:34,570 --> 00:22:37,320 >> Dưới đây là một chút nhiều hơn giải thích chi tiết 506 00:22:37,320 --> 00:22:39,570 của những gì một hàm băm có thể trông như thế nào. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Được rồi. 509 00:22:42,960 --> 00:22:45,960 Bây giờ, vấn đề với hash chức năng là trong một thế giới lý tưởng, 510 00:22:45,960 --> 00:22:48,870 chúng ta sẽ chỉ có một điều trong mỗi nhóm. 511 00:22:48,870 --> 00:22:50,900 Nhưng trong thực tế, có không chỉ có một từ 512 00:22:50,900 --> 00:22:54,280 bắt đầu với A. Không có chỉ có một từ bắt đầu với B. Vì vậy, 513 00:22:54,280 --> 00:22:56,960 trong trường hợp này, nếu chúng tôi đột nhiên nhận được "berry," 514 00:22:56,960 --> 00:22:58,710 và chúng tôi muốn đặt nó vào bảng băm của chúng tôi, 515 00:22:58,710 --> 00:23:03,640 và chúng ta thấy, oh, không, chuối đã có, những gì chúng ta sẽ làm gì? 516 00:23:03,640 --> 00:23:05,900 >> Vâng, chúng ta có hai lựa chọn. 517 00:23:05,900 --> 00:23:07,990 Các tùy chọn đầu tiên là tuyến tính thăm dò, trong đó 518 00:23:07,990 --> 00:23:11,100 chỉ có nghĩa là đi tìm xô trống bên cạnh. 519 00:23:11,100 --> 00:23:14,100 Đi tìm mục mảng trống bên cạnh. 520 00:23:14,100 --> 00:23:15,750 Và chỉ cần đặt "berry" ở đó. 521 00:23:15,750 --> 00:23:18,880 Vì vậy, tôi biết đó là nghĩa vụ đi với chuối trong thùng một. 522 00:23:18,880 --> 00:23:22,155 Nhưng chỉ cần đặt nó trong thùng ba, vì xô ba là trống rỗng. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Một lựa chọn khác là có thể những gì bạn thực hiện 525 00:23:26,680 --> 00:23:29,220 trong p-thiết lập của bạn, nơi bạn có chaining riêng biệt. 526 00:23:29,220 --> 00:23:33,990 Vì vậy, mỗi xô của bạn, mỗi phần tử mảng của bạn, 527 00:23:33,990 --> 00:23:38,410 không chỉ nắm giữ một lời, nhưng thực sự giữ một con trỏ đến một danh sách các từ. 528 00:23:38,410 --> 00:23:41,880 Vì vậy, nếu bạn đã có chuối trong bảng băm của bạn 529 00:23:41,880 --> 00:23:44,740 và bạn đột nhiên muốn thêm berry, không có vấn đề. 530 00:23:44,740 --> 00:23:51,110 Chỉ cần thêm berry trên để kết thúc, hoặc để Ban đầu, các danh sách liên kết của bạn. 531 00:23:51,110 --> 00:23:54,040 OK, tuyệt vời. 532 00:23:54,040 --> 00:23:58,490 Câu hỏi với hash bảng trước khi chúng ta đi vào? 533 00:23:58,490 --> 00:23:59,850 >> Được rồi. 534 00:23:59,850 --> 00:24:01,070 Cây xanh và cố gắng. 535 00:24:01,070 --> 00:24:07,980 OK, vì vậy đây là một lựa chọn khác thực hiện từ điển. 536 00:24:07,980 --> 00:24:09,100 Bạn có thể đã thực hiện một thử. 537 00:24:09,100 --> 00:24:13,420 Vì vậy, nó là một loại đặc biệt của cây hoạt động như một bảng băm đa cấp. 538 00:24:13,420 --> 00:24:16,862 Vì vậy, bạn sẽ nhìn thấy hình ảnh nơi bạn có một mảng mà 539 00:24:16,862 --> 00:24:19,320 chỉ vào một loạt các mảng điểm đó đến một loạt các mảng 540 00:24:19,320 --> 00:24:20,390 điểm đó đến một loạt các mảng. 541 00:24:20,390 --> 00:24:23,140 Và chúng ta sẽ thấy chính xác những gì mà sẽ như thế nào trên một slide trong tương lai. 542 00:24:23,140 --> 00:24:26,070 Và nói chung, một cây là chỉ cần bất kỳ cấu trúc dữ liệu 543 00:24:26,070 --> 00:24:29,710 trong đó các dữ liệu là tổ chức trong một số hệ thống phân cấp. 544 00:24:29,710 --> 00:24:32,610 Vì vậy mà chúng tôi đã nhìn thấy chúng tôi có một số loại hiểu biết 545 00:24:32,610 --> 00:24:36,130 của một cấp cao nhất, một cấp độ tiếp theo, một cấp độ tiếp theo, một cấp độ tiếp theo. 546 00:24:36,130 --> 00:24:39,690 Vì vậy, điều này có lẽ rõ ràng nhất với một số ví dụ cụ thể. 547 00:24:39,690 --> 00:24:40,880 Vì vậy, đây là cây của chúng tôi. 548 00:24:40,880 --> 00:24:42,970 Bạn có thể thấy rằng nó có mức độ đặc biệt 549 00:24:42,970 --> 00:24:45,480 rằng chúng ta bắt đầu với nút gốc, một. 550 00:24:45,480 --> 00:24:47,640 Và chúng ta có thể đi xuống qua cây của chúng tôi. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Một cây nhị phân là một loại hình cụ thể của cây. 553 00:24:53,910 --> 00:24:56,770 Và các đặc điểm kỹ thuật chỉ cho một cây nhị phân 554 00:24:56,770 --> 00:25:01,130 là mỗi node có nhiều nhất là hai lá. 555 00:25:01,130 --> 00:25:03,960 Vì vậy, bạn sẽ không thấy bất kỳ các nút này có ba hoặc bốn 556 00:25:03,960 --> 00:25:06,880 hoặc một số số khác của lá. 557 00:25:06,880 --> 00:25:11,310 Và sau đó thậm chí cụ thể hơn là một cây tìm kiếm nhị phân 558 00:25:11,310 --> 00:25:18,010 nơi mỗi nút bên trái của nút là sẽ có một giá trị nhỏ hơn. 559 00:25:18,010 --> 00:25:21,180 Và mỗi giá trị cho đúng là có được lớn hơn. 560 00:25:21,180 --> 00:25:26,900 Vì vậy, nếu bạn thấy 44 là ở gốc của chúng tôi, bên trái, 11, 22, và 33 561 00:25:26,900 --> 00:25:28,940 tất cả đều dưới gốc của chúng tôi. 562 00:25:28,940 --> 00:25:33,890 Và bên phải là tất cả số bigger-- 66, 55, và 77. 563 00:25:33,890 --> 00:25:37,380 Và tính chất này đúng ở mọi cấp độ của cây. 564 00:25:37,380 --> 00:25:42,690 >> Vì vậy, khi chúng tôi đi xuống 22, 11, và 33, vẫn còn 11 565 00:25:42,690 --> 00:25:46,950 là nhỏ hơn 22 và 33 lớn hơn 22. 566 00:25:46,950 --> 00:25:50,160 Và điều này làm cho nó dễ dàng hơn để tìm kiếm bởi vì nếu chúng ta đang tìm kiếm một số, 567 00:25:50,160 --> 00:25:53,877 chúng ta biết chính xác chi nhánh để theo xuống. 568 00:25:53,877 --> 00:25:56,210 Vì vậy, điều đó nhắc nhở bạn một chút chút tìm kiếm nhị phân. 569 00:25:56,210 --> 00:25:56,967 Yeah? 570 00:25:56,967 --> 00:25:58,835 >> Đung Vì vậy, khi bạn đang mô tả nhị phân, 571 00:25:58,835 --> 00:26:00,587 bạn nói nó có ít nhất hai lá? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 Đung nó có thể có ít hơn? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Yeah. 575 00:26:03,121 --> 00:26:06,720 Vì vậy, chúng ta hãy nói, ví dụ, bạn không có một số chẵn các điều 576 00:26:06,720 --> 00:26:11,791 và bạn không thể lấp đầy tất cả các bạn lá, điều đó là tốt nếu có một. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Awesome. 579 00:26:12,789 --> 00:26:15,930 Bất kỳ câu hỏi khác trên cây? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Trở lại để cố gắng của chúng tôi như tôi đã nói chuyện về một chút trước đó, 582 00:26:20,110 --> 00:26:23,900 làm thế nào chúng ta có những mảng đa cấp. 583 00:26:23,900 --> 00:26:26,280 Vì vậy, trong trường hợp này, chúng ta bắt đầu ở đầu trang. 584 00:26:26,280 --> 00:26:29,030 Và chúng ta có thể làm theo bất kỳ từ nào cho down. 585 00:26:29,030 --> 00:26:30,780 Vì vậy, chúng ta hãy nói rằng chúng ta muốn để tìm Turing. 586 00:26:30,780 --> 00:26:34,380 Chúng tôi bắt đầu từ T, nó xuống đất để một mảng chứa U, 587 00:26:34,380 --> 00:26:37,350 và làm theo nó xuống cho đến khi chúng tôi đạt đồng bằng này ít mà 588 00:26:37,350 --> 00:26:39,060 cho chúng ta biết, có, bạn tìm thấy một từ. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Rõ ràng về cố gắng? 591 00:26:44,120 --> 00:26:48,138 Bất cứ điều gì để đến đó? 592 00:26:48,138 --> 00:26:48,908 Có? 593 00:26:48,908 --> 00:26:51,866 Đung Liệu các biểu tượng của vùng đồng bằng phải chiếm không gian trong các thử? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Yeah, do đó nó không thậm chí nhất thiết cần phải là một đồng bằng. 595 00:26:54,532 --> 00:26:57,760 Nhưng chúng ta cần một số cách để nói với chúng tôi computer-- xin lỗi, 596 00:26:57,760 --> 00:27:01,130 để chúng ta biết rằng TUR không phải là một từ. 597 00:27:01,130 --> 00:27:04,180 Bởi vì chúng ta nói rằng chúng ta không có khái niệm này của một vùng đồng bằng, khái niệm này 598 00:27:04,180 --> 00:27:09,850 chúc mừng, bạn tìm thấy một từ, nó sẽ đi qua và lặp T-U-R, 599 00:27:09,850 --> 00:27:11,300 và sau đó nói, tuyệt vời, tôi tìm thấy nó! 600 00:27:11,300 --> 00:27:12,670 Nó phải là một từ. 601 00:27:12,670 --> 00:27:13,720 Nhưng nó thực sự không. 602 00:27:13,720 --> 00:27:15,310 Chúng tôi muốn toàn bộ Turing là một từ. 603 00:27:15,310 --> 00:27:17,760 Vì vậy, chúng ta phải có một cái gì đó ở Cuối cùng nói, xin chúc mừng, 604 00:27:17,760 --> 00:27:19,051 bạn đã tìm được một từ hợp pháp. 605 00:27:19,051 --> 00:27:21,680 Đung Vì vậy, nếu bạn đã có như 26 chữ cái trong bảng chữ cái, 606 00:27:21,680 --> 00:27:24,560 bạn sẽ thực sự có 27 phím trong thử của bạn? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, yeah. 608 00:27:26,010 --> 00:27:28,210 Vì vậy, trên thực tế, tôi nghĩ rằng sẽ có trên slide tiếp theo. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Mà nếu bạn có một nút trong thử của bạn, bạn 611 00:27:32,880 --> 00:27:35,800 sẽ có 27 trẻ em thay vì 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Bất kỳ câu hỏi với điều đó? 614 00:27:40,050 --> 00:27:40,550 Yeah? 615 00:27:40,550 --> 00:27:44,569 Đung Tại sao cố gắng mất quá nhiều không gian [Không nghe thấy] như bạn đi? 616 00:27:44,569 --> 00:27:47,629 Tại sao nó được coi là [Không nghe thấy]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Chắc chắn. 618 00:27:48,170 --> 00:27:48,790 Hãy quay trở lại. 619 00:27:48,790 --> 00:27:52,350 Câu hỏi đặt ra là, tại sao là cố gắng lớn hơn rất nhiều 620 00:27:52,350 --> 00:27:54,620 hơn một cái gì đó giống như một bảng băm. 621 00:27:54,620 --> 00:27:57,790 Vì vậy, đối với mỗi cấp độ, thậm chí nếu họ không rút ra ở đây, 622 00:27:57,790 --> 00:28:01,250 bạn phải có tất cả 26 ký tự. 623 00:28:01,250 --> 00:28:04,420 Và lý do mà bạn không thể nói, oh, nhưng cũng giống như cho Turing, tôi 624 00:28:04,420 --> 00:28:07,570 không cần phải có bất kỳ của những những điều tương tự về mức độ U. Vâng, 625 00:28:07,570 --> 00:28:11,390 nếu đột nhiên bạn muốn thêm một cái gì đó giống như T-H, 626 00:28:11,390 --> 00:28:14,800 bạn cần phải có khả năng thêm từ đó. 627 00:28:14,800 --> 00:28:17,330 Vì vậy, đối với mỗi chữ cái, bạn sẽ có 628 00:28:17,330 --> 00:28:19,730 để có một bó mảng sắp tắt của nó. 629 00:28:19,730 --> 00:28:24,060 Vì vậy, bạn có thể xem nó như thế nào sẽ nhận được thực sự lớn, thực sự nhanh chóng. 630 00:28:24,060 --> 00:28:26,560 Bất kỳ câu hỏi khác? 631 00:28:26,560 --> 00:28:28,980 Được rồi. 632 00:28:28,980 --> 00:28:29,832 Yeah? 633 00:28:29,832 --> 00:28:33,210 >> Đung Khi đang cố gắng nhanh hơn so với bảng băm? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Khi đang cố gắng nhanh hơn so với bảng băm? 635 00:28:36,280 --> 00:28:39,120 Vì vậy, nếu bạn đã có một thực sự hàm băm xấu. 636 00:28:39,120 --> 00:28:41,840 Vì vậy, chúng ta hãy nói rằng tôi là như thế, đây là hàm băm của bạn. 637 00:28:41,840 --> 00:28:43,660 Không có vấn đề gì từ bạn cho tôi, tôi luôn 638 00:28:43,660 --> 00:28:47,740 sẽ đặt nó trong mảng entry 0. 639 00:28:47,740 --> 00:28:52,000 Và vì vậy chúng tôi kết thúc với chỉ đặt tất cả mọi thứ trong một danh sách dài liên kết lớn. 640 00:28:52,000 --> 00:28:58,740 Và do đó, một thời gian tra cứu sẽ phải mất ít nhất n nếu nó ở cuối danh sách của chúng tôi. 641 00:28:58,740 --> 00:29:03,150 Với sự cố gắng, chúng ta chỉ cần phải lặp thông qua các chữ cái trong từ. 642 00:29:03,150 --> 00:29:07,080 Vì vậy, ngay cả khi chúng tôi đã thêm một bó nhiều từ để thử chúng ta, 643 00:29:07,080 --> 00:29:09,620 nó sẽ không đưa chúng ta nữa để tìm một từ cụ thể. 644 00:29:09,620 --> 00:29:11,750 >> Tất cả chúng ta phải làm là, cho Ví dụ, trong trường hợp này, 645 00:29:11,750 --> 00:29:17,170 hãy nói rằng chúng tôi đang tìm kiếm zoom, chúng ta sẽ chỉ phải lặp trên 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, bốn chữ. 647 00:29:19,840 --> 00:29:22,250 Vì vậy, đó chỉ là chiều dài của zoom từ. 648 00:29:22,250 --> 00:29:25,400 Nó không quan trọng bao nhiêu từ nhiều hơn chúng ta đưa vào thử này. 649 00:29:25,400 --> 00:29:30,225 Chúng tôi luôn luôn có thể có được nó trong bốn bước. 650 00:29:30,225 --> 00:29:31,215 Awesome. 651 00:29:31,215 --> 00:29:32,205 Có? 652 00:29:32,205 --> 00:29:34,185 >> Đung vậy, [không nghe] là một mảng, phải không? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 Đung Nếu bạn đang tìm kiếm [Không nghe thấy], 655 00:29:37,155 --> 00:29:40,929 bạn sẽ phải đi qua mảng của bạn để tìm [Không nghe thấy]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Chắc chắn. 657 00:29:41,470 --> 00:29:44,000 Đung Không có nhiều thời gian hơn? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Nếu tôi sẽ nói rằng mảng của tôi luôn luôn là 659 00:29:46,370 --> 00:29:49,250 sẽ là A, B, C, D, E, F, G, blah blah blah, 660 00:29:49,250 --> 00:29:51,630 vì vậy nếu tôi luôn luôn biết nó theo thứ tự chính xác như nhau, 661 00:29:51,630 --> 00:29:53,880 nếu tôi luôn luôn biết nó theo thứ tự bảng chữ cái, 662 00:29:53,880 --> 00:29:57,860 Tôi chỉ có thể nói là số O vậy và như vậy trong bảng chữ cái. 663 00:29:57,860 --> 00:29:59,620 Chỉ cần nhảy đến nơi đó. 664 00:29:59,620 --> 00:30:01,860 Bởi vì nhớ, với mảng, chúng ta có thể truy cập 665 00:30:01,860 --> 00:30:06,590 bất cứ phần tử của mảng trong đó liên tục thời gian nếu chúng ta biết chúng ta đang tìm kiếm. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Yeah? 668 00:30:09,580 --> 00:30:12,005 >> Đung Ngày trước trượt [Không nghe thấy] 27, 669 00:30:12,005 --> 00:30:14,430 nhưng cho 26 người đầu tiên. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Xin lỗi? 671 00:30:15,400 --> 00:30:18,800 >> Đung Không phải là đầu tiên một 0, do đó nó sẽ không được 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Chắc chắn rồi, vì vậy khi chúng ta nói 27, đó là sẽ cung cấp cho chúng tôi thông qua các chỉ số 0 26. 673 00:30:24,900 --> 00:30:28,220 Nhưng nếu bạn thực sự đếm những người ra, nó sẽ là 27. 674 00:30:28,220 --> 00:30:30,007 Câu hỏi hay. 675 00:30:30,007 --> 00:30:30,590 Bất cứ điều gì khác? 676 00:30:30,590 --> 00:30:31,200 Yeah? 677 00:30:31,200 --> 00:30:34,420 >> Đung vậy, là cố gắng chậm hơn so với bảng băm? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Tries đang có được, trong Về lý thuyết, nhanh hơn so với bảng băm 679 00:30:37,920 --> 00:30:39,760 nhưng mất nhiều bộ nhớ hơn. 680 00:30:39,760 --> 00:30:40,534 Yeah? 681 00:30:40,534 --> 00:30:41,450 Đung [Không nghe thấy]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Tôi xin lỗi, tôi không nghe thấy bạn. 684 00:30:47,484 --> 00:30:48,400 Đung [không nghe được]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 cung cấp cho bạn 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0-25 sẽ cung cấp cho bạn 26, bên phải. 688 00:30:56,958 --> 00:30:58,457 >> Đung Và sau đó [không nghe được]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Đúng vậy. 690 00:30:59,040 --> 00:31:04,760 Vì vậy, số lượng chúng tôi đang xác định là số thứ trong mảng của chúng tôi. 691 00:31:04,760 --> 00:31:07,260 Vì vậy, nếu chúng ta có 27, đó là sẽ cung cấp cho chúng tôi 0 692 00:31:07,260 --> 00:31:10,620 đến 26, mà sẽ cung cấp cho chúng ta phòng cho, trong trường hợp này, 693 00:31:10,620 --> 00:31:12,770 Tôi không bao gồm một dấu nháy đơn. 694 00:31:12,770 --> 00:31:17,040 Vì vậy, chúng tôi nhận được từ 0 đến 25 là 26 chữ cái đầu tiên của bảng chữ cái, 695 00:31:17,040 --> 00:31:18,990 hoặc tất cả 26 chữ cái trong bảng chữ cái. 696 00:31:18,990 --> 00:31:21,190 Và sau đó cuối cùng điều, tại ngõ 26, là 697 00:31:21,190 --> 00:31:24,598 sẽ được kiểm tra đánh dấu, hay đồng bằng. 698 00:31:24,598 --> 00:31:26,960 Bất cứ điều gì khác? 699 00:31:26,960 --> 00:31:29,130 Awesome. 700 00:31:29,130 --> 00:31:30,020 Mất không gian của tôi. 701 00:31:30,020 --> 00:31:31,020 OK, mát mẻ. 702 00:31:31,020 --> 00:31:33,240 >> Vì vậy, chúng tôi đã đề cập đến điều này. 703 00:31:33,240 --> 00:31:37,430 Nhưng thương mại lớn off giữa cố gắng và bảng băm 704 00:31:37,430 --> 00:31:39,720 là cố gắng cung cấp, trong Về lý thuyết, liên tục nhìn lên 705 00:31:39,720 --> 00:31:42,890 lần nhưng sử dụng một toàn bộ rất nhiều bộ nhớ. 706 00:31:42,890 --> 00:31:46,495 Được rồi, bây giờ chúng tôi có một chút cấu trúc ít phức tạp hơn, 707 00:31:46,495 --> 00:31:49,640 và chúng tôi sẽ được thực hiện với C, và chúng tôi sẽ di chuyển phải cùng. 708 00:31:49,640 --> 00:31:51,930 >> Vì vậy, ngăn xếp, chúng ta thấy điều này trong bài giảng mà bạn 709 00:31:51,930 --> 00:31:55,020 có một cái gì đó giống như một chồng khay nơi 710 00:31:55,020 --> 00:31:57,330 điều cuối cùng bạn đưa trên stack sẽ 711 00:31:57,330 --> 00:31:59,500 là điều đầu tiên bạn đưa ra. 712 00:31:59,500 --> 00:32:02,880 Vì vậy, đó là những gì thực sự xác định một chồng là điều cuối cùng bạn đưa vào 713 00:32:02,880 --> 00:32:06,080 sẽ là người đầu tiên điều bạn đưa ra. 714 00:32:06,080 --> 00:32:09,279 Và thuật ngữ mà chúng ta sử dụng nếu chúng ta đặt một cái gì đó, 715 00:32:09,279 --> 00:32:12,070 nếu chúng ta sẽ thêm một cái gì đó để chồng của chúng tôi, chúng tôi gọi đó đẩy. 716 00:32:12,070 --> 00:32:14,970 Và nếu chúng ta có một cái gì đó tắt, chúng tôi gọi nó là popping. 717 00:32:14,970 --> 00:32:17,080 Và nếu chúng ta đang đi thực hiện một chồng, chúng tôi 718 00:32:17,080 --> 00:32:20,660 cần phải chắc chắn để theo dõi cả kích thước và dung lượng. 719 00:32:20,660 --> 00:32:24,940 Vì vậy, tổng số các yếu tố chúng ta có thể tổ chức và số lượng hiện tại của các nguyên tố 720 00:32:24,940 --> 00:32:27,880 rằng chúng ta đang nắm giữ. 721 00:32:27,880 --> 00:32:29,885 >> Và rất tương tự, chúng tôi có hàng đợi. 722 00:32:29,885 --> 00:32:34,510 Và sự khác biệt duy nhất là thay vì với ngăn xếp, 723 00:32:34,510 --> 00:32:37,630 chúng tôi đã nói điều cuối cùng chúng tôi đặt trên là điều đầu tiên chúng tôi đưa ra. 724 00:32:37,630 --> 00:32:40,940 Vì vậy, với hàng đợi, các Điều đầu tiên chúng ta đưa vào 725 00:32:40,940 --> 00:32:43,129 là có được sự Điều đầu tiên chúng tôi đưa ra. 726 00:32:43,129 --> 00:32:45,420 Vì vậy, đây là như thế nào nếu bạn thực sự xếp hàng tại một cửa hàng 727 00:32:45,420 --> 00:32:48,140 và bạn đang được giúp đỡ, sau đó người đầu tiên trong dòng 728 00:32:48,140 --> 00:32:50,880 nên là người đầu tiên để được giúp đỡ. 729 00:32:50,880 --> 00:32:52,220 Vì vậy, đó sẽ là một hàng đợi. 730 00:32:52,220 --> 00:32:55,880 >> Vì vậy, chúng ta cần phải theo dõi các mô, công suất, và đầu kể từ khi chúng tôi 731 00:32:55,880 --> 00:33:01,130 sẽ mất tất cả mọi người ra phía trước của danh sách thay vì phía sau. 732 00:33:01,130 --> 00:33:03,480 Các câu hỏi về điều đó? 733 00:33:03,480 --> 00:33:06,330 Bất kỳ câu hỏi C được làm phiền bạn? 734 00:33:06,330 --> 00:33:09,590 Cấu trúc dữ liệu, bất kỳ những thứ vui vẻ? 735 00:33:09,590 --> 00:33:10,530 Được rồi, mát mẻ. 736 00:33:10,530 --> 00:33:14,120 Vì vậy, tôi sẽ đưa nó ra để Alison để nhảy vào một số chương trình hơn. 737 00:33:14,120 --> 00:33:15,965 >> Alison: Oh, chúng ta sẽ thấy. 738 00:33:15,965 --> 00:33:17,370 Chúng ta sẽ thấy như thế nào tôi làm ở đây. 739 00:33:17,370 --> 00:33:21,410 OK, tôi sẽ cố gắng và bay thông qua công cụ này, guys. 740 00:33:21,410 --> 00:33:24,540 Hannah đã đi rất trong chiều sâu trên tất cả những điều cô ấy. 741 00:33:24,540 --> 00:33:26,900 Tôi sẽ cố gắng để cung cấp cho bạn một cái nhìn tổng quan nhanh chóng nổ 742 00:33:26,900 --> 00:33:31,290 để chúng tôi có thể nhận được để Davin với tất cả vui JavaScript và an ninh điều 743 00:33:31,290 --> 00:33:33,380 mà có thể bạn thực sự muốn nghe thêm về. 744 00:33:33,380 --> 00:33:36,600 >> OK, như Hannah nói, nếu bạn có bất kỳ câu hỏi, 745 00:33:36,600 --> 00:33:39,170 Tôi đang đi quá nhanh, xin vui lòng, cho tôi biết. 746 00:33:39,170 --> 00:33:42,114 Tôi sẽ trả lời câu hỏi khi cần thiết. 747 00:33:42,114 --> 00:33:45,280 Vì vậy, để bắt đầu, chúng ta sẽ bắt đầu với có lẽ là một trong những điều đầu tiên 748 00:33:45,280 --> 00:33:48,730 bạn đã học với web lập trình, cho phép. 749 00:33:48,730 --> 00:33:52,720 Vì vậy, chmod, các bạn nên đã thạc sĩ tại đây với tất cả các web 750 00:33:52,720 --> 00:33:54,870 lập trình mà bạn đã được làm gần đây. 751 00:33:54,870 --> 00:33:57,320 Đó là cơ bản chỉ là một lệnh thay đổi các điều khoản 752 00:33:57,320 --> 00:34:00,779 hoặc các điều khoản truy cập của các đối tượng tập tin hệ thống của chúng tôi. 753 00:34:00,779 --> 00:34:02,570 Tất nhiên, để thực sự xem này, nếu bạn 754 00:34:02,570 --> 00:34:04,910 có bất kỳ rắc rối với những trong bộ vấn đề của bạn, 755 00:34:04,910 --> 00:34:11,460 bạn có thể sử dụng ls -l, dài, để có được những loại xem như thế này, 756 00:34:11,460 --> 00:34:14,209 nơi mà bạn thực sự nhìn thấy tất cả các điều khoản cho một tập tin. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> Và thực sự, chúng ta chỉ đi qua khá nhanh chóng chỉ khá 759 00:34:20,732 --> 00:34:21,940 nhiều những gì mỗi người trong số này có ý nghĩa. 760 00:34:21,940 --> 00:34:24,481 Vì vậy, chúng ta có d ngay tại đây, trong đó chỉ là viết tắt của các thư mục. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Rõ ràng ở đây, chúng ta thấy rwx, mà là có thể đọc, ghi, và thực thi. 763 00:34:31,739 --> 00:34:37,090 Đây cũng có thể được biểu diễn như là bit, mà chúng tôi sẽ nhận được vào ở trang kế tiếp. 764 00:34:37,090 --> 00:34:40,699 Vì vậy, mỗi bộ ba mà chúng ta đã thấy ở đây, vì vậy nó là ba hội Tam hoàng. 765 00:34:40,699 --> 00:34:48,120 Chúng tôi đã rwx, r không có gì x và r không có gì x cho tập tin đầu tiên này. 766 00:34:48,120 --> 00:34:49,690 Đó là cấu trúc chung này. 767 00:34:49,690 --> 00:34:50,940 >> Vì vậy, chúng tôi có một số thư mục. 768 00:34:50,940 --> 00:34:53,999 Chúng tôi có một số nhóm người sử dụng với các điều khoản. 769 00:34:53,999 --> 00:34:57,040 Một số nhóm có các quyền, và một thế giới mà có một phép. 770 00:34:57,040 --> 00:34:59,420 Bạn có thể nghĩ về điều này như một bộ ba. 771 00:34:59,420 --> 00:35:01,130 Bạn có thể nghĩ rằng trong số này là ba bit. 772 00:35:01,130 --> 00:35:04,060 Vì vậy, họ có thể giữ giá trị bất cứ nơi nào từ 0 lên 773 00:35:04,060 --> 00:35:07,350 7, đó là lý do tại sao đôi khi chúng tôi đã có bạn làm chmod 774 00:35:07,350 --> 00:35:17,510 600 thay vì chmod rw bất cứ điều gì. 775 00:35:17,510 --> 00:35:19,170 Chúng tôi sẽ nhận được vào một ví dụ đó. 776 00:35:19,170 --> 00:35:24,260 Nhưng về cơ bản, bạn có thể nghĩ trong số này là một trong hai chỉ rwx, 777 00:35:24,260 --> 00:35:28,520 hoặc bạn có thể nghĩ về họ như một số số nơi đầu tiên này ở đây 778 00:35:28,520 --> 00:35:31,480 đại diện một số từ 0 và 7, thứ hai này 779 00:35:31,480 --> 00:35:33,970 đại diện một số từ 0 và 7, và một phần ba 780 00:35:33,970 --> 00:35:38,245 đại diện một số từ 0 đến 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r có giá trị là 4. w có giá trị là 2, và x 782 00:35:42,700 --> 00:35:49,230 có giá trị là 1, đó là lý do này phép ở đây sẽ được chmod 700. 783 00:35:49,230 --> 00:35:53,520 Bởi vì trong trường hợp này đây, nó nói chúng tôi đã bit đầu tiên có là lộn trên. 784 00:35:53,520 --> 00:35:55,380 Vì vậy, chúng ta có 4 để đọc. 785 00:35:55,380 --> 00:35:58,730 Bit thứ hai là lộn trên cho w, đó là 2, vì vậy bây giờ chúng tôi có 6. 786 00:35:58,730 --> 00:36:02,070 Và bit thứ ba là lộn trên cho x, đó là 1, vì vậy chúng tôi nhận được bảy. 787 00:36:02,070 --> 00:36:04,820 Và tất nhiên, nhóm của chúng tôi và thế giới của chúng tôi là mỗi chữ số 0. 788 00:36:04,820 --> 00:36:07,770 Vì vậy, đây cũng là tương đương với chmod 700. 789 00:36:07,770 --> 00:36:12,081 Và tôi chắc chắn sẽ cố gắng hiểu được ánh xạ giữa những người. 790 00:36:12,081 --> 00:36:14,080 Tôi không chắc chắn nếu nó có đi lên trên một bài kiểm tra trước, 791 00:36:14,080 --> 00:36:18,590 nhưng nó sẽ là một câu hỏi mà tôi có thể hỏi. 792 00:36:18,590 --> 00:36:22,110 >> Chỉ cần một chút đi thậm chí thêm vào chmod ở đây, ở đây 793 00:36:22,110 --> 00:36:27,730 là rất chung chung Cấu trúc của một cuộc gọi chmod. 794 00:36:27,730 --> 00:36:29,500 Vì vậy, tất nhiên, chúng tôi đã chmod đây. 795 00:36:29,500 --> 00:36:34,410 Tài liệu tham khảo, điều này đề cập đến là người được chúng tôi đưa ra các điều khoản để 796 00:36:34,410 --> 00:36:36,570 hoặc người được chúng tôi lấy những quyền xa. 797 00:36:36,570 --> 00:36:44,330 Vì vậy, chúng tôi có một trong các điều khoản ở đây, như chúng tôi đã đưa cho bạn một cộng chmod x, 798 00:36:44,330 --> 00:36:45,440 như chúng ta sẽ thấy ngay. 799 00:36:45,440 --> 00:36:48,460 một chỉ có nghĩa là cung cấp cho các cụ khoản cho tất cả mọi người. 800 00:36:48,460 --> 00:36:49,600 Cung cấp cho họ để tất cả. 801 00:36:49,600 --> 00:36:55,370 Vì vậy, bạn rất có thể có u cộng với x hoặc g cộng với x hoặc o cộng với x hoặc nhiều 802 00:36:55,370 --> 00:36:55,870 hiện. 803 00:36:55,870 --> 00:36:59,280 Vì vậy mà phần đầu tiên luôn luôn là sẽ là tài liệu tham khảo. 804 00:36:59,280 --> 00:37:03,220 Chúng tôi được những người đưa ra các điều khoản để, hoặc người được chúng tôi đưa họ đi từ đâu? 805 00:37:03,220 --> 00:37:04,850 >> Điều thứ hai là các nhà điều hành. 806 00:37:04,850 --> 00:37:07,350 Vì vậy, các bạn đã chủ yếu là xử lý cộng. 807 00:37:07,350 --> 00:37:12,140 Điều này sẽ cho phép để bất cứ ai bạn đang đem lại cho họ, 808 00:37:12,140 --> 00:37:14,840 trong khi trừ đi, hợp lý, loại bỏ chúng. 809 00:37:14,840 --> 00:37:16,880 Vì vậy, không có gì quá khủng khiếp đó. 810 00:37:16,880 --> 00:37:23,060 Và sau đó các chế độ là những gì chúng tôi nói chuyện về với đọc, viết, hoặc thực hiện. 811 00:37:23,060 --> 00:37:29,070 Vì vậy, một cộng với x có nghĩa là cung cấp cho thực thi khoản cho tất cả mọi người. 812 00:37:29,070 --> 00:37:33,430 Và sau đó, tất nhiên, trên đó tập tin hoặc thư mục cụ thể. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Mọi người đều tốt với chmod? 815 00:37:36,010 --> 00:37:37,850 Không quá xấu? 816 00:37:37,850 --> 00:37:42,417 >> OK, vì vậy HTML, bất kỳ của bạn đủ tuổi với: MySpace tuổi? 817 00:37:42,417 --> 00:37:44,750 Tôi gửi này để phần tôi, và nghĩa đen nửa người 818 00:37:44,750 --> 00:37:45,790 nhìn tôi như thể tôi bị điên. 819 00:37:45,790 --> 00:37:47,498 Và tôi đã thích, guys, chúng tôi không phải là cũ. 820 00:37:47,498 --> 00:37:48,910 Thôi nào. 821 00:37:48,910 --> 00:37:53,360 Vì vậy HyperText Markup Language, đó là trung thực chỉ là một cách để bạn 822 00:37:53,360 --> 00:37:57,990 để hiển thị những thứ nhất định trên web. 823 00:37:57,990 --> 00:37:59,210 Vì vậy, nó là một ngôn ngữ đánh dấu. 824 00:37:59,210 --> 00:38:00,640 Nó không phải là một ngôn ngữ kịch bản. 825 00:38:00,640 --> 00:38:02,160 Không có logic trong nó. 826 00:38:02,160 --> 00:38:05,710 Nó chỉ đơn giản là thay đổi cách một cái gì đó được hiển thị. 827 00:38:05,710 --> 00:38:07,670 OK, vì vậy đó là một quan trọng phân biệt để thực hiện. 828 00:38:07,670 --> 00:38:12,030 Nó được coi là một ngôn ngữ đánh dấu, không phải là một ngôn ngữ kịch bản. 829 00:38:12,030 --> 00:38:15,100 >> Vì vậy, ở đây chúng tôi có các thẻ HTML của chúng tôi. 830 00:38:15,100 --> 00:38:20,390 Trên slide này có lẽ là hầu hết các những người mà bạn cần phải làm quen với 831 00:38:20,390 --> 00:38:22,390 và được thực sự thoải mái. 832 00:38:22,390 --> 00:38:25,700 Vì vậy, rõ ràng, chúng ta có tag HTML của chúng tôi, mà 833 00:38:25,700 --> 00:38:29,930 định rằng tất cả mọi thứ trong giữa hai sẽ là HTML. 834 00:38:29,930 --> 00:38:33,070 Chúng tôi có một số liên kết, rõ ràng là sẽ cung cấp cho bạn 835 00:38:33,070 --> 00:38:34,990 một liên kết đến một trang web bên ngoài. 836 00:38:34,990 --> 00:38:37,520 Một số danh hiệu, trong đầu của chúng tôi ở đây. 837 00:38:37,520 --> 00:38:40,020 Và chúng tôi có cơ thể của chúng tôi với h1, đó là một tiêu đề, 838 00:38:40,020 --> 00:38:42,260 do đó, nó sẽ làm cho nó đẹp và táo bạo hơn và lớn hơn. 839 00:38:42,260 --> 00:38:46,040 Và sau đó, chúng tôi có một số p, đó là một đoạn văn. 840 00:38:46,040 --> 00:38:49,000 Bạn có lẽ nên biết và làm quen với những thứ 841 00:38:49,000 --> 00:38:54,030 giống như cách bạn chèn một hình ảnh, là Có khối lớp nào tiêu đề khác? 842 00:38:54,030 --> 00:38:57,240 Tôi chắc chắn sẽ là thoải mái với div. 843 00:38:57,240 --> 00:39:00,840 Vì vậy, những điều đó có phần lớn các thẻ mà bạn cần phải làm quen với. 844 00:39:00,840 --> 00:39:04,370 Nhưng tất nhiên, như với tất cả mọi thứ trong CS 50, danh sách không đầy đủ. 845 00:39:04,370 --> 00:39:08,200 Vì vậy, hãy chắc chắn rằng bạn chải lên trên đó. 846 00:39:08,200 --> 00:39:13,260 >> CSS, vì vậy CSS, nếu bất kỳ của bạn xem hội thảo của tôi từ cách đây hai tuần, 847 00:39:13,260 --> 00:39:16,250 thực sự chỉ là một cách để theo phong cách trang web của bạn? 848 00:39:16,250 --> 00:39:18,950 OK, vì vậy chúng tôi có một số ngôn ngữ đánh dấu. 849 00:39:18,950 --> 00:39:23,220 HTML, mà sẽ chăm sóc của các văn bản chỉ và nơi mà nó có thể là trên trang. 850 00:39:23,220 --> 00:39:25,760 Nhưng CSS thực sự là những gì làm cho nó đẹp hơn. 851 00:39:25,760 --> 00:39:30,690 Bạn có thể có những trong HTML của bạn tập tin, nhưng như chúng ta sẽ nói về sau này, 852 00:39:30,690 --> 00:39:32,660 Tôi chắc rằng nó có thể thể slide tiếp theo, nó 853 00:39:32,660 --> 00:39:35,620 là thực tế phổ biến, và thực sự thực tế mà chúng tôi thực sự khuyến khích, 854 00:39:35,620 --> 00:39:40,670 để bạn có thể giữ chúng tách ra khi chúng ta nói về MVC và rằng toàn bộ mô hình. 855 00:39:40,670 --> 00:39:42,490 Đó thực sự là những gì này ăn vào. 856 00:39:42,490 --> 00:39:46,110 >> Vì vậy, CSS chỉ là một cách để làm cho mọi thứ trông khá. 857 00:39:46,110 --> 00:39:50,500 Những thứ ở đây, giống như cơ thể và #title và .info, 858 00:39:50,500 --> 00:39:54,340 chúng được gọi là bộ chọn và những gì họ làm là họ chọn những việc cụ thể 859 00:39:54,340 --> 00:39:59,260 trong tập tin HTML của bạn và áp dụng bất cứ phong cách, 860 00:39:59,260 --> 00:40:04,090 bất cứ loại điều mà bạn muốn, cho rằng yếu tố cụ thể của trang web của bạn 861 00:40:04,090 --> 00:40:04,590 trang. 862 00:40:04,590 --> 00:40:08,820 Vì vậy, ở đây, chúng ta có một màu nền và màu sắc 863 00:40:08,820 --> 00:40:12,450 và một gia đình font chữ đó là được áp dụng cho bất cứ điều gì trong cơ thể. 864 00:40:12,450 --> 00:40:15,530 Vì vậy, nếu chúng ta nhìn lại đây, nó sẽ không áp dụng cho các tiêu đề. 865 00:40:15,530 --> 00:40:22,340 Nó sẽ chỉ áp dụng đối với những gì là trong các bộ chọn cơ thể, OK? 866 00:40:22,340 --> 00:40:25,250 >> Với tiêu đề ở đây, đây là sẽ được điều tương tự, 867 00:40:25,250 --> 00:40:28,410 màu sắc của văn bản là màu xanh chỉ đi 868 00:40:28,410 --> 00:40:33,870 làm ảnh hưởng đến những gì trong các bộ chọn tiêu đề. 869 00:40:33,870 --> 00:40:36,580 Cũng như thông tin ở đây, các văn bản sẽ có màu hồng, 870 00:40:36,580 --> 00:40:38,600 bất cứ điều gì của thông tin, mà là ngay tại đây. 871 00:40:38,600 --> 00:40:40,860 Vì vậy, điều duy nhất mà sẽ là màu hồng trên trang này 872 00:40:40,860 --> 00:40:44,100 là ngày, thứ hai 17 tháng 11, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, vì vậy CSS chỉ là một cách để có quyền kiểm soát nhiều hơn over-- có? 874 00:40:48,770 --> 00:40:51,850 >> Đung Tại sao bạn phải để sử dụng băm với tiêu đề? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: trình bày tiếp theo, hứa! 876 00:40:55,170 --> 00:40:56,810 Chúng tôi sẽ đến đó. 877 00:40:56,810 --> 00:40:59,830 Vì vậy, đây là lý do tại sao chúng ta phải sử dụng hash. 878 00:40:59,830 --> 00:41:03,429 Vì vậy, bộ chọn đưa vào ba chính hình thức mà chúng tôi nói chuyện với các bạn về. 879 00:41:03,429 --> 00:41:05,595 Tôi fyou muốn tìm hiểu thêm, có rất nhiều trên mạng. 880 00:41:05,595 --> 00:41:07,540 Có tài liệu CSS tuyệt vời. 881 00:41:07,540 --> 00:41:12,680 Có một thẻ tên, trong đó có làm chỉ với thẻ bình thường của bạn trong HTML. 882 00:41:12,680 --> 00:41:17,210 Vì vậy, h1, p, div, h2, những loại vật. 883 00:41:17,210 --> 00:41:20,320 Và chúng ta có thể đặt tên những người như là. 884 00:41:20,320 --> 00:41:22,650 Vì vậy, như chúng ta thấy ở đây với cơ thể, đó là một thẻ bình thường. 885 00:41:22,650 --> 00:41:26,660 Vì vậy, chúng tôi chỉ có thể đặt cơ thể khi chúng ta đang nói trong file CSS của chúng tôi. 886 00:41:26,660 --> 00:41:29,730 >> Với tiêu đề, toàn bộ lý do chúng tôi có băm này là chúng ta có những gì 887 00:41:29,730 --> 00:41:31,010 coi là một ID. 888 00:41:31,010 --> 00:41:35,400 Vì vậy, một ID nên luôn luôn độc đáo trong trang HTML của bạn 889 00:41:35,400 --> 00:41:37,930 do đó khi bạn đang đề cập đến nó, bạn 890 00:41:37,930 --> 00:41:41,990 biết rằng bạn đang chỉ đề cập đến một điều cụ thể. 891 00:41:41,990 --> 00:41:46,270 Vì vậy, trong trường hợp này đây, với chúng tôi h1 đây, CS 50 phiên xét, 892 00:41:46,270 --> 00:41:47,810 chúng ta có một id của tiêu đề. 893 00:41:47,810 --> 00:41:54,280 Vì vậy, để chỉ cần tham khảo mà đoạn mã HTML của chúng tôi, chúng tôi làm một tiêu đề băm. 894 00:41:54,280 --> 00:41:58,080 Chỉ cần bằng cách quy ước, các ID được chỉ định với một hash trước mặt họ. 895 00:41:58,080 --> 00:42:01,650 Trong cùng một cách, chúng ta thấy thông tin ở đây là một lớp. 896 00:42:01,650 --> 00:42:06,070 Và như vậy lớp với CSS là được xem như là một lớp dot 897 00:42:06,070 --> 00:42:08,895 hoặc chấm bất cứ lớp học đó là. 898 00:42:08,895 --> 00:42:10,850 Vì vậy, trong trường hợp này đây, nó là thông tin. 899 00:42:10,850 --> 00:42:13,090 >> Vì vậy, tôi đưa nó trở lại. 900 00:42:13,090 --> 00:42:16,200 Cả hai sẽ là hồng cho CSS của chúng tôi tại đây 901 00:42:16,200 --> 00:42:18,430 vì cả hai đều có một lớp học của thông tin. 902 00:42:18,430 --> 00:42:23,070 Và trong tập tin CSS của chúng tôi, chúng tôi đã được chỉ định rằng bất cứ điều gì với một lớp thông tin 903 00:42:23,070 --> 00:42:24,120 sẽ có màu hồng. 904 00:42:24,120 --> 00:42:25,968 Điều đó có ý nghĩa? 905 00:42:25,968 --> 00:42:27,435 Có? 906 00:42:27,435 --> 00:42:30,731 >> Đung Nếu bạn đã thực hiện tất cả mọi thứ trong cơ thể màu trắng, 907 00:42:30,731 --> 00:42:32,814 và sau đó bạn cố gắng để làm cho một cái gì đó bên trong nó màu xanh, 908 00:42:32,814 --> 00:42:34,770 có thể gây ra vấn đề? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Vậy là CSS cascading style sheets. 910 00:42:37,310 --> 00:42:40,730 Vì vậy, bất cứ điều gì là về phía phía dưới sẽ được ưu tiên. 911 00:42:40,730 --> 00:42:44,080 Vì vậy, nếu bạn làm điều gì đó với cơ thể, và bạn thực hiện tất cả mọi thứ màu trắng, 912 00:42:44,080 --> 00:42:49,300 và sau đó sau này bạn thay đổi tiêu đề hoặc bạn thay đổi các văn bản trong cơ thể, 913 00:42:49,300 --> 00:42:50,560 nó ghi đè đó. 914 00:42:50,560 --> 00:42:55,360 Vì vậy, bất cứ điều gì về phía phía dưới sẽ được ưu tiên. 915 00:42:55,360 --> 00:42:56,730 Có? 916 00:42:56,730 --> 00:42:59,627 >> Đung Và ID là duy nhất, nhưng các lớp học có thể được nhiều hơn? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Đúng vậy. 918 00:43:00,210 --> 00:43:06,320 Vì vậy, ID phải là duy nhất, và các lớp học có thể tham khảo như nhiều điều như bạn muốn. 919 00:43:06,320 --> 00:43:07,580 Bất kỳ câu hỏi khác? 920 00:43:07,580 --> 00:43:09,800 Vâng. 921 00:43:09,800 --> 00:43:11,210 >> Đung [không nghe được]. 922 00:43:11,210 --> 00:43:13,509 Tôi đang tự hỏi liệu mà làm cho một sự khác biệt. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Tôi xin lỗi, Câu hỏi là gì? 924 00:43:15,217 --> 00:43:18,960 Đung Có nhỏ "F" và vốn "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Vì vậy, sự khác biệt giữa nhỏ "f" và chữ "F" 926 00:43:21,440 --> 00:43:22,606 không nên làm cho một sự khác biệt. 927 00:43:22,606 --> 00:43:26,330 Vì vậy, "f" sẽ là 15 trong hai cách. 928 00:43:26,330 --> 00:43:28,130 Cool, bất cứ điều gì khác? 929 00:43:28,130 --> 00:43:29,930 Mọi người đều tốt, CSS? 930 00:43:29,930 --> 00:43:30,850 Có? 931 00:43:30,850 --> 00:43:31,790 >> Đung Xin lỗi. 932 00:43:31,790 --> 00:43:35,550 Bạn có thể có một lớp và một ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Có, bạn có thể. 934 00:43:38,030 --> 00:43:40,420 Những điều có thể có cả một lớp và một ID. 935 00:43:40,420 --> 00:43:44,670 Và tôi khuyên thử nghiệm những ngày của riêng bạn. 936 00:43:44,670 --> 00:43:50,480 CSS bạn sẽ học tốt nhất chỉ bằng cách làm một cái gì đó, trang web rất đơn giản, 937 00:43:50,480 --> 00:43:53,440 xây dựng một số CSS, và chỉ nhìn cách họ tương tác. 938 00:43:53,440 --> 00:43:56,970 Và bạn sẽ đạt được rất tốt, trực giác cho nó hoạt động như thế nào. 939 00:43:56,970 --> 00:43:58,810 >> OK, tất cả mọi người tốt với CSS? 940 00:43:58,810 --> 00:44:01,280 Bạn đang tất cả sẽ làm cho các trang web đẹp với CSS bây giờ. 941 00:44:01,280 --> 00:44:05,460 OK, thực hành tốt nhất, chỉ điều cần lưu tâm, mọi thứ 942 00:44:05,460 --> 00:44:09,810 that-- này là lý do tại sao chúng tôi cập bến bạn cho thiết kế và không có điều gì. 943 00:44:09,810 --> 00:44:11,820 Vì vậy, đóng tất cả các thẻ HTML của bạn. 944 00:44:11,820 --> 00:44:14,840 Vì vậy, nếu bạn có một cơ thể mở, cần phải có một cơ thể gần gũi. 945 00:44:14,840 --> 00:44:18,180 Nếu bạn có một đoạn mở, có phải là một đoạn gần. 946 00:44:18,180 --> 00:44:19,555 Kiểm tra xem trang của bạn xác nhận. 947 00:44:19,555 --> 00:44:23,330 Các bạn nên rất quen thuộc với điều này từ p-thiết lập bảy 948 00:44:23,330 --> 00:44:26,350 với CS 50 tài chính với validator W3. 949 00:44:26,350 --> 00:44:28,340 Và như tôi đã nói trước đây, một trong những mô hình lớn của chúng tôi 950 00:44:28,340 --> 00:44:33,780 được tách phong cách của bạn với CSS từ đánh dấu của bạn, đó là HTML. 951 00:44:33,780 --> 00:44:36,900 Và sau đó, tất nhiên, chúng tôi có XKCD này tuyệt vời ở đây. 952 00:44:36,900 --> 00:44:38,280 Yay, hài hước! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Giữa những điều này và HTTP, về cơ bản họ đang cả hai giao thức. 955 00:44:44,650 --> 00:44:46,810 Vì vậy, bạn chỉ có thể nghĩ của họ như là một tập hợp các quy tắc 956 00:44:46,810 --> 00:44:50,110 chi phối cách điều di chuyển trên internet. 957 00:44:50,110 --> 00:44:53,410 Vì vậy, điều khiển truyền dẫn giao thức, hoặc giao thức internet, 958 00:44:53,410 --> 00:44:57,280 chỉ là một cách để đảm bảo dữ liệu mà được sẽ đi đâu 959 00:44:57,280 --> 00:45:00,030 và chúng ta biết nếu chúng ta lại thiếu dữ liệu. 960 00:45:00,030 --> 00:45:03,520 Vì vậy, nếu các bạn nghĩ về bài giảng một vài tuần trước đây với David 961 00:45:03,520 --> 00:45:06,980 nơi mà chúng tôi có bốn phong bì, họ tất cả đều được đánh số như một trong bốn, 962 00:45:06,980 --> 00:45:11,300 hai trong số bốn, ba trong số bốn, bốn bốn, đây chỉ là một tập hợp các quy tắc. 963 00:45:11,300 --> 00:45:13,830 Chúng tôi nói, OK, bất cứ khi nào chúng tôi gửi nhiều gói tin, 964 00:45:13,830 --> 00:45:16,610 chúng ta sẽ đánh số nó với những gì số đó là 965 00:45:16,610 --> 00:45:19,040 và tổng số đó người sử dụng sẽ nhận được. 966 00:45:19,040 --> 00:45:22,540 >> Và đây chỉ là nói cho bất cứ ai đang nhận dữ liệu cho dù họ 967 00:45:22,540 --> 00:45:26,120 đã nhận được tất cả mọi thứ hoặc nếu cái gì đó đã mất trên đường đi. 968 00:45:26,120 --> 00:45:28,840 Và họ cần phải yêu cầu nó một lần nữa. 969 00:45:28,840 --> 00:45:31,140 Điều này thực sự chỉ là một tập hợp các quy tắc. 970 00:45:31,140 --> 00:45:33,650 Đó là làm thế nào bạn có thể nghĩ về nó, OK? 971 00:45:33,650 --> 00:45:37,700 Và cũng có thể, nó xác định các cổng, mà các bạn can-- tôi biết trong bài giảng, 972 00:45:37,700 --> 00:45:39,170 họ đã có một danh sách toàn bộ các cảng. 973 00:45:39,170 --> 00:45:41,630 Nhưng chúng tôi không có họ ở đây ngay bây giờ. 974 00:45:41,630 --> 00:45:45,290 >> Giao thức truyền siêu văn bản như vậy là, một lần nữa, nó là một giao thức khác. 975 00:45:45,290 --> 00:45:48,630 Vì vậy, nó là một tập hợp các quy tắc chi phối, trong trường hợp này, 976 00:45:48,630 --> 00:45:51,130 cách siêu văn bản được chuyển giao. 977 00:45:51,130 --> 00:45:54,340 Vì vậy, nó chỉ cho phép các trình duyệt để nói chuyện với các máy chủ web. 978 00:45:54,340 --> 00:45:56,910 Và như chúng tôi đã nói ở đây, đó là như bắt tay con người. 979 00:45:56,910 --> 00:46:00,480 Nó chỉ là một cách để quản làm thế nào các máy chủ web là 980 00:46:00,480 --> 00:46:02,690 sẽ tương tác với trình duyệt của bạn. 981 00:46:02,690 --> 00:46:05,660 Và chúng tôi có chỉ là một vài ví dụ. 982 00:46:05,660 --> 00:46:09,100 Chúng tôi có một số yêu cầu ở đây nơi GET là phương pháp. 983 00:46:09,100 --> 00:46:13,760 Chúng tôi có HTTP 1.1, đó là phiên bản giao thức đối với chúng tôi. 984 00:46:13,760 --> 00:46:17,230 Và sau đó, các máy chủ, đó là những gì chúng tôi đang thực sự cố gắng để truy cập. 985 00:46:17,230 --> 00:46:21,800 Và sau đó, như bạn thấy ở đây, chúng tôi nhận được một số phản ứng với 200 này 986 00:46:21,800 --> 00:46:25,032 OK như mã phản hồi HTTP của chúng tôi. 987 00:46:25,032 --> 00:46:27,240 Chúng tôi có một danh sách lớn tôi sẽ để kéo lên trong một giây 988 00:46:27,240 --> 00:46:29,430 rằng các bạn nên làm quen với. 989 00:46:29,430 --> 00:46:35,750 Và chúng tôi có loại nội dung này text / HTML, mà chỉ nói những gì loại dữ liệu 990 00:46:35,750 --> 00:46:39,990 Chúng ta nhận được từ máy chủ, OK? 991 00:46:39,990 --> 00:46:44,230 Host này và loại nội dung này là một phần của tiêu đề HTTP. 992 00:46:44,230 --> 00:46:49,610 Bạn có thể có ít hoặc ít nhất là cần thiết cho bối cảnh của những gì 993 00:46:49,610 --> 00:46:50,580 bạn đang xử lý. 994 00:46:50,580 --> 00:46:53,371 Đôi khi bạn sẽ có rất nhiều các thông tin từ máy chủ của bạn. 995 00:46:53,371 --> 00:46:56,040 Có lẽ họ đang yêu cầu rất nhiều các thông tin từ người sử dụng. 996 00:46:56,040 --> 00:46:57,600 Nó thay đổi tùy thuộc vào ngữ cảnh. 997 00:46:57,600 --> 00:47:01,144 Nếu bạn nhìn vào CS 50 Nghiên cứu, có rất nhiều chi tiết về điều đó. 998 00:47:01,144 --> 00:47:03,060 Nhưng chúng tôi có rất nhiều để có được thông qua, vì vậy tôi sẽ 999 00:47:03,060 --> 00:47:05,760 để đi ngay phía trước nếu đó là OK với các bạn? 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Giữ trên. 1002 00:47:08,460 --> 00:47:11,182 Tôi chắc chắn rằng có toàn bộ danh sách of-- huh! 1003 00:47:11,182 --> 00:47:13,140 Tôi không biết tại sao điều này là tất cả các cách trên đây. 1004 00:47:13,140 --> 00:47:15,660 Tôi nghĩ rằng tôi thật sự di chuyển nó trong khi tôi đã sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> Davin: Bạn có muốn dạy nó? 1006 00:47:16,540 --> 00:47:17,420 Hoặc bạn có muốn tôi dạy nó? 1007 00:47:17,420 --> 00:47:20,010 >> Đung Tôi nghĩ rằng chúng tôi có thể chỉ cho họ để bắt đầu. 1008 00:47:20,010 --> 00:47:22,210 Tôi có nghĩa là, bạn có thể đi vào chúng thêm nữa, nhưng tôi 1009 00:47:22,210 --> 00:47:26,030 nghĩ rằng nó có ý nghĩa hơn kể từ khi tôi chỉ nói về trạng thái HTTP. 1010 00:47:26,030 --> 00:47:28,200 Vì vậy, đây là toàn bộ danh sách. 1011 00:47:28,200 --> 00:47:31,730 Tôi đoán những gì sẽ xảy ra được Davin là sẽ đi vào chúng sau này. 1012 00:47:31,730 --> 00:47:35,330 Nhưng có một danh sách toàn bộ, một xem trước của các hương vị đến. 1013 00:47:35,330 --> 00:47:41,640 OK, chúng ta sẽ blow-- này sẽ là một khóa học PHP tai nạn như không có khác. 1014 00:47:41,640 --> 00:47:44,874 >> Vì vậy, PHP, siêu tiền xử lý, đó là một backronym đệ quy, 1015 00:47:44,874 --> 00:47:46,540 có nghĩa là nó được đặt tên là cái gì khác. 1016 00:47:46,540 --> 00:47:49,050 Và sau đó họ giống như, này không thực sự có ý nghĩa. 1017 00:47:49,050 --> 00:47:52,210 Vì vậy, họ chỉ có tên it-- và nó là một từ viết tắt, 1018 00:47:52,210 --> 00:47:54,840 vì vậy họ chỉ làm cho nó PHP hypertext preprocessor, mà 1019 00:47:54,840 --> 00:47:55,980 chỉ làm cho không có ý nghĩa. 1020 00:47:55,980 --> 00:47:57,714 Câu chuyện vui vẻ. 1021 00:47:57,714 --> 00:47:58,880 Nó là một ngôn ngữ lập trình. 1022 00:47:58,880 --> 00:48:02,360 Vì vậy, nhiều như tôi nhấn mạnh rằng HTML không phải là một ngôn ngữ lập trình, 1023 00:48:02,360 --> 00:48:05,350 nó là một ngôn ngữ đánh dấu, PHP là một ngôn ngữ lập trình. 1024 00:48:05,350 --> 00:48:07,422 Làm thế nào bạn biết điều này là vì có logic. 1025 00:48:07,422 --> 00:48:08,380 Có điều kiện. 1026 00:48:08,380 --> 00:48:12,750 Chúng tôi có các biến, trong khi đó chúng tôi có không có những điều trong HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Được rồi, chúng ta có ít này chút ở đây đó là giống như một hương vị của PHP. 1028 00:48:16,960 --> 00:48:20,510 Vì vậy, vấn đề cơ bản, tên biến bắt đầu với một dấu đô la. 1029 00:48:20,510 --> 00:48:21,500 Rất nhiều người thích nó. 1030 00:48:21,500 --> 00:48:22,371 Nhắc của chúng tôi tiền. 1031 00:48:22,371 --> 00:48:22,995 Đó là tất cả tuyệt vời. 1032 00:48:22,995 --> 00:48:25,280 Chúng ta đều muốn PHP. 1033 00:48:25,280 --> 00:48:28,020 Vì vậy, chúng ta không chỉ định một kiểu biến của nữa. 1034 00:48:28,020 --> 00:48:29,995 Nó được xác định tại thời gian chạy. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Thông dịch viên sẽ được như thế, oh, chúng tôi sẽ chỉ cần chạy qua, 1037 00:48:35,890 --> 00:48:39,565 và theo bối cảnh, chúng ta sẽ thấy những gì loại của các loại 1038 00:48:39,565 --> 00:48:41,560 các biến này cần phải có. 1039 00:48:41,560 --> 00:48:42,815 Không có chức năng chính. 1040 00:48:42,815 --> 00:48:43,690 Những điều này sẽ chỉ chạy. 1041 00:48:43,690 --> 00:48:47,851 Các bạn với nhập khẩu của bạn trong của bạn cuối cùng p-đặt, bạn sẽ nhận thấy điều này. 1042 00:48:47,851 --> 00:48:49,350 Có thật sự không phải là một chức năng chính. 1043 00:48:49,350 --> 00:48:52,070 Bạn chỉ cần viết những gì bạn muốn xảy ra. 1044 00:48:52,070 --> 00:48:53,280 Và nó chỉ là loại xảy ra. 1045 00:48:53,280 --> 00:48:56,760 Vì vậy, đó là PHP cho bạn. 1046 00:48:56,760 --> 00:48:59,180 >> Mảng là rất tương tự. 1047 00:48:59,180 --> 00:49:01,270 Chúng tôi vẫn có khung này. 1048 00:49:01,270 --> 00:49:05,940 Ở đây, chúng tôi có một số biến gọi là arr, và nó bằng 1049 00:49:05,940 --> 00:49:08,540 đối với: chúng tôi có bình thường của chúng tôi khung ký hiệu. 1050 00:49:08,540 --> 00:49:10,630 Và chúng tôi có một số giá trị quan trọng. 1051 00:49:10,630 --> 00:49:14,630 Và sự khác biệt lớn giữa C và PHP mảng 1052 00:49:14,630 --> 00:49:19,330 là chúng ta có thể có associate-- này chúng ta có thể kết hợp các giá trị nhập vào. 1053 00:49:19,330 --> 00:49:22,440 Vì vậy, thay vì chỉ có một mảng được lập chỉ mục 1054 00:49:22,440 --> 00:49:26,630 bởi số lượng hoặc vị trí trong đó phần tử trong mảng, 1055 00:49:26,630 --> 00:49:29,060 chúng tôi thực sự có thể kết hợp nó với một phím. 1056 00:49:29,060 --> 00:49:36,700 Nơi chúng ta có thể nói, OK, tôi muốn bất cứ điều gì giá trị được kết hợp với trái cây. 1057 00:49:36,700 --> 00:49:39,280 Và có lẽ chúng ta có trái cây đi vào chuối. 1058 00:49:39,280 --> 00:49:41,760 Vì vậy, nó muốn trở chuối cho chúng tôi. 1059 00:49:41,760 --> 00:49:44,100 >> Nhưng về cơ bản, nhiều nhất điều mạnh mẽ về điều này 1060 00:49:44,100 --> 00:49:47,960 là nếu các bạn nhớ demo từ bài giảng mà chúng tôi về cơ bản 1061 00:49:47,960 --> 00:49:53,050 Speller viết lại trong PHP, và nó tra cứu was-- thực sự chỉ là thích, 1062 00:49:53,050 --> 00:49:55,007 không phím này tồn tại? 1063 00:49:55,007 --> 00:49:56,590 Đó thực sự là loại sức mạnh của nó. 1064 00:49:56,590 --> 00:49:58,560 Bạn không cần phải lặp thông qua mảng của bạn. 1065 00:49:58,560 --> 00:50:00,311 Bạn không cần phải biết những không gian đó là trong. 1066 00:50:00,311 --> 00:50:01,976 Nó có thể là vào cuối hoặc đầu. 1067 00:50:01,976 --> 00:50:04,790 Miễn là bạn biết phím đó là kết hợp với các giá trị, 1068 00:50:04,790 --> 00:50:09,740 PHP có thể chỉ cần nhổ giá trị sao ra đúng vào bạn, OK? 1069 00:50:09,740 --> 00:50:12,960 >> Và sau đó, chúng tôi cũng chỉ có chỉ vì chúng tôi 1070 00:50:12,960 --> 00:50:16,750 có thể có các cặp giá trị quan trọng không có nghĩa là bạn phải. 1071 00:50:16,750 --> 00:50:19,180 Bạn cũng có thể chỉ cần tạo một mảng bình thường như ở đây, 1072 00:50:19,180 --> 00:50:21,540 ở phía dưới, nơi nó chỉ một, hai, ba, bốn. 1073 00:50:21,540 --> 00:50:22,510 Đó là những giá trị của chúng tôi. 1074 00:50:22,510 --> 00:50:25,320 Và trên thực tế, các phím của họ là các chỉ số. 1075 00:50:25,320 --> 00:50:26,830 Vì vậy, chìa khóa cho một sẽ là zero. 1076 00:50:26,830 --> 00:50:28,610 Chìa khóa cho hai sẽ là một. 1077 00:50:28,610 --> 00:50:31,910 Vv và vv, trừ khi bạn gán một phím một cách rõ ràng, 1078 00:50:31,910 --> 00:50:34,630 bạn có thể giả định rằng giá trị chỉ là chỉ số của họ. 1079 00:50:34,630 --> 00:50:37,290 Điều đó có ý nghĩa với tất cả mọi người? 1080 00:50:37,290 --> 00:50:38,070 Không có câu hỏi? 1081 00:50:38,070 --> 00:50:38,930 Awesome. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach là một cách để lặp qua mảng của bạn. 1083 00:50:44,420 --> 00:50:47,490 Vì vậy, chúng tôi có một cái gì đó ở đây, chỉ là cấu trúc chung. 1084 00:50:47,490 --> 00:50:51,020 Vì vậy, foreach, tên của mảng của chúng tôi, như bất cứ điều gì 1085 00:50:51,020 --> 00:50:53,930 bạn muốn gọi nhau phần tử trong mảng của bạn, 1086 00:50:53,930 --> 00:50:57,270 và chúng ta có thể làm điều gì đó với yếu tố đó hoặc với giá trị đó. 1087 00:50:57,270 --> 00:50:58,680 Vì vậy, chúng ta có một ví dụ ở đây. 1088 00:50:58,680 --> 00:51:05,770 Chúng tôi có một liên kết mảng với hai mục này 1089 00:51:05,770 --> 00:51:10,080 với thanh được liên kết với foo và qux được liên kết với baz. 1090 00:51:10,080 --> 00:51:12,180 Vì vậy, các phím là foo và baz. 1091 00:51:12,180 --> 00:51:13,650 Các giá trị được thanh và qux. 1092 00:51:13,650 --> 00:51:18,560 Vì vậy, foreach, chúng ta có mảng của chúng tôi ở đây, như các cặp giá trị quan trọng. 1093 00:51:18,560 --> 00:51:21,560 Điều này cho phép chúng ta truy cập cả chìa khóa và giá trị. 1094 00:51:21,560 --> 00:51:23,680 Có lẽ bạn chỉ muốn giá trị, trong trường hợp này 1095 00:51:23,680 --> 00:51:27,640 bạn chỉ có thể làm như arr là $ value, và sau đó bạn 1096 00:51:27,640 --> 00:51:30,640 chỉ truy cập vào các giá trị như bạn lặp qua. 1097 00:51:30,640 --> 00:51:32,600 Nhưng có lẽ, đối với một số lý do, bạn muốn phím, 1098 00:51:32,600 --> 00:51:35,460 đó là lý do tại sao tôi đã chọn ví dụ này để thay thế. 1099 00:51:35,460 --> 00:51:40,240 Vì vậy, bạn thực sự có thể thao tác quan trọng và giá trị trong trường hợp này. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Câu hỏi? 1102 00:51:41,905 --> 00:51:44,279 >> Đung Nếu bạn muốn chỉ thao tác phím, sẽ 1103 00:51:44,279 --> 00:51:45,910 bạn phải làm foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> Alison: Đúng vậy. 1105 00:51:47,360 --> 00:51:50,560 Vì vậy, nếu bạn muốn thao tác chỉ phím, 1106 00:51:50,560 --> 00:51:53,680 bạn vẫn sẽ cần điều này cú pháp vì nếu bạn chỉ 1107 00:51:53,680 --> 00:51:56,930 có arr như một cái gì đó, như một điều, đó là 1108 00:51:56,930 --> 00:52:00,070 sẽ giả sử bạn muốn giá trị, không phải là quan trọng. 1109 00:52:00,070 --> 00:52:06,780 Vì vậy, nếu bạn đã bao giờ chỉ có giống như arr như, có lẽ điều này cũng giống như $ phần tử, 1110 00:52:06,780 --> 00:52:11,670 nó sẽ cho rằng bạn đang yêu cầu chỉ giá trị tại mỗi điểm. 1111 00:52:11,670 --> 00:52:13,879 Nếu bạn muốn một cách rõ ràng làm điều gì đó với phím, 1112 00:52:13,879 --> 00:52:16,170 thậm chí nếu bạn không đi đến làm bất cứ điều gì có giá trị, 1113 00:52:16,170 --> 00:52:18,430 bạn cần cấu trúc này mà chúng ta có ở đây 1114 00:52:18,430 --> 00:52:22,330 nơi bạn đang yêu cầu một cách rõ ràng cho cả khóa và giá trị. 1115 00:52:22,330 --> 00:52:24,170 Great câu hỏi. 1116 00:52:24,170 --> 00:52:25,940 Bất cứ điều gì khác? 1117 00:52:25,940 --> 00:52:27,490 Cool. 1118 00:52:27,490 --> 00:52:29,911 >> Được rồi, PHP và HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, chúng ta trở lại với p-thiết lập bảy lần nữa. 1120 00:52:31,410 --> 00:52:35,380 Vì vậy, điều này nên nhìn một chút quen thuộc. 1121 00:52:35,380 --> 00:52:41,760 Vì vậy, đây là một số hình thức HTML đơn giản mà có một số tên đầu vào của hello. 1122 00:52:41,760 --> 00:52:43,820 Và chúng ta thấy chúng ta có phương pháp của chúng ta về GET. 1123 00:52:43,820 --> 00:52:47,430 Và nếu chúng ta nhớ từ của chúng tôi p-set, khi gửi đơn đăng ký, 1124 00:52:47,430 --> 00:52:58,130 nó sẽ gửi một mảng gọi là $ _GET có tất cả các yếu tố đầu vào hoặc biến từ 1125 00:52:58,130 --> 00:53:00,490 các hình thức đó phải được thao tác trong PHP của chúng tôi. 1126 00:53:00,490 --> 00:53:03,320 Vì vậy, trong trường hợp này, người sử dụng sẽ đặt trong tên của họ. 1127 00:53:03,320 --> 00:53:04,370 Họ trình. 1128 00:53:04,370 --> 00:53:07,810 Và chúng ta thấy rằng chúng ta có được một số mảng ở đây. 1129 00:53:07,810 --> 00:53:09,080 Chúng tôi có mảng GET của chúng tôi. 1130 00:53:09,080 --> 00:53:11,510 Và chúng tôi đang truy cập vào tên. 1131 00:53:11,510 --> 00:53:15,070 >> Vì vậy mà nói, OK, cho tôi giá trị đó là gắn liền với tên, 1132 00:53:15,070 --> 00:53:16,550 đặt tên là chìa khóa ở đây. 1133 00:53:16,550 --> 00:53:21,400 Và đó là bản đồ trực tiếp đến những gì chúng tôi biết tên của chúng tôi là đầu vào. 1134 00:53:21,400 --> 00:53:28,960 Vì vậy, đây đã đem lại cho bạn chìa khóa vào những gì là có được trong mảng của bạn ở đây. 1135 00:53:28,960 --> 00:53:31,220 Điều đó có ý nghĩa với tất cả mọi người? 1136 00:53:31,220 --> 00:53:32,070 Có? 1137 00:53:32,070 --> 00:53:36,240 >> Đung Có tên trong GET tham khảo vào dòng màu tím trong [Không nghe thấy]? 1138 00:53:36,240 --> 00:53:37,740 >> Alison: Nó đề cập đến ở đây. 1139 00:53:37,740 --> 00:53:43,840 Vì vậy, lĩnh vực này ngay tại đây, nó đề cập đến tên này ở đây. 1140 00:53:43,840 --> 00:53:47,800 Vì vậy, điều này có thể đã được đặt tên như số điện thoại, hoặc bất cứ điều gì. 1141 00:53:47,800 --> 00:53:51,790 Tên này thực sự nói rằng, những gì bạn đang gọi lĩnh vực này? 1142 00:53:51,790 --> 00:53:53,600 Làm thế nào thì bạn sẽ tham khảo lĩnh vực này? 1143 00:53:53,600 --> 00:53:57,670 Và tên này là thực sự thích, chúng tôi nói lĩnh vực này được gọi tên. 1144 00:53:57,670 --> 00:53:59,224 Đó là cách chúng ta sẽ truy cập vào nó. 1145 00:53:59,224 --> 00:54:02,070 >> Đung Vậy là nó thích, Tên đầu vào tương đương với Bob, và- 1146 00:54:02,070 --> 00:54:04,380 >> Alison: Right, sau đó bạn Bob sẽ nhận được xuống đó. 1147 00:54:04,380 --> 00:54:06,090 Chính xác. 1148 00:54:06,090 --> 00:54:07,800 Mọi người đều mát mẻ? 1149 00:54:07,800 --> 00:54:10,990 Tất cả quyền, do đó GET so với POST, đây là hai cách chính 1150 00:54:10,990 --> 00:54:14,880 rằng chúng ta truyền dữ liệu trong một yêu cầu HTTP. 1151 00:54:14,880 --> 00:54:17,370 Các bạn nên đã thấy cả những hy vọng. 1152 00:54:17,370 --> 00:54:20,940 Vì vậy, với GET, thông tin được thông qua thông qua URL. 1153 00:54:20,940 --> 00:54:23,490 Vì vậy, nếu bạn đã từng làm Google tìm kiếm, YouTube, bạn sẽ thấy 1154 00:54:23,490 --> 00:54:25,130 có thể nhận thấy một số dấu hỏi. 1155 00:54:25,130 --> 00:54:28,230 Và sau đó, tất cả các từ mà bạn chỉ cần đặt trong đó. 1156 00:54:28,230 --> 00:54:31,410 Và POST chuyển dữ liệu trong cơ thể thông HTTP. 1157 00:54:31,410 --> 00:54:36,922 Vì vậy, không giống như GET, bạn xem xét loại rằng dữ liệu được ẩn từ người sử dụng. 1158 00:54:36,922 --> 00:54:38,630 Nhưng những gì thực sự quan trọng để hiểu 1159 00:54:38,630 --> 00:54:44,040 là điều này vẫn còn chỉ là không an toàn như GET. 1160 00:54:44,040 --> 00:54:48,780 Sự tương tự tôi muốn sử dụng được nếu bạn có số tài khoản ngân hàng của bạn 1161 00:54:48,780 --> 00:54:52,795 và bạn viết nó ở bên ngoài một phong bì, đó là khá an toàn. 1162 00:54:52,795 --> 00:54:55,920 Nếu bạn đã viết nó trên một mảnh giấy và đặt nó bên trong phong bì, 1163 00:54:55,920 --> 00:54:58,850 nó vẫn thực sự không an toàn vì tất cả các bạn phải làm là mở mà lên 1164 00:54:58,850 --> 00:55:03,480 và nhìn vào các nội dung thực tế của thông điệp để thấy điều đó. 1165 00:55:03,480 --> 00:55:08,310 Vì vậy, đây là "ẩn", và những người như để nghĩ rằng nó an toàn, nhưng nó thực sự không. 1166 00:55:08,310 --> 00:55:11,000 Và tôi chắc chắn sẽ Davin nhận được vào nhiều hơn, có lẽ. 1167 00:55:11,000 --> 00:55:12,850 Nhưng đó là một quan trọng phân biệt để làm cho 1168 00:55:12,850 --> 00:55:15,820 và một cái gì đó thực sự tốt để hiểu. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Tất cả những thứ đó như ta đã thấy gần đây! 1171 00:55:22,220 --> 00:55:25,400 Vì vậy, về cơ bản nó chỉ là thiết kế, rõ ràng, để quản lý dữ liệu. 1172 00:55:25,400 --> 00:55:30,560 Các bạn đã có rất nhiều kinh nghiệm với này trong bảng của bạn với PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 Và có bốn câu hỏi thường gặp mà chúng tôi muốn các bạn biết. 1174 00:55:34,100 --> 00:55:37,304 Vì vậy, có cập nhật, chèn, chọn, và xóa. 1175 00:55:37,304 --> 00:55:38,970 Vì vậy, hãy chắc chắn rằng bạn biết những người thực sự tốt. 1176 00:55:38,970 --> 00:55:40,960 Chúng ta sẽ đi qua chúng thực sự nhanh chóng. 1177 00:55:40,960 --> 00:55:44,340 >> Vì vậy, cập nhật, thực sự, như những gì bạn có thể nghĩ rằng nó không, 1178 00:55:44,340 --> 00:55:46,740 nó chỉ cập nhật dữ liệu trong cơ sở dữ liệu của bạn. 1179 00:55:46,740 --> 00:55:48,750 Vì vậy, chúng tôi có một số ví dụ ở đây. 1180 00:55:48,750 --> 00:55:53,310 Đây là nói chung cấu trúc của một truy vấn cập nhật. 1181 00:55:53,310 --> 00:55:56,150 Vì vậy, chúng tôi cập nhật bảng rằng chúng ta đang nói về. 1182 00:55:56,150 --> 00:56:00,520 Và chúng tôi muốn thiết lập một số các giá trị, các cột nhất định 1183 00:56:00,520 --> 00:56:02,600 bằng giá trị cụ thể. 1184 00:56:02,600 --> 00:56:07,500 Vì vậy, đây chỉ là cập nhật bảng, thay đổi giá trị trong tất cả các hàng trong trường hợp này. 1185 00:56:07,500 --> 00:56:13,690 Vì vậy, trong này xuống đây, một thực tế Ví dụ, chúng ta có insert-- xin lỗi. 1186 00:56:13,690 --> 00:56:17,630 Slide đó tiến mà không có tôi nhận ra điều đó. 1187 00:56:17,630 --> 00:56:22,230 >> Vì vậy, bảng cập nhật này đặt col1 bằng để VAL1 hợp nhà bằng "Currier." 1188 00:56:22,230 --> 00:56:25,300 Những gì người ta này không có gì nó chỉ thay đổi, nó chỉ 1189 00:56:25,300 --> 00:56:28,130 cập nhật các giá trị ở những nơi cụ thể. 1190 00:56:28,130 --> 00:56:32,300 Vì vậy, trong một đầu tiên này, nó thay đổi này giá trị cho tất cả mọi thứ trong bảng của bạn, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 Nó sẽ thay đổi này cột cho mỗi lần nhập cảnh, 1193 00:56:35,820 --> 00:56:37,020 cho mỗi đơn hàng. 1194 00:56:37,020 --> 00:56:40,840 Nhưng nơi này, bạn có thể nghĩ về nó như một vòng loại. 1195 00:56:40,840 --> 00:56:44,020 Vì vậy, nó chỉ sẽ thay đổi nó ở những nơi rất cụ thể. 1196 00:56:44,020 --> 00:56:47,840 Vì vậy, trong p-thiết lập bảy, khi bạn có thể cập nhật số lượng tiền mặt 1197 00:56:47,840 --> 00:56:53,050 rằng người dùng của bạn có, bạn có thể có một số nơi ID bằng session ID, phải không? 1198 00:56:53,050 --> 00:56:55,280 >> Bởi vì bạn không muốn thay đổi số lượng tiền mặt 1199 00:56:55,280 --> 00:56:57,630 cho mỗi người được sử dụng trang web của bạn. 1200 00:56:57,630 --> 00:57:00,480 Bạn muốn thay đổi nó cho một người cụ thể, người đó là 1201 00:57:00,480 --> 00:57:02,410 ai đã sử dụng nó tại thời điểm đó. 1202 00:57:02,410 --> 00:57:04,320 Phải không? 1203 00:57:04,320 --> 00:57:07,510 OK, vì vậy chèn, chèn giá trị nhất định vào các bảng. 1204 00:57:07,510 --> 00:57:11,650 Điều này cũng giống như khi bạn đang tạo ra một thương hiệu người dùng mới. 1205 00:57:11,650 --> 00:57:14,240 Cấu trúc chung ở đây được chèn vào bất kỳ bàn 1206 00:57:14,240 --> 00:57:15,680 chúng ta đang nói về. 1207 00:57:15,680 --> 00:57:18,910 Giá trị, là những giá trị mà chúng tôi thực sự muốn chèn. 1208 00:57:18,910 --> 00:57:23,060 OK, vậy là chúng ta thấy ở đây, chúng tôi đã chèn vào bảng. 1209 00:57:23,060 --> 00:57:27,790 Đây là cột cụ thể với giá trị tương ứng của họ. 1210 00:57:27,790 --> 00:57:29,940 Vì vậy, điều này nói, chèn một hàng mới có chứa 1211 00:57:29,940 --> 00:57:33,660 giá trị VAL1 và val2 dưới các cột cụ thể. 1212 00:57:33,660 --> 00:57:39,240 >> Vì vậy, có thể bạn chỉ muốn điền ra một nửa những điều trong hàng này. 1213 00:57:39,240 --> 00:57:41,150 Đó là những gì phần này ở đây cho phép bạn làm. 1214 00:57:41,150 --> 00:57:43,280 Nó cho phép bạn thực sự xác định một phần. 1215 00:57:43,280 --> 00:57:44,244 Có? 1216 00:57:44,244 --> 00:57:52,150 >> Đung có thể bạn chỉ [Không nghe thấy] tế bào ở hàng [Không nghe thấy]? 1217 00:57:52,150 --> 00:57:55,000 >> Alison: Nếu bạn chỉ điền vào một số bộ phận của hàng của bạn, 1218 00:57:55,000 --> 00:57:57,480 phần còn lại của các tế bào chỉ là trống rỗng. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Miễn là bạn cho phép họ trống rỗng, nó không phải là một vấn đề. 1221 00:58:05,660 --> 00:58:09,570 Nếu bạn cố gắng để truy cập chúng, đó là sẽ trở lại một số phần tử rỗng. 1222 00:58:09,570 --> 00:58:13,850 Nhưng điều quan trọng là phải biết rằng trong bảng nhất định, 1223 00:58:13,850 --> 00:58:16,690 họ đã được cho phép để được null. 1224 00:58:16,690 --> 00:58:18,890 Bạn có thể đã chạy vào một vấn đề trong quá trình p-set của bạn 1225 00:58:18,890 --> 00:58:21,320 bởi vì chúng tôi đã không để cho bất kỳ các giá trị của bạn là vô giá trị. 1226 00:58:21,320 --> 00:58:26,110 Nhưng bạn có thể chỉ định một giá trị tùy chọn trong bảng của bạn. 1227 00:58:26,110 --> 00:58:29,640 >> OK, chọn, vì vậy đây là chỉ là một cách để nhận được 1228 00:58:29,640 --> 00:58:33,790 dữ liệu cụ thể từ một bảng ở một số định danh mà bạn muốn. 1229 00:58:33,790 --> 00:58:37,990 Vì vậy, chọn sao từ bảng nơi col bằng gì gì đó chỉ có nghĩa là, 1230 00:58:37,990 --> 00:58:43,820 cho tôi tất cả các dữ liệu liên quan nơi cột cụ thể điều này là đúng. 1231 00:58:43,820 --> 00:58:49,020 Vì vậy, các ngôi sao trong trường hợp này sẽ trả lại toàn bộ hàng cho bạn, OK? 1232 00:58:49,020 --> 00:58:54,880 >> Và sau đó, trong trường hợp này, chọn sao từ bảng chỉ cung cấp cho bạn toàn bộ bảng. 1233 00:58:54,880 --> 00:58:58,940 Và sau đó, xóa rõ ràng, nó chỉ xóa các hàng từ bảng. 1234 00:58:58,940 --> 00:59:01,320 Vì vậy, xóa từ bảng, bất kỳ bàn nào chúng tôi 1235 00:59:01,320 --> 00:59:06,830 tham khảo, một số nơi cụ thể định danh hoặc một số điều kiện là đúng. 1236 00:59:06,830 --> 00:59:07,720 Có? 1237 00:59:07,720 --> 00:59:08,700 >> Đung Câu hỏi. 1238 00:59:08,700 --> 00:59:10,699 Tại sao bạn đang sử dụng đôi dấu ngoặc kép, và cho dù bạn 1239 00:59:10,699 --> 00:59:13,600 làm dấu ngoặc kép hoặc đơn dấu ngoặc kép, nó làm cho một sự khác biệt? 1240 00:59:13,600 --> 00:59:18,235 >> Alison: dấu ngoặc kép đôi hoặc dấu nháy đơn không làm cho một sự khác biệt trong SQL. 1241 00:59:18,235 --> 00:59:19,610 Tôi nghĩ rằng tôi đã nhìn thấy một câu hỏi khác. 1242 00:59:19,610 --> 00:59:20,814 Có? 1243 00:59:20,814 --> 00:59:25,070 >> Đung Không nó không ảnh hưởng gì được thoát khỏi các truy vấn? 1244 00:59:25,070 --> 00:59:27,945 >> Alison: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: bạn có ý nghĩa gì bởi thoát khỏi các truy vấn? 1246 00:59:31,410 --> 00:59:36,870 >> Đung Nếu ai đó có một truy vấn duy nhất trong các hình thức of-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Nếu ai đó đặt một giá duy nhất trong, 1248 00:59:39,862 --> 00:59:43,560 sau đó miễn là bạn đang khử trùng đầu vào của bạn, sau đó nó không quan trọng. 1249 00:59:43,560 --> 00:59:46,205 Nhưng nếu bạn đang sử dụng một đơn quote và bạn là không chính xác 1250 00:59:46,205 --> 00:59:47,914 thoát đầu vào của bạn, sau đó có, họ cần 1251 00:59:47,914 --> 00:59:51,079 để đặt một giá duy nhất để phá vỡ mã của bạn. nếu bạn sử dụng dấu ngoặc kép, 1252 00:59:51,079 --> 00:59:53,580 họ cần phải đặt một đôi trích dẫn để phá vỡ mã của bạn. 1253 00:59:53,580 --> 00:59:56,163 Nhưng miễn là bạn thoát khỏi những thứ một cách chính xác, nó không quan trọng. 1254 00:59:56,163 --> 00:59:59,220 Nó chỉ cần đi để được dịch đến đúng các biểu tượng nào. 1255 00:59:59,220 --> 01:00:02,332 >> Đung không thoát có nghĩa là gì? 1256 01:00:02,332 --> 01:00:04,040 Alison: Vâng, như vệ sinh và thoát. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Các thi mà chúng tôi có, XKCD lớn truyện tranh mà họ kéo lên mà bạn có, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: Đó là slide cuối cùng. 1261 01:00:16,670 --> 01:00:18,500 Alison: Đó là slide cuối cùng, thực sự? 1262 01:00:18,500 --> 01:00:20,200 Oh my god. 1263 01:00:20,200 --> 01:00:21,780 Hiện chúng tôi đi, hoàn hảo. 1264 01:00:21,780 --> 01:00:27,900 OK, vì vậy về cơ bản, bạn có thể tiêm một cái gì đó vào truy vấn SQL này 1265 01:00:27,900 --> 01:00:30,560 nơi nó phá vỡ của bạn mã, hoặc như David cho thấy 1266 01:00:30,560 --> 01:00:38,460 trong lớp, nếu chúng ta có một số đơn quote 1 bằng 1 và nếu trong mã của chúng tôi, 1267 01:00:38,460 --> 01:00:41,230 chúng ta chỉ cần sao chép trực tiếp trong đó, và chúng ta có một giá duy nhất kết thúc, 1268 01:00:41,230 --> 01:00:44,740 những gì xảy ra là chúng tôi nhận được một số biểu hiện đó 1269 01:00:44,740 --> 01:00:48,680 để đánh giá đúng rằng sẽ để cho người nhập cơ sở dữ liệu của chúng tôi 1270 01:00:48,680 --> 01:00:51,720 và nhận được dữ liệu mà chúng tôi không muốn họ nhận được. 1271 01:00:51,720 --> 01:00:54,240 Vì vậy, vệ sinh đầu vào chỉ có nghĩa là đảm bảo 1272 01:00:54,240 --> 01:00:57,680 rằng chúng ta đang chạy trốn những ký tự và định họ 1273 01:00:57,680 --> 01:01:01,720 như ký tự và không điều mà nên được cho phép 1274 01:01:01,720 --> 01:01:04,990 được hiểu theo nghĩa đen như câu lệnh SQL của chúng tôi. 1275 01:01:04,990 --> 01:01:09,980 >> Vì vậy, những điều to lớn mà chúng tôi đã nói rằng các bạn nên sử dụng 1276 01:01:09,980 --> 01:01:13,650 HTML là ký tự đặc biệt, mà là một cái gì đó 1277 01:01:13,650 --> 01:01:15,730 mà bạn có thể muốn xem xét. 1278 01:01:15,730 --> 01:01:17,240 OK, xóa. 1279 01:01:17,240 --> 01:01:19,450 Các kiểu dữ liệu, điều này sẽ được tất cả các tuyến. 1280 01:01:19,450 --> 01:01:23,510 Vì chúng tôi đã 15 phút còn lại, tôi chỉ đi xuyên qua này. 1281 01:01:23,510 --> 01:01:28,500 PHP và SQL, về cơ bản đây là chỉ là chúng tôi đã có một chức năng truy vấn 1282 01:01:28,500 --> 01:01:31,520 đã giúp bảo vệ chống lại các cuộc tấn công độc hại. 1283 01:01:31,520 --> 01:01:33,970 Vì vậy, bất cứ khi nào bạn sử dụng truy vấn, chúng tôi được đảm bảo 1284 01:01:33,970 --> 01:01:36,560 rằng mọi thứ đã được khử trùng và không có điều gì. 1285 01:01:36,560 --> 01:01:41,070 >> MVC chỉ là một mô hình thiết kế, rất model, view, controller. 1286 01:01:41,070 --> 01:01:44,200 Nó chỉ là một cách để giữ cho mọi thứ đẹp và chia tay trong cùng một cách 1287 01:01:44,200 --> 01:01:47,100 rằng chúng ta có xu hướng yếu tố mã ra thành các chức năng. 1288 01:01:47,100 --> 01:01:53,390 Đây chỉ là một khuôn khổ thiết kế web mà cho phép bạn làm điều tương tự. 1289 01:01:53,390 --> 01:01:54,760 Tôi sẽ bỏ qua điều này. 1290 01:01:54,760 --> 01:01:58,530 >> Đây là một cái gì đó mà tôi sẽ là siêu thoải mái với. 1291 01:01:58,530 --> 01:02:01,132 Đó là một bảng lớn nhỏ ở đó. 1292 01:02:01,132 --> 01:02:03,090 Nó cung cấp cho bạn các chức năng ví dụ của mô hình. 1293 01:02:03,090 --> 01:02:05,473 Tôi chỉ cần đi qua này bởi vì tôi thực sự muốn Davin để có thể nói chuyện. 1294 01:02:05,473 --> 01:02:07,140 Nếu bạn có bất kỳ câu hỏi, xin vui lòng cảm thấy miễn phí. 1295 01:02:07,140 --> 01:02:07,931 Tôi sẽ ở đây sau. 1296 01:02:07,931 --> 01:02:10,360 Chỉ cần đến nói chuyện với tôi. 1297 01:02:10,360 --> 01:02:13,380 Cùng với đó, chúng ta có trạng thái HTTP. 1298 01:02:13,380 --> 01:02:16,270 Và Davin của sẽ thổi thông qua điều này trong 15 phút. 1299 01:02:16,270 --> 01:02:17,560 Điều này sẽ là tuyệt vời. 1300 01:02:17,560 --> 01:02:18,893 >> Davin: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, mic của bạn? 1302 01:02:20,312 --> 01:02:22,210 Yeah. 1303 01:02:22,210 --> 01:02:23,336 Xin lỗi. 1304 01:02:23,336 --> 01:02:24,460 Alison: Way được chuẩn bị. 1305 01:02:24,460 --> 01:02:25,335 Davin: Không, tôi đã sẵn sàng. 1306 01:02:25,335 --> 01:02:25,860 Tôi đã sẵn sàng. 1307 01:02:25,860 --> 01:02:28,790 Hãy làm điều này. 1308 01:02:28,790 --> 01:02:29,290 Nó đã sẵn sàng. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Xin lỗi. 1311 01:02:30,540 --> 01:02:31,664 Tôi đổ cà phê vào bản thân mình. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Tôi không biết nếu tôi hơn buồn bã mà tôi trông ngớ ngẩn, 1314 01:02:38,210 --> 01:02:40,600 hoặc là tôi không uống cà phê nữa. 1315 01:02:40,600 --> 01:02:44,480 Dù sao, chỉ là một thông báo nhanh chóng về thẻ các bạn có. 1316 01:02:44,480 --> 01:02:47,994 Vì vậy, tấm này các bạn có không phải là chính thức gì về các bài kiểm tra. 1317 01:02:47,994 --> 01:02:49,660 Đây là chính thức gì về các bài kiểm tra. 1318 01:02:49,660 --> 01:02:52,520 Ngoài ra, trên các trang web, chúng tôi nói bạn, OK, điều này sẽ có trên các bài kiểm tra. 1319 01:02:52,520 --> 01:02:55,020 Vì vậy, trong ít cheat sheet bạn có, không chính thức. 1320 01:02:55,020 --> 01:02:56,690 Và có những sai lầm về nó. 1321 01:02:56,690 --> 01:03:01,490 Vì vậy, tốt nhất là không chỉ mù quáng sử dụng nó. 1322 01:03:01,490 --> 01:03:04,390 Vì vậy, yeah, đó là điều đó. 1323 01:03:04,390 --> 01:03:05,980 Vì vậy, hãy nhanh chóng vào thực tế này. 1324 01:03:05,980 --> 01:03:07,420 >> Vì vậy, trạng thái HTTP. 1325 01:03:07,420 --> 01:03:10,430 Vì vậy, những gì sẽ xảy ra khi trang web, tất cả mọi thứ đều ổn. 1326 01:03:10,430 --> 01:03:11,144 OK mọi thứ. 1327 01:03:11,144 --> 01:03:13,310 Tất cả mọi thứ trở lại với bạn theo cách bạn muốn nó. 1328 01:03:13,310 --> 01:03:15,370 Bạn nhận được một 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, nơi mà chúng tôi đã nhìn thấy rằng 301 trước? 1330 01:03:19,250 --> 01:03:20,890 Chờ đã, có chuyện gì thế? 1331 01:03:20,890 --> 01:03:23,250 Xin lỗi. 1332 01:03:23,250 --> 01:03:24,980 Chúng tôi đã nhìn thấy tôi tin giảng trong an ninh. 1333 01:03:24,980 --> 01:03:30,690 Vì vậy, trong quá trình bảo mật, vì vậy nếu David gõ http và sau đó cố gắng để đi đến cs50.net, 1334 01:03:30,690 --> 01:03:31,940 bạn sẽ thấy 301 di chuyển. 1335 01:03:31,940 --> 01:03:32,440 Tại sao? 1336 01:03:32,440 --> 01:03:35,570 Bởi vì nó sẽ chuyển hướng bạn tự động để HTTPS của chúng tôi. 1337 01:03:35,570 --> 01:03:38,649 >> Vì vậy, 301 di chuyển, chỉ cần nó cơ bản là một chuyển hướng. 1338 01:03:38,649 --> 01:03:40,190 Và bạn có thể nghĩ về nó như thế này. 1339 01:03:40,190 --> 01:03:43,790 Bất kỳ các trạng thái bắt đầu bằng 2, những người là như thế, OK, mọi thứ đều OK. 1340 01:03:43,790 --> 01:03:46,530 Bất kỳ của các trạng thái mà bắt đầu với 3, đó là chuyển hướng. 1341 01:03:46,530 --> 01:03:49,571 Trạng thái bắt đầu bằng 4, có nghĩa là có một số loại lỗi khách hàng. 1342 01:03:49,571 --> 01:03:52,440 Trạng thái bắt đầu bằng 5, đó là một số loại lỗi máy chủ. 1343 01:03:52,440 --> 01:03:54,680 Vì vậy, bạn loại chia tay các trạng thái như thế. 1344 01:03:54,680 --> 01:03:59,120 Vì vậy, không phải 304 không thay đổi, vì vậy trong bạn server.c p-bộ, vì vậy chúng ta hãy nói rằng bạn 1345 01:03:59,120 --> 01:04:00,600 cat.html nạp. 1346 01:04:00,600 --> 01:04:03,360 Tất cả mọi thứ trở lại, bạn nhận được 200s, OK, tuyệt vời. 1347 01:04:03,360 --> 01:04:04,540 >> Hãy nói rằng bạn làm mới nó. 1348 01:04:04,540 --> 01:04:07,310 Vâng, bên trong đó cat.html, bạn có một JPEG. 1349 01:04:07,310 --> 01:04:09,520 Vâng, JPEG mà không phải là sẽ được nạp lại. 1350 01:04:09,520 --> 01:04:12,140 Bạn sẽ không gửi khác GET yêu cầu đến máy chủ, 1351 01:04:12,140 --> 01:04:13,980 và sau đó nhận được tất cả các thông tin đó trở lại. 1352 01:04:13,980 --> 01:04:17,560 Nó sẽ chỉ be-- hình ảnh đó là sẽ được lưu trữ trên máy tính của bạn. 1353 01:04:17,560 --> 01:04:19,540 Và như vậy hình ảnh sẽ là một 304. 1354 01:04:19,540 --> 01:04:20,720 Vì vậy, nó không được sửa đổi. 1355 01:04:20,720 --> 01:04:24,600 Nếu bạn sau đó đóng ra, rõ ràng cookies, và sau đó làm mới 1356 01:04:24,600 --> 01:04:27,490 và cố gắng để tải trang đó một lần nữa, bạn sẽ thấy 200s. 1357 01:04:27,490 --> 01:04:28,910 Bạn sẽ không nhìn thấy rằng 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, yêu cầu xấu, thực nhanh chóng, giống như nếu bạn 1359 01:04:32,340 --> 01:04:34,880 được sẽ gửi một JSON đối tượng đến máy chủ 1360 01:04:34,880 --> 01:04:38,090 và đối tượng JSON của bạn là không chính xác, bạn sẽ thấy một cái gì đó như thế. 1361 01:04:38,090 --> 01:04:39,000 403, cấm. 1362 01:04:39,000 --> 01:04:40,330 Khi bạn sẽ thấy một cấm? 1363 01:04:40,330 --> 01:04:41,394 Có lẽ Có lẽ? 1364 01:04:41,394 --> 01:04:42,060 Đung Chmod. 1365 01:04:42,060 --> 01:04:42,950 Davin: Chmod, yeah. 1366 01:04:42,950 --> 01:04:44,730 Vì vậy, bạn đã không được thiết lập quyền một cách chính xác. 1367 01:04:44,730 --> 01:04:45,577 404, không tìm thấy. 1368 01:04:45,577 --> 01:04:46,410 Nó chỉ là không có. 1369 01:04:46,410 --> 01:04:48,670 Vì vậy, nếu bạn gõ vào các URL sai. 1370 01:04:48,670 --> 01:04:53,500 500, lỗi máy chủ nội bộ, máy chủ có lẽ đã không được cấu hình đúng. 1371 01:04:53,500 --> 01:04:56,260 Một cái gì đó không phải trên cuối cùng của bạn, nhưng một cái gì đó ở phía máy chủ. 1372 01:04:56,260 --> 01:04:57,240 Và 503? 1373 01:04:57,240 --> 01:04:59,502 Rất nhiều người đã nhìn thấy 503s trong p-set cuối. 1374 01:04:59,502 --> 01:05:00,460 Khi điều đó sẽ xảy ra? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Tôi nghe thấy tiếng thì thầm. 1377 01:05:05,660 --> 01:05:07,767 >> Đung Khi Google quyết định bạn là một robot. 1378 01:05:07,767 --> 01:05:10,350 Davin: Yeah, khi Google quyết định bạn là một robot, bạn sẽ có được 503s. 1379 01:05:10,350 --> 01:05:11,560 Vì vậy, đó là một tình trạng quá tải. 1380 01:05:11,560 --> 01:05:14,620 Nếu bạn đã yêu cầu từ máy chủ quá nhiều, nó thường là tạm thời. 1381 01:05:14,620 --> 01:05:15,560 Và hầu hết các bạn chú ý đến nó. 1382 01:05:15,560 --> 01:05:16,185 Vì vậy, bạn thấy 503. 1383 01:05:16,185 --> 01:05:19,282 Bạn có thể lấy một ít break, sau đó các 503s ra đi, 1384 01:05:19,282 --> 01:05:20,490 và tất cả mọi thứ đều ổn cả. 1385 01:05:20,490 --> 01:05:26,640 >> Gabe: Bất động nhanh chóng, khi nào các bạn có được 500 có lẽ vấn đề này cuối cùng thiết lập? 1386 01:05:26,640 --> 01:05:27,954 Có? 1387 01:05:27,954 --> 01:05:30,906 >> Đung Thông thường nếu máy chủ có một tập tin đặt không đúng chỗ 1388 01:05:30,906 --> 01:05:34,650 hay [không nghe được] của họ máy [không nghe được]. 1389 01:05:34,650 --> 01:05:38,870 >> Gabe: Vì vậy, nó có thể là một cấu hình vấn đề trong PHP của bạn trên máy chủ của bạn. 1390 01:05:38,870 --> 01:05:42,250 Nhưng nó có thể là một cái gì đó chỉ như một dấu chấm phẩy mà quên bạn. 1391 01:05:42,250 --> 01:05:44,130 Nếu bạn đang gõ PHP, một số cú pháp không chính xác 1392 01:05:44,130 --> 01:05:46,000 có thể giúp bạn có được một cái gì đó như thế. 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> Davin: Cool. 1395 01:05:48,610 --> 01:05:51,180 Bạn có muốn tôi làm chỉ là cho đến AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> Gabe: [Không nghe thấy]. 1397 01:05:52,950 --> 01:05:53,450 Davin: OK. 1398 01:05:53,450 --> 01:05:54,230 Vì vậy, các DOM là gì? 1399 01:05:54,230 --> 01:05:55,290 Gì DOM đứng cho? 1400 01:05:55,290 --> 01:05:56,990 >> Đung Tài liệu mô hình đối tượng. 1401 01:05:56,990 --> 01:05:57,490 Davin: Nice. 1402 01:05:57,490 --> 01:06:00,775 Và tại sao chúng ta thích nó? 1403 01:06:00,775 --> 01:06:02,670 Awesome. 1404 01:06:02,670 --> 01:06:06,651 Phải, vì vậy nó chỉ cho phép chúng ta truy cập HTML, truy cập vào trang của chúng tôi rất nhanh chóng. 1405 01:06:06,651 --> 01:06:07,150 Tại sao? 1406 01:06:07,150 --> 01:06:09,980 Bởi vì chúng tôi đang điều trị của chúng tôi trang, điều trị các thẻ HTML của chúng tôi, 1407 01:06:09,980 --> 01:06:11,730 xử lý tất cả mọi thứ như thể họ đang đối tượng. 1408 01:06:11,730 --> 01:06:13,710 Nếu chúng ta đang đối xử với họ như họ đang đối tượng, sau đó những gì chúng ta có thể làm gì? 1409 01:06:13,710 --> 01:06:15,210 Vâng, chúng ta có thể gọi chức năng trên chúng. 1410 01:06:15,210 --> 01:06:16,460 Và đây là lý do tại sao quan trọng? 1411 01:06:16,460 --> 01:06:19,200 Vâng, bởi vì chúng ta sẽ sử dụng JavaScript để cập nhật HTML của chúng tôi, 1412 01:06:19,200 --> 01:06:20,500 cập nhật các đối tượng này. 1413 01:06:20,500 --> 01:06:23,869 Vì vậy, nếu chúng ta đối xử với họ như đối tượng, sau đó chúng ta có thể gọi chức năng trên chúng. 1414 01:06:23,869 --> 01:06:26,660 Tôi đang đi để có được vào trong này một chút nhiều khi tôi đi vào JavaScript, 1415 01:06:26,660 --> 01:06:30,510 nhưng bạn đã nhìn thấy tất cả như document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Vì vậy, tài liệu là của bạn yếu tố, có yếu tố của ID, 1417 01:06:32,870 --> 01:06:35,087 do đó, bạn sẽ nhìn đối với một số ID trong một thẻ HTML. 1418 01:06:35,087 --> 01:06:36,920 Và sau đó, bạn có thể làm cái gì khác để mà. 1419 01:06:36,920 --> 01:06:40,089 Ví dụ, như document.body, sau đó bạn có thể gắn thêm con. 1420 01:06:40,089 --> 01:06:41,630 Vì vậy, bạn sẽ tìm thấy các tài liệu. 1421 01:06:41,630 --> 01:06:42,340 Bạn có tài liệu. 1422 01:06:42,340 --> 01:06:43,629 Bạn sẽ tìm thấy cơ thể. 1423 01:06:43,629 --> 01:06:44,420 Bạn tìm thấy thi thể. 1424 01:06:44,420 --> 01:06:46,545 Và sau đó, bạn sẽ gọi một số chức năng trên đó. 1425 01:06:46,545 --> 01:06:50,312 Vì vậy, thêm con, và bạn có thể thêm một số mã HTML vào cuối bên trong cơ thể của bạn. 1426 01:06:50,312 --> 01:06:52,520 Vì vậy, về cơ bản, bạn chỉ xử lý nó như một đối tượng. 1427 01:06:52,520 --> 01:06:54,515 Bạn đang điều trị HTML thẻ như một đối tượng. 1428 01:06:54,515 --> 01:06:57,071 Và nó làm cho nó rất dễ dàng và nhanh chóng đi qua chúng. 1429 01:06:57,071 --> 01:06:59,070 Nhưng nó cũng cho phép bạn để gọi chức năng trên chúng 1430 01:06:59,070 --> 01:07:04,410 vì vậy bạn có thể thao tác và thay đổi các yếu tố. 1431 01:07:04,410 --> 01:07:10,162 >> Gabe: Vì điều này, tại sao lại như vậy JavaScript một ngôn ngữ tốt đẹp để tương tác với HTML? 1432 01:07:10,162 --> 01:07:12,870 Odds là, khi người ta đã lựa chọn ngôn ngữ cho các trình duyệt, 1433 01:07:12,870 --> 01:07:14,990 cho phía khách hàng, JavaScript là thực sự tốt đẹp, 1434 01:07:14,990 --> 01:07:16,765 nó thực sự tốt tại xử lý các đối tượng. 1435 01:07:16,765 --> 01:07:20,620 Và các đối tượng được loại thích các đối tượng xuất hiện trong HTML, 1436 01:07:20,620 --> 01:07:23,940 vì vậy nó rất dễ dàng cho JavaScript để làm điều đó loại xử lý. 1437 01:07:23,940 --> 01:07:24,440 Davin: Nice. 1438 01:07:24,440 --> 01:07:25,670 Vì vậy, đây chỉ là một ví dụ. 1439 01:07:25,670 --> 01:07:29,020 Vì vậy, tôi nghĩ về bài kiểm tra cuối cùng của năm, hoặc có lẽ hai năm trước đây, chúng tôi 1440 01:07:29,020 --> 01:07:30,840 yêu cầu bạn tạo ra một cây. 1441 01:07:30,840 --> 01:07:32,660 Vì vậy, đây là chính xác những gì bạn muốn làm. 1442 01:07:32,660 --> 01:07:34,255 Vì vậy, bạn bắt đầu với tài liệu. 1443 01:07:34,255 --> 01:07:36,130 Và sau đó bạn về cơ bản chỉ cần nhìn vào các thẻ. 1444 01:07:36,130 --> 01:07:38,100 Vì vậy, nếu bạn nhìn, chúng tôi bắt đầu với một tag HTML. 1445 01:07:38,100 --> 01:07:41,660 Và sau đó, bạn sẽ có được manh mối về cách làm điều này dựa trên sự thụt vào. 1446 01:07:41,660 --> 01:07:43,870 Vì vậy, đầu loại nhánh. 1447 01:07:43,870 --> 01:07:46,242 Bên trong đầu, chúng tôi có một thẻ cho tiêu đề. 1448 01:07:46,242 --> 01:07:47,450 Vì vậy, sau đó, chúng tôi có một tag tiêu đề. 1449 01:07:47,450 --> 01:07:49,760 Và trong đó, chúng tôi có một số chuỗi. 1450 01:07:49,760 --> 01:07:52,210 Và vì vậy chúng tôi đại diện một chuỗi trong một vòng tròn. 1451 01:07:52,210 --> 01:07:54,010 Và tất cả các thẻ đang có trong ô vuông. 1452 01:07:54,010 --> 01:07:56,270 >> Và nếu bạn nhìn, nếu chúng tôi nghĩ về điều này như một cái cây, 1453 01:07:56,270 --> 01:07:58,730 và chúng ta hãy nói rằng HTML là Là cha mẹ, sau đó đầu và cơ thể 1454 01:07:58,730 --> 01:07:59,772 đang có được anh chị em ruột. 1455 01:07:59,772 --> 01:08:01,813 Họ cả hai sẽ được trẻ em của phụ huynh. 1456 01:08:01,813 --> 01:08:03,620 Vì vậy, bởi vì họ đang cả anh chị em, họ 1457 01:08:03,620 --> 01:08:06,590 sẽ được loại bên cạnh nhau trong mô hình cây của chúng tôi. 1458 01:08:06,590 --> 01:08:08,590 Và sau đó, về cơ bản bạn làm chính xác những điều tương tự. 1459 01:08:08,590 --> 01:08:13,512 Vì vậy, không khó khăn, nhưng chúng tôi đã yêu cầu câu hỏi như thế này trước khi vào các bài kiểm tra. 1460 01:08:13,512 --> 01:08:15,220 Gabe: Hiện ai có câu hỏi cho đến nay? 1461 01:08:15,220 --> 01:08:16,357 Có nên? 1462 01:08:16,357 --> 01:08:16,856 Davin: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, OK, những thứ tốt. 1465 01:08:21,600 --> 01:08:24,069 Vì vậy, JavaScript, JavaScript là gì? 1466 01:08:24,069 --> 01:08:28,370 Vâng, JavaScript is-- nó phức tạp, nhưng các 1467 01:08:28,370 --> 01:08:30,727 là một số trong những điểm nổi bật mà bạn nên ghi nhớ. 1468 01:08:30,727 --> 01:08:31,810 Đầu tiên, nó lỏng lẻo. 1469 01:08:31,810 --> 01:08:33,529 Điều đó có nghĩa là gì? 1470 01:08:33,529 --> 01:08:35,596 Vì vậy, PHP was-- yeah, có chuyện gì thế? 1471 01:08:35,596 --> 01:08:39,854 >> Đung Bạn không cần phải rõ ràng nhà nước kiểu biến nó được. 1472 01:08:39,854 --> 01:08:40,479 Davin: Perfect. 1473 01:08:40,479 --> 01:08:43,270 Vì vậy, ông cho biết bạn không phải nêu rõ kiểu của biến. 1474 01:08:43,270 --> 01:08:44,160 Đó chính quyền. 1475 01:08:44,160 --> 01:08:49,700 Vì vậy, trong C, nếu tôi đã có int i bằng 50, sau đó trong PHP, nó chỉ là như thế này, $ i, 1476 01:08:49,700 --> 01:08:50,550 bằng 50. 1477 01:08:50,550 --> 01:08:54,319 Sau đó, trong JavaScript, điều gì sẽ gọi được? 1478 01:08:54,319 --> 01:08:55,260 Var, phải không? 1479 01:08:55,260 --> 01:08:56,566 Nó muốn được như var i bằng 50. 1480 01:08:56,566 --> 01:08:58,649 Nhưng bạn không cần phải có như, OK, đây là một int. 1481 01:08:58,649 --> 01:09:00,350 OK, đây là một chuỗi. 1482 01:09:00,350 --> 01:09:01,731 Không cần phải làm điều đó. 1483 01:09:01,731 --> 01:09:02,939 Đây là một ngôn ngữ giải thích. 1484 01:09:02,939 --> 01:09:04,904 Vì vậy, có nghĩa là gì? 1485 01:09:04,904 --> 01:09:06,340 >> Đung Không biên soạn. 1486 01:09:06,340 --> 01:09:10,470 >> Davin: Những gì không được biên dịch nghĩa là gì? 1487 01:09:10,470 --> 01:09:11,392 Yeah? 1488 01:09:11,392 --> 01:09:15,336 >> Đung Bạn không có cơ cấu lại mã 1489 01:09:15,336 --> 01:09:18,294 để cho nó sẵn sàng cho máy tính để chạy nó. 1490 01:09:18,294 --> 01:09:23,144 Nó chỉ thực hiện tại thời điểm thực thi và máy tính [không nghe được]. 1491 01:09:23,144 --> 01:09:25,560 Davin: Yeah, vì vậy nó sẽ đi qua một thông dịch viên. 1492 01:09:25,560 --> 01:09:26,750 Nhưng bạn hoàn toàn đúng. 1493 01:09:26,750 --> 01:09:28,319 Vì vậy, bạn sẽ không bao giờ để biên dịch nó, phải không? 1494 01:09:28,319 --> 01:09:30,399 Khi bạn đã làm bạn PHP và mã JavaScript, 1495 01:09:30,399 --> 01:09:31,365 bạn không bao giờ được gọi là biên dịch. 1496 01:09:31,365 --> 01:09:33,779 Bạn không bao giờ được gọi là một cái gì đó như thực hiện hoặc bất cứ điều gì như thế. 1497 01:09:33,779 --> 01:09:34,800 Đó là bởi vì nó giải thích. 1498 01:09:34,800 --> 01:09:37,319 Vì vậy, mỗi khi nó đi qua trình duyệt, nó đi qua một thông dịch viên. 1499 01:09:37,319 --> 01:09:40,370 Và đó sẽ giải thích nó chỉ trong thời gian thực ngay lập tức cho bạn. 1500 01:09:40,370 --> 01:09:43,770 Vì vậy, một số mặt tích cực và tiêu cực là gì để có một ngôn ngữ giải thích 1501 01:09:43,770 --> 01:09:45,258 và có một ngôn ngữ biên dịch? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Vì vậy compiling-- yeah, có chuyện gì thế? 1504 01:09:50,540 --> 01:09:52,444 >> Đung Interpreted là chậm hơn. 1505 01:09:52,444 --> 01:09:53,319 Davin: Theo nghĩa nào? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> Đung Sau khi bạn biên dịch, bạn không có 1508 01:09:59,091 --> 01:10:04,400 để làm bất kỳ bước bổ sung để thực hiện nó, trong khi đây [không nghe được]. 1509 01:10:04,400 --> 01:10:05,570 >> Davin: Phải, hoàn hảo. 1510 01:10:05,570 --> 01:10:08,386 Vì vậy, những gì bạn nói là về cơ bản biên dịch rằng, 1511 01:10:08,386 --> 01:10:10,760 khi bạn biên dịch, bạn có một rất nhiều chi phí trả trước, phải không? 1512 01:10:10,760 --> 01:10:11,760 Bạn đang đi để biên dịch nó. 1513 01:10:11,760 --> 01:10:13,750 Nhưng sau khi bạn biên dịch nó, trình biên dịch sẽ tối ưu hóa nó. 1514 01:10:13,750 --> 01:10:14,840 Nó sẽ được nhanh chóng. 1515 01:10:14,840 --> 01:10:16,170 Nó sẽ cơ bản được nhanh như nó có thể được. 1516 01:10:16,170 --> 01:10:18,830 Với dịch, bạn không bao giờ có mà chi phí trả trước. 1517 01:10:18,830 --> 01:10:22,260 Thay vào đó, nó sẽ hơi chậm mỗi lần duy nhất bạn giải thích nó. 1518 01:10:22,260 --> 01:10:24,940 Và bạn sẽ phải giải thích nó mỗi lần duy nhất. 1519 01:10:24,940 --> 01:10:27,114 Vì vậy, thay vì có này một chi phí thời gian, bây giờ bạn 1520 01:10:27,114 --> 01:10:29,530 sẽ phải giải thích nó mỗi khi trang web ám. 1521 01:10:29,530 --> 01:10:31,890 >> Vì vậy, phiên dịch là tốt vì bạn không cần phải biên dịch nó, 1522 01:10:31,890 --> 01:10:33,980 nhưng họ đang xấu trong mỗi thời gian các tải trang, đó là 1523 01:10:33,980 --> 01:10:35,771 sẽ phải giải JavaScript này. 1524 01:10:35,771 --> 01:10:40,520 Và nó sẽ chạy hơi chậm hơn nếu bạn đã biên dịch nó. 1525 01:10:40,520 --> 01:10:43,044 Cho phép bạn communicate-- oh, chờ đợi. 1526 01:10:43,044 --> 01:10:44,960 Được sử dụng để thao tác nội dung và hình thức. 1527 01:10:44,960 --> 01:10:46,043 Chúng tôi chỉ nói chuyện về điều đó. 1528 01:10:46,043 --> 01:10:47,250 Nó sử dụng DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, chúng tôi sẽ nhận được vào AJAX trong một chút. 1530 01:10:49,930 --> 01:10:51,520 Và sau đó, đó là phía khách hàng. 1531 01:10:51,520 --> 01:10:53,110 Vì vậy, PHP là phía máy chủ. 1532 01:10:53,110 --> 01:10:54,360 JavaScript là phía khách hàng. 1533 01:10:54,360 --> 01:10:57,780 Là những gì tích cực để điều đó không? 1534 01:10:57,780 --> 01:10:58,280 Nó nói nó. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Nó nhanh hơn, phải không? 1537 01:11:02,780 --> 01:11:05,282 Bởi vì bạn không phải đối với: nó nhanh hơn. 1538 01:11:05,282 --> 01:11:07,490 Bạn không cần phải giao tiếp với một số thiết bị khác. 1539 01:11:07,490 --> 01:11:08,790 Nếu bạn chỉ là về bạn khách hàng, bạn sẽ không bao giờ 1540 01:11:08,790 --> 01:11:11,280 sẽ phải đi và thấy những gì trên máy chủ 1541 01:11:11,280 --> 01:11:13,150 và sau đó báo cáo lại hoặc một cái gì đó như thế. 1542 01:11:13,150 --> 01:11:15,410 Vì vậy, phía khách hàng có xu hướng được nhanh hơn một chút. 1543 01:11:15,410 --> 01:11:17,910 >> Gabe: Yeah, nhưng điều này không có nghĩa là PHP 1544 01:11:17,910 --> 01:11:20,440 nhanh hơn so với JavaScript hoặc bất cứ điều gì của như thế nào. 1545 01:11:20,440 --> 01:11:23,270 Họ chạy loại trong cùng một tốc độ vì họ đang cả 1546 01:11:23,270 --> 01:11:24,490 ngôn ngữ thông dịch. 1547 01:11:24,490 --> 01:11:26,680 Điều đó là chậm đây là yêu cầu. 1548 01:11:26,680 --> 01:11:28,870 Vì vậy, bạn đang thực sự đi tất cả các cách trên để Brazil 1549 01:11:28,870 --> 01:11:31,460 để có được một số thông tin sống ở đó. 1550 01:11:31,460 --> 01:11:34,590 Tuy nhiên, PHP và JavaScript, họ loại chạy trong cùng một tốc độ. 1551 01:11:34,590 --> 01:11:37,930 Nó không phải một mà là nhanh hơn so với người khác. 1552 01:11:37,930 --> 01:11:40,600 Điều này, cũng được, lừa câu hỏi ở đây. 1553 01:11:40,600 --> 01:11:47,338 Vì vậy, không bao giờ trở thành JavaScript mã máy, đúng hay sai? 1554 01:11:47,338 --> 01:11:48,590 >> Đung False. 1555 01:11:48,590 --> 01:11:49,090 Gabe: False. 1556 01:11:49,090 --> 01:11:51,298 Nó đã trở thành máy mã bởi vì mã máy là 1557 01:11:51,298 --> 01:11:53,210 điều duy nhất máy hiểu. 1558 01:11:53,210 --> 01:11:55,800 Mặc dù nó không được biên dịch, nó vẫn trở thành mã máy 1559 01:11:55,800 --> 01:11:59,120 vì người phiên dịch chỉ là một chương trình mà đi từng dòng 1560 01:11:59,120 --> 01:12:02,170 và biến đổi dòng thành những gì máy tính hiểu được. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Cool. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> Davin: Đây chỉ là một rất cơ bản hello world chương trình JavaScript. 1565 01:12:12,890 --> 01:12:15,590 Vì vậy, tôi không biết if-- bạn đã nhìn thấy điều này. 1566 01:12:15,590 --> 01:12:17,630 Nhưng bạn chỉ có HTML ở đây. 1567 01:12:17,630 --> 01:12:21,020 Và thay vì thực sự đặt JavaScript trong thẻ script, 1568 01:12:21,020 --> 01:12:22,810 vì vậy bạn nên thường đặt nó trong đầu. 1569 01:12:22,810 --> 01:12:24,030 Bạn có thẻ script. 1570 01:12:24,030 --> 01:12:24,870 Bạn thả nó ở đó. 1571 01:12:24,870 --> 01:12:28,350 Tất cả chúng tôi đã thực hiện ở đây là chúng tôi đã liên kết in-- vì vậy chúng tôi đã liên kết trong một tập tin JavaScript 1572 01:12:28,350 --> 01:12:29,137 như thế này. 1573 01:12:29,137 --> 01:12:30,470 Và tất cả các bạn đã làm được điều này, phải không? 1574 01:12:30,470 --> 01:12:34,740 Vì vậy, khi bạn đang sử dụng jQuery và underscore.js trong p-set cuối cùng, 1575 01:12:34,740 --> 01:12:38,700 bạn không có tấn của mã trong tags kịch bản của bạn, bạn lên trong đầu. 1576 01:12:38,700 --> 01:12:41,415 Bạn có thể làm điều đó, nhưng thay vì bạn chỉ cần kết nối nó vào. 1577 01:12:41,415 --> 01:12:43,540 Và bạn đang liên kết nó trong chỉ giống như bạn làm với CSS. 1578 01:12:43,540 --> 01:12:50,186 Vì vậy, nó chỉ làm cho nó dễ dàng hơn để đọc quá mã của bạn không thích dài dòng 1000 1579 01:12:50,186 --> 01:12:52,310 với tấn các chức năng mà bạn có thể không được sử dụng. 1580 01:12:52,310 --> 01:12:53,518 >> Thay vào đó, bạn chỉ cần liên kết nó trong. 1581 01:12:53,518 --> 01:12:55,050 Nó compartmentalizes nó. 1582 01:12:55,050 --> 01:13:00,110 Nó giống như viết một số tập tin tiêu đề, và sau đó bao gồm cả tập tin tiêu đề trong C. 1583 01:13:00,110 --> 01:13:01,620 Hãy nghĩ về nó như thế này. 1584 01:13:01,620 --> 01:13:02,680 Vì vậy, điều này làm gì? 1585 01:13:02,680 --> 01:13:04,560 Vâng, điều này sẽ chạy. 1586 01:13:04,560 --> 01:13:05,410 Nó sẽ cảnh báo. 1587 01:13:05,410 --> 01:13:08,020 Vì vậy, bạn sẽ nhận được một chút bật lên gọi là hello world. 1588 01:13:08,020 --> 01:13:11,420 Câu hỏi nhanh chóng, chỉ cần kiểm tra sự tỉnh táo, do đó, bạn thấy ở đây trong cơ thể, 1589 01:13:11,420 --> 01:13:13,160 nói cơ thể, HTML ở đây. 1590 01:13:13,160 --> 01:13:14,080 Điều gì đến đầu tiên? 1591 01:13:14,080 --> 01:13:16,864 Tôi thấy cơ thể, HTML ở đây, hay để tôi nhìn thấy những cảnh báo đầu tiên? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> Đung Alert. 1594 01:13:20,820 --> 01:13:21,470 >> Davin: Đúng vậy. 1595 01:13:21,470 --> 01:13:22,110 Ông nói cảnh báo. 1596 01:13:22,110 --> 01:13:22,610 Tại sao? 1597 01:13:22,610 --> 01:13:24,470 >> Đung Bởi vì bạn đi từ trên xuống dưới. 1598 01:13:24,470 --> 01:13:25,600 >> Davin: Yes. 1599 01:13:25,600 --> 01:13:26,100 Perfect. 1600 01:13:26,100 --> 01:13:29,207 Vì vậy, ông cho biết, bạn đi từ trên xuống dưới, đó là hoàn toàn chính xác. 1601 01:13:29,207 --> 01:13:30,790 Bạn sẽ đi từ trên xuống dưới. 1602 01:13:30,790 --> 01:13:34,790 Và trong JavaScript, jQuery, bạn có một chức năng đó là onload như thế, hoặc sẵn sàng, 1603 01:13:34,790 --> 01:13:38,030 và nói rằng, OK, chờ cho đến khi tất cả các tập tin HTML này đã được nạp. 1604 01:13:38,030 --> 01:13:39,580 Và sau đó, gọi JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Bởi vì chúng ta không có ở đây, các Điều đầu tiên mà sẽ xảy ra 1606 01:13:42,190 --> 01:13:43,920 là nó sẽ đi từ trên xuống dưới. 1607 01:13:43,920 --> 01:13:46,310 Nó sẽ đánh mà JS gọi, nó sẽ cảnh báo. 1608 01:13:46,310 --> 01:13:49,510 Sau đó bạn nhấn OK, cảnh báo mà đi xa. 1609 01:13:49,510 --> 01:13:53,600 Sau đó nó sẽ hiển thị bạn thân HTML ở đây. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> OK, vì vậy chỉ cần thực sự nhanh chóng, bằng văn bản trong JavaScript là siêu nhanh. 1612 01:14:00,880 --> 01:14:02,710 Để khai báo một biến, var tên. 1613 01:14:02,710 --> 01:14:07,070 Vì vậy, trong C, bạn có int i, bạn có để khai báo những gì loại loại nó được. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 Chúng tôi đã nói chuyện về việc này. 1617 01:14:09,630 --> 01:14:11,020 Được rồi, chúng ta hãy đi. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, cùng một điều. 1619 01:14:12,510 --> 01:14:14,230 Cùng một điều. 1620 01:14:14,230 --> 01:14:18,165 Tờ khai chức năng, do giống như bạn đã thấy trong C. 1621 01:14:18,165 --> 01:14:21,290 Điều duy nhất khác nhau là như vậy khi bạn nhận được với các ngôn ngữ lập trình khác, 1622 01:14:21,290 --> 01:14:24,780 giống như khi bạn đưa 51 học kỳ tiếp theo và bạn đang làm với OCaml, 1623 01:14:24,780 --> 01:14:26,690 bạn có thể đối phó với các chức năng ẩn danh. 1624 01:14:26,690 --> 01:14:28,240 Vì vậy, đó là chính xác những gì bạn có ở đây. 1625 01:14:28,240 --> 01:14:31,560 Vì vậy, bạn muốn đặt trong tổng, một số loại giá trị tiền. 1626 01:14:31,560 --> 01:14:33,870 Nhưng bạn chỉ có thể làm việc đó một thời gian. 1627 01:14:33,870 --> 01:14:37,310 Vì vậy, bạn không muốn gọi nó là chức năng Tóm lại, cung cấp cho nó một chức năng khai báo. 1628 01:14:37,310 --> 01:14:39,830 Thay vào đó, bạn chỉ cần sử dụng nó như là một chức năng vô danh. 1629 01:14:39,830 --> 01:14:42,469 Và bạn đã nhìn thấy điều này rất nhiều. 1630 01:14:42,469 --> 01:14:44,510 Bạn sẽ thấy một ví dụ về này trong một vài slide. 1631 01:14:44,510 --> 01:14:45,597 Vâng, chúng ta sẽ thấy. 1632 01:14:45,597 --> 01:14:46,430 Gabe: Câu hỏi rất hay. 1633 01:14:46,430 --> 01:14:50,660 Khi bạn có thể muốn sử dụng một chức năng vô danh ở đây? 1634 01:14:50,660 --> 01:14:54,111 Về cơ bản, khi bạn muốn một cái gì đó, như một sự kiện, để xảy ra. 1635 01:14:54,111 --> 01:14:55,860 Vì vậy, khi con chuột là nhấn vào, ví dụ, 1636 01:14:55,860 --> 01:14:57,790 bạn muốn có một số chức năng để được gọi là. 1637 01:14:57,790 --> 01:15:00,570 Vì vậy, để bạn vượt qua sự kiện này xử lý, bạn vượt qua sự kiện này, 1638 01:15:00,570 --> 01:15:02,870 loại, các chức năng mà bạn muốn được gọi. 1639 01:15:02,870 --> 01:15:04,710 Và những gì bạn đang đi qua là như thế, ở cuối 1640 01:15:04,710 --> 01:15:08,757 trong ngày, chỉ là một con trỏ trỏ tới mà hướng dẫn, để các chức năng. 1641 01:15:08,757 --> 01:15:11,090 Vì vậy, nó không giống như bạn đang đi qua mã toàn bộ, chỉ là 1642 01:15:11,090 --> 01:15:12,173 một con trỏ đến các chức năng. 1643 01:15:12,173 --> 01:15:17,871 Và sau đó, khi có ai đó nhấp chuột chuột, sau đó chức năng mà được gọi là. 1644 01:15:17,871 --> 01:15:22,340 >> Davin: Mảng, vì vậy bạn có một khai báo mảng. 1645 01:15:22,340 --> 01:15:23,990 Sau đó, một mảng để đặt mọi thứ vào. 1646 01:15:23,990 --> 01:15:25,769 Bất động nhanh chóng, những gì sẽ này in ra? 1647 01:15:25,769 --> 01:15:27,060 Sẽ là yếu tố thứ ba là gì? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> Đung "JS". 1650 01:15:32,450 --> 01:15:33,940 >> Davin: Phải, nó sẽ là "JS." 1651 01:15:33,940 --> 01:15:35,760 Chờ đợi, đi lại. 1652 01:15:35,760 --> 01:15:37,100 Chiều dài là gì? 1653 01:15:37,100 --> 01:15:38,117 >> Đung Ba. 1654 01:15:38,117 --> 01:15:38,950 Davin: Ba, phải không? 1655 01:15:38,950 --> 01:15:40,210 Chính xác những gì bạn nghĩ. 1656 01:15:40,210 --> 01:15:42,072 OK, bây giờ đi. 1657 01:15:42,072 --> 01:15:43,530 Mảng, bạn có thể thêm những thứ cho họ. 1658 01:15:43,530 --> 01:15:45,395 Vì vậy, bạn có thể đi xa hơn giới hạn ban đầu của họ. 1659 01:15:45,395 --> 01:15:46,740 Chỉ cần một cái gì đó để giữ trong tâm trí. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, họ là một chút bit dãi hơn về điều 1661 01:15:49,760 --> 01:15:50,570 như thế. 1662 01:15:50,570 --> 01:15:54,260 Đối tượng, rất giống cấu trúc trong C, rất nhiều 1663 01:15:54,260 --> 01:15:56,590 giống như các mảng kết hợp trong PHP. 1664 01:15:56,590 --> 01:15:58,720 Tất cả các bạn đã có kinh nghiệm với điều này. 1665 01:15:58,720 --> 01:16:01,880 Vì vậy, JSON, khi bạn đang đi qua JSON qua lại trong p-thiết lập tám, 1666 01:16:01,880 --> 01:16:03,260 đó là đối tượng của bạn. 1667 01:16:03,260 --> 01:16:06,290 >> Vì vậy, yeah, ví dụ, thực tế ví dụ nhanh chóng. 1668 01:16:06,290 --> 01:16:07,880 Dưới đây là một đối tượng. 1669 01:16:07,880 --> 01:16:12,700 Cách bạn tham khảo này đối tượng, vì vậy chỉ cần thực sự nhanh chóng, 1670 01:16:12,700 --> 01:16:18,630 hãy nói rằng tôi muốn tìm ra, OK, khóa học là gì? 1671 01:16:18,630 --> 01:16:20,681 Và do đó, các tên đối tượng ở đây là CS50. 1672 01:16:20,681 --> 01:16:23,180 Và sau đó nếu tôi có một liên kết mảng, làm thế nào tôi sẽ làm điều đó? 1673 01:16:23,180 --> 01:16:24,580 Tôi sẽ sử dụng một phím, phải không? 1674 01:16:24,580 --> 01:16:26,030 Vì vậy, tôi có tên của mảng. 1675 01:16:26,030 --> 01:16:30,160 Tôi có khung, dấu ngoặc kép, phím, báo giá cuối, khung cuối, 1676 01:16:30,160 --> 01:16:33,610 và điều đó sẽ tham khảo đó phần tử bên trong mảng kết hợp của tôi. 1677 01:16:33,610 --> 01:16:37,646 Làm thế nào để tham chiếu Tất nhiên bên trong đối tượng của tôi? 1678 01:16:37,646 --> 01:16:39,170 Bất kỳ ai biết? 1679 01:16:39,170 --> 01:16:40,622 >> Đung [không nghe được]. 1680 01:16:40,622 --> 01:16:41,784 >> Davin: Có chuyện gì vậy? 1681 01:16:41,784 --> 01:16:42,700 Đung CS50.course. 1682 01:16:42,700 --> 01:16:43,510 Davin: Right, yeah. 1683 01:16:43,510 --> 01:16:45,320 Vì vậy CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Vì vậy, cách các bạn tham khảo những điều bên trong một đối tượng JSON là với một dấu chấm. 1685 01:16:48,770 --> 01:16:53,114 >> Đung Bạn cũng có thể sử dụng cú pháp mảng. 1686 01:16:53,114 --> 01:16:54,050 >> Davin: OK, tiền phạt. 1687 01:16:54,050 --> 01:16:57,544 >> Gabe: Bạn cũng có thể sử dụng CS50 khung, chuỗi, giống như dấu ngoặc kép. 1688 01:16:57,544 --> 01:16:59,210 Đung Tôi nghĩ nó giống hệt với PHP. 1689 01:16:59,210 --> 01:17:00,293 Gabe: Đó là điều tương tự. 1690 01:17:00,293 --> 01:17:02,487 Davin: Fine! 1691 01:17:02,487 --> 01:17:03,945 Nhưng bạn sẽ thấy nơi khác này. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Yeah, vì vậy tiếp tục đi. 1694 01:17:10,480 --> 01:17:13,330 Đây là những gì tôi vừa nói. 1695 01:17:13,330 --> 01:17:17,840 Vì vậy, vào một ví dụ JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Vì vậy, đây là DOM của tôi, phải không? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Bất động nhanh chóng, vì vậy tôi có một đầu, hello thế giới, cơ thể. 1699 01:17:25,410 --> 01:17:26,160 Tôi có một nút. 1700 01:17:26,160 --> 01:17:27,870 Nó nói "đẩy tôi," vì vậy tôi muốn đẩy nó. 1701 01:17:27,870 --> 01:17:29,745 Và tôi muốn làm một cái gì đó khi được nhấp vào. 1702 01:17:29,745 --> 01:17:31,220 Phải, tiếp theo. 1703 01:17:31,220 --> 01:17:34,630 >> Phải, vì vậy đây là JavaScript của tôi. 1704 01:17:34,630 --> 01:17:37,790 Vì vậy, jQuery chỉ là một dễ dàng hơn cách viết JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Vì vậy, đây, và những gì tôi sẽ chỉ cho bạn tiếp theo, sẽ là jQuery, 1706 01:17:40,920 --> 01:17:41,930 là giống hệt nhau. 1707 01:17:41,930 --> 01:17:43,990 Vì vậy, họ sẽ làm những điều tương tự. 1708 01:17:43,990 --> 01:17:45,974 Chỉ cần jQuery có xu hướng được một chút dễ dàng hơn. 1709 01:17:45,974 --> 01:17:47,140 Mọi người có xu hướng thích nó hơn. 1710 01:17:47,140 --> 01:17:48,390 Nó có rất nhiều chức năng. 1711 01:17:48,390 --> 01:17:49,830 Vì vậy, mọi người có xu hướng sử dụng jQuery. 1712 01:17:49,830 --> 01:17:53,270 Tất cả các bạn sử dụng jQuery trong p-set cuối. 1713 01:17:53,270 --> 01:17:54,270 Vì vậy, điều này sẽ làm gì? 1714 01:17:54,270 --> 01:17:56,580 Điều gì sẽ JavaScript-- này để này chỉ là đồng bằng JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Điều này sẽ làm những gì? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Nó sẽ làm gì? 1718 01:18:03,450 --> 01:18:04,890 >> Vì vậy, đầu tiên, bạn sẽ thấy cửa sổ onload. 1719 01:18:04,890 --> 01:18:05,390 Phải không? 1720 01:18:05,390 --> 01:18:06,640 Vì vậy, chúng tôi không thấy rằng trước. 1721 01:18:06,640 --> 01:18:09,380 Vì vậy, đây là sẽ chờ cho đến khi toàn bộ tải cửa sổ. 1722 01:18:09,380 --> 01:18:12,770 Vì vậy, nó sẽ đợi cho đến khi tải HTML, tất cả các hình ảnh 1723 01:18:12,770 --> 01:18:13,770 trước khi nó bất cứ điều gì. 1724 01:18:13,770 --> 01:18:16,050 Vì vậy, chúng ta hãy nói DOM của chúng tôi đã được nạp. 1725 01:18:16,050 --> 01:18:17,270 Tất cả mọi thứ ở đó. 1726 01:18:17,270 --> 01:18:19,080 Sau đó, những gì sẽ xảy ra? 1727 01:18:19,080 --> 01:18:19,922 Yeah? 1728 01:18:19,922 --> 01:18:22,880 >> Đung nút xuất hiện. 1729 01:18:22,880 --> 01:18:25,201 >> Davin: Các nút đã có trước đó. 1730 01:18:25,201 --> 01:18:26,700 Yeah, vì vậy của nút đã có. 1731 01:18:26,700 --> 01:18:31,190 Nhưng điều này sẽ nói, OK, nếu tôi bấm nút, 1732 01:18:31,190 --> 01:18:33,650 do đó, các nút là đã ở đó, giống như tag HTML. 1733 01:18:33,650 --> 01:18:35,980 Chờ đợi, đi lại thật nhanh. 1734 01:18:35,980 --> 01:18:39,470 Thẻ này đúng ngay ở đây là sẽ là một nút rồi. 1735 01:18:39,470 --> 01:18:40,810 Đã có nút. 1736 01:18:40,810 --> 01:18:44,120 Nhưng sau đó, các JavaScript tag, ngay tại đây, 1737 01:18:44,120 --> 01:18:46,160 nó nói, OK, tôi muốn để có được phần tử bằng ID, 1738 01:18:46,160 --> 01:18:50,300 để nút tìm kiếm chỉ nói, OK, tôi muốn bản đồ biến này để nút đó. 1739 01:18:50,300 --> 01:18:53,120 Vì vậy, biến đó chỉ là một là cách dễ dàng hơn để truy cập vào nút đó. 1740 01:18:53,120 --> 01:18:57,300 Và tôi nói, OK, nếu tôi bấm vào đó nút, vì vậy nếu tôi bấm vào phần tử đó, 1741 01:18:57,300 --> 01:18:59,560 và yếu tố này đề cập đến nút, nếu tôi nhấp vào nó, 1742 01:18:59,560 --> 01:19:00,875 sau đó tôi muốn gọi một chức năng. 1743 01:19:00,875 --> 01:19:03,500 Đây là một trong những người vô danh chức năng, chúng tôi đã nói về. 1744 01:19:03,500 --> 01:19:04,840 >> Chỉ cần gọi một số chức năng. 1745 01:19:04,840 --> 01:19:08,840 Bên trong hàm đó, về cơ bản một cái gì đó chúng tôi đã nhìn thấy rất nhiều, cảnh báo. 1746 01:19:08,840 --> 01:19:10,477 Bạn bấm nút tìm kiếm. 1747 01:19:10,477 --> 01:19:12,060 Nó sẽ cơ bản có một nút. 1748 01:19:12,060 --> 01:19:13,040 Bạn nhấp vào nó. 1749 01:19:13,040 --> 01:19:14,040 Bạn nhận được cảnh báo đó. 1750 01:19:14,040 --> 01:19:14,850 X ra. 1751 01:19:14,850 --> 01:19:15,754 Có bấy nhiêu thôi. 1752 01:19:15,754 --> 01:19:16,254 Yeah? 1753 01:19:16,254 --> 01:19:21,980 >> Đung Vì vậy, nếu bạn đặt các script [Không nghe thấy], thẻ script trong HTML của bạn? 1754 01:19:21,980 --> 01:19:24,300 >> Davin: Bạn có thể đặt các script tag thẳng vào đầu 1755 01:19:24,300 --> 01:19:30,667 bởi vì bạn có onload này. 1756 01:19:30,667 --> 01:19:32,000 Nó cũng cho bạn có một nhấp chuột. 1757 01:19:32,000 --> 01:19:34,166 Vì vậy, nó sẽ đợi cho đến khi bạn bấm vào một cái gì đó. 1758 01:19:34,166 --> 01:19:37,470 Nhưng onload chỉ là để được an toàn, để đảm chắc chắn mọi thứ nạp vào HTML của bạn 1759 01:19:37,470 --> 01:19:38,170 trước. 1760 01:19:38,170 --> 01:19:39,247 Yeah? 1761 01:19:39,247 --> 01:19:40,330 Bạn muốn nói điều gì đó? 1762 01:19:40,330 --> 01:19:41,080 >> Gabe: [Không nghe thấy]. 1763 01:19:41,080 --> 01:19:42,485 Davin: Yeah. 1764 01:19:42,485 --> 01:19:45,426 >> Đung tránh Vì vậy onload xác định các nút tìm kiếm biến 1765 01:19:45,426 --> 01:19:49,930 bằng cách nói document.getElementById nút tìm kiếm dấu chấm [không nghe được]. 1766 01:19:49,930 --> 01:19:52,320 >> Davin: Chắc chắn, nhưng sau đó chuỗi của bạn chỉ nhận được rất lớn. 1767 01:19:52,320 --> 01:19:55,553 Chính xác, vì vậy đây là chỉ để làm cho nó dễ dàng hơn cho bạn, yeah. 1768 01:19:55,553 --> 01:19:56,053 Có? 1769 01:19:56,053 --> 01:19:57,886 >> Đung chúng tôi đã làm ở đâu tạo window.onload? 1770 01:19:57,886 --> 01:19:58,951 Hoặc document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> Davin: Có, có. 1772 01:20:00,590 --> 01:20:02,094 Có, có, tôi đã kiểm tra. 1773 01:20:02,094 --> 01:20:03,710 >> Gabe: Không để họ quan tâm. 1774 01:20:03,710 --> 01:20:06,970 >> Davin: OK, vì vậy tôi sẽ để cho bạn anyway. 1775 01:20:06,970 --> 01:20:11,005 Vì vậy, về cơ bản, chỉ nói chung, vì vậy window.onload chờ đợi cho đến khi DOM của bạn, tất cả 1776 01:20:11,005 --> 01:20:12,180 HTML của bạn, tải trọng. 1777 01:20:12,180 --> 01:20:13,513 Nó chờ đợi cho đến khi tải hình ảnh của bạn. 1778 01:20:13,513 --> 01:20:14,930 Nó chờ đợi cho đến khi tất cả mọi thứ tải. 1779 01:20:14,930 --> 01:20:18,410 document.ready, nó chỉ chờ đợi cho đến khi tải DOM của bạn. 1780 01:20:18,410 --> 01:20:22,190 Khi HTML là có tất cả, một lần DOM của bạn là có, bắt đầu chạy. 1781 01:20:22,190 --> 01:20:23,400 Đó là sự khác biệt duy nhất. 1782 01:20:23,400 --> 01:20:24,700 >> Gabe: sanity nhanh kiểm tra ở đây. 1783 01:20:24,700 --> 01:20:29,060 Vì vậy, điều này có thể được nhìn thấy loại giống như một dòng mã, phải không? 1784 01:20:29,060 --> 01:20:33,600 Bởi vì nó là window.onload bằng một loạt các công cụ. 1785 01:20:33,600 --> 01:20:39,030 Khi đọc JavaScript này, đúng hay sai, các chức năng được thực hiện. 1786 01:20:39,030 --> 01:20:40,020 False. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Điều gì xảy ra ở đây, bạn chỉ cần đi qua chức năng này như một chức năng ẩn danh 1789 01:20:44,470 --> 01:20:45,300 để window.onload. 1790 01:20:45,300 --> 01:20:48,480 Và sau đó khi được nó đi để thực sự có được thực thi? 1791 01:20:48,480 --> 01:20:49,600 Khi tải cửa sổ. 1792 01:20:49,600 --> 01:20:50,420 Đó là một sự kiện. 1793 01:20:50,420 --> 01:20:52,460 Vì vậy, đó là jus t điều chúng tôi nói về trước đó, phải không? 1794 01:20:52,460 --> 01:20:54,580 Vì vậy, khi sự kiện xảy ra, chức năng sẽ xảy ra. 1795 01:20:54,580 --> 01:20:55,746 Cùng một điều với các onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> Davin: OK, vì thế có người mất đi document.ready. 1798 01:21:03,130 --> 01:21:04,698 Nhưng điều này sẽ là same-- chính xác 1799 01:21:04,698 --> 01:21:06,864 Đung Các ký hiệu đô la, đó là một document.ready. 1800 01:21:06,864 --> 01:21:07,710 Đó là một phím tắt. 1801 01:21:07,710 --> 01:21:08,501 >> Davin: Oh, đó là? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, vì vậy các phương tiện này document.ready, shortcut. 1804 01:21:15,500 --> 01:21:19,660 Nhưng điều này cũng giống như window.onload ngoại trừ cho rằng sự khác biệt nhỏ 1805 01:21:19,660 --> 01:21:20,680 Tôi đã nói với bạn về. 1806 01:21:20,680 --> 01:21:21,870 Và đây là jQuery. 1807 01:21:21,870 --> 01:21:25,190 Vì vậy, đây là chính xác giống nhau thing-- này là JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Đây là just-- một số người nghĩ về nó như một trọng lượng nhẹ hơn, phiên bản kiểu dáng đẹp 1809 01:21:29,500 --> 01:21:32,370 rằng có rất nhiều chức năng có thể bạn sẽ được sử dụng. 1810 01:21:32,370 --> 01:21:34,500 Vì vậy, điều này không chính xác những điều tương tự. 1811 01:21:34,500 --> 01:21:37,110 >> Vì vậy, điều cần loại chỉ ra. 1812 01:21:37,110 --> 01:21:40,364 Vì vậy, trong ví dụ khác, chúng tôi có document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 vì vậy chúng tôi đã từ lâu này chuỗi đó sẽ được 1814 01:21:42,280 --> 01:21:44,290 các phần tử bằng bất cứ điều gì nó có ID. 1815 01:21:44,290 --> 01:21:46,470 Đó là thay thế bằng cuộc gọi này ngay tại đây. 1816 01:21:46,470 --> 01:21:50,860 Vì vậy, bạn thấy các ký hiệu đô la, sau đó bạn thấy quote, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag luôn là một chọn. 1818 01:21:52,370 --> 01:21:54,730 Nó nói, OK, điều này đã làm với một ID. 1819 01:21:54,730 --> 01:21:56,120 Bộ chọn cho một lớp học là gì? 1820 01:21:56,120 --> 01:21:57,190 >> Đung Dot. 1821 01:21:57,190 --> 01:21:57,960 >> Davin: Dot, phải. 1822 01:21:57,960 --> 01:22:01,950 Nếu bạn chỉ cần đi tới chọn một tag, nó là gì? 1823 01:22:01,950 --> 01:22:03,310 Nó chỉ là tag, chính xác. 1824 01:22:03,310 --> 01:22:05,560 Và bạn có thể sử dụng ở đây, là tốt. 1825 01:22:05,560 --> 01:22:08,560 >> Gabe: Và bằng thẻ, chúng ta có ý nghĩa như div, ví dụ, hoặc đầu. 1826 01:22:08,560 --> 01:22:11,500 >> Davin: Hoặc cơ thể hoặc p hay bất cứ điều gì như thế, yeah. 1827 01:22:11,500 --> 01:22:14,390 Vì vậy, ở đây, OK, thay vì nói document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 điều này chỉ là một điều chính xác. 1829 01:22:16,500 --> 01:22:17,990 Chỉ trong jQuery, nó ngắn hơn. 1830 01:22:17,990 --> 01:22:19,860 Vì vậy, nó đơn giản. 1831 01:22:19,860 --> 01:22:23,420 Vì vậy, sau đó, không có thêm onclick, chỉ cần nhấp vào. 1832 01:22:23,420 --> 01:22:26,320 jQuery chức năng, gọi chức năng này. 1833 01:22:26,320 --> 01:22:27,580 Cảnh báo là chính xác như nhau. 1834 01:22:27,580 --> 01:22:29,452 Vì vậy, đó là một chút nhỏ hơn, hoặc ít bit 1835 01:22:29,452 --> 01:22:32,410 ngắn hơn, một ít người nghĩ rằng bit-- đó là một chút dễ dàng hơn để viết ra, 1836 01:22:32,410 --> 01:22:34,600 một chút dễ dàng hơn để hiểu. 1837 01:22:34,600 --> 01:22:35,640 Nhưng điều này là jQuery. 1838 01:22:35,640 --> 01:22:37,887 Rất nhiều người có được một chút chút bối rối và lo lắng 1839 01:22:37,887 --> 01:22:40,220 và họ nghĩ rằng, OK, jQuery khác với JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Tôi phải nhớ những hai việc khác nhau. 1841 01:22:42,136 --> 01:22:42,740 Nó không phải. 1842 01:22:42,740 --> 01:22:45,315 Ý tôi là, đó là cú pháp khác nhau. 1843 01:22:45,315 --> 01:22:46,970 Nhưng jQuery là JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Nó chỉ là một vẻ phiên bản tốt hơn mà 1845 01:22:50,050 --> 01:22:51,967 có thể được dễ dàng hơn để hiểu rằng người sử dụng. 1846 01:22:51,967 --> 01:22:53,716 Gabe: Yeah, được Thành thật mà nói, rằng ký hiệu đô la 1847 01:22:53,716 --> 01:22:57,240 mà bạn nhìn thấy trong jQuery, đó chỉ là tên của một hàm jQuery định nghĩa. 1848 01:22:57,240 --> 01:22:58,614 Nó không có gì đặc biệt. 1849 01:22:58,614 --> 01:23:03,140 Là Nó chỉ là tên của một hàm, giống như bạn có thể xác định dấu đô la. 1850 01:23:03,140 --> 01:23:05,670 >> Davin: Yeah, vì vậy nói về điều này. 1851 01:23:05,670 --> 01:23:06,680 Một số điều hữu ích. 1852 01:23:06,680 --> 01:23:10,414 Tôi đã nhìn lại những câu đố cũ. 1853 01:23:10,414 --> 01:23:13,080 Trong vài trắc nghiệm quá khứ, họ đã phải sử dụng những thứ như thế này. 1854 01:23:13,080 --> 01:23:15,230 Vì vậy document.ready, vì vậy chắc chắn rằng tất cả mọi thứ của 1855 01:23:15,230 --> 01:23:17,410 nạp trước khi bạn bắt đầu làm việc. 1856 01:23:17,410 --> 01:23:20,120 Chọn một ID, hoặc chọn một lớp, nó muốn chỉ 1857 01:23:20,120 --> 01:23:24,020 được trích dẫn chấm một số lớp, cuối quote. 1858 01:23:24,020 --> 01:23:26,580 Gửi, vì vậy nếu bạn đang nộp một mẫu đơn và cuộc gọi 1859 01:23:26,580 --> 01:23:28,830 Chức năng này sau khi đơn nộp. 1860 01:23:28,830 --> 01:23:34,210 Giá trị, vì vậy chúng ta hãy nói rằng tôi có một hình thức trình, giống như một tên người dùng, email, 1861 01:23:34,210 --> 01:23:34,950 bất cứ điều gì. 1862 01:23:34,950 --> 01:23:36,010 Tôi đã có một hộp văn bản. 1863 01:23:36,010 --> 01:23:37,670 Vì vậy, tôi gõ vào hộp văn bản đó. 1864 01:23:37,670 --> 01:23:42,170 Vâng, nếu bạn muốn để có được giá trị ra là hộp văn bản, bạn sử dụng dấu chấm val. 1865 01:23:42,170 --> 01:23:44,050 Và sau đó, xuống đây, dot HTML là cùng 1866 01:23:44,050 --> 01:23:47,710 cũng giống như tài liệu dot getElementById dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Vì vậy, đó là sẽ trở lại bạn HTML từ ID đó. 1868 01:23:50,890 --> 01:23:55,080 Ở đây, bạn chỉ cần sử dụng một số ID hoặc bất cứ dấu chấm HTML. 1869 01:23:55,080 --> 01:23:56,930 Điều đó sẽ nhận được HTML từ phần tử đó. 1870 01:23:56,930 --> 01:24:00,130 Nếu bạn muốn thay đổi điều đó rồi HTML, bạn có thể vượt qua nó một cái gì đó. 1871 01:24:00,130 --> 01:24:05,600 Vì vậy, bạn muốn được như chấm HTML, và sau đó bên trong, báo giá, HTML mới hoặc một cái gì đó. 1872 01:24:05,600 --> 01:24:07,490 >> Gabe: OK, vì vậy AJAX. 1873 01:24:07,490 --> 01:24:10,347 Tôi thực sự muốn hiểu AJAX thực sự tốt. 1874 01:24:10,347 --> 01:24:12,430 Vì vậy, tôi muốn các bạn để hiểu AJAX thực sự tốt. 1875 01:24:12,430 --> 01:24:14,221 Bởi vì nếu bạn làm thế, bạn khá nhiều đi 1876 01:24:14,221 --> 01:24:16,810 hiểu rõ mọi thứ đã làm với HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript bởi vì tất cả đến với nhau trong AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX không phải là một ngôn ngữ. 1879 01:24:25,130 --> 01:24:27,000 AJAX là một kỹ thuật. 1880 01:24:27,000 --> 01:24:31,690 Và nó sử dụng rất nhiều công cụ khác nhau. 1881 01:24:31,690 --> 01:24:35,090 AJAX là viết tắt của không đồng bộ XML JavaScript. 1882 01:24:35,090 --> 01:24:36,730 Vì vậy, các phương pháp, ngôn ngữ, các dữ liệu. 1883 01:24:36,730 --> 01:24:40,610 >> Vì vậy, các ngôn ngữ chính mà chúng tôi sử dụng trong AJAX để kích hoạt tất cả mọi thứ 1884 01:24:40,610 --> 01:24:42,830 và để xử lý tất cả mọi thứ sau đó là JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Đó là lý do tại sao nó liên quan rất gần với JavaScript. 1886 01:24:45,160 --> 01:24:49,810 Và sau đó không đồng bộ là bởi vì chúng tôi không làm điều đó 1887 01:24:49,810 --> 01:24:51,980 tất cả cùng một lúc khi chúng tôi đang tải trang. 1888 01:24:51,980 --> 01:24:57,190 Đây là điều mà chúng ta có thể làm những loại song song. 1889 01:24:57,190 --> 01:24:59,725 Ý tưởng chính đằng sau AJAX là bạn muốn 1890 01:24:59,725 --> 01:25:02,170 nó để có được một số thông tin cụ thể. 1891 01:25:02,170 --> 01:25:06,450 Ví dụ, khi bạn đang gõ mới Tên người dùng khi bạn đăng ký một tên người dùng, 1892 01:25:06,450 --> 01:25:08,520 tên người dùng của tôi là abc123. 1893 01:25:08,520 --> 01:25:11,671 Và sau đó, vào cuối của hình thức, bạn phải bấm Submit. 1894 01:25:11,671 --> 01:25:14,420 Và nó đã phải đi đến các máy chủ, và sau đó kiểm tra xem trong các cơ sở dữ liệu, 1895 01:25:14,420 --> 01:25:15,594 abc123 là đã có. 1896 01:25:15,594 --> 01:25:18,510 Và nếu nó đã có, nó nói, Tên người sử dụng đã có trong cơ sở dữ liệu. 1897 01:25:18,510 --> 01:25:21,010 Và họ, bạn phải điền ra toàn bộ mẫu một lần nữa. 1898 01:25:21,010 --> 01:25:23,110 Và nó đã thực sự, thực sự xấu. 1899 01:25:23,110 --> 01:25:25,440 >> Và sau đó mọi người nói, OK, tại sao không có thể chúng ta chỉ 1900 01:25:25,440 --> 01:25:29,560 làm một yêu cầu HTTP nhỏ để chỉ cần kiểm tra để xem liệu người dùng này là trong cơ sở dữ liệu 1901 01:25:29,560 --> 01:25:32,080 trước khi người dùng đã phải nộp toàn bộ hình thức? 1902 01:25:32,080 --> 01:25:36,350 Vì vậy, ví dụ, khi dùng xong gõ abc123, 1903 01:25:36,350 --> 01:25:39,660 chúng ta hãy đi đến máy chủ một chút bit và chỉ có được một sự thật hay giả 1904 01:25:39,660 --> 01:25:43,080 từ các máy chủ để xem đó là một tên người dùng hợp lệ hay không. 1905 01:25:43,080 --> 01:25:49,250 OK, vì vậy đó là một trong những chính sử dụng của AJAX ngày nay vẫn còn. 1906 01:25:49,250 --> 01:25:52,130 >> Davin: Vì vậy, thực sự nhanh chóng, trong một cuộc gọi Ajax trong jQuery, 1907 01:25:52,130 --> 01:25:54,770 bạn có thể có nghĩa rằng bạn muốn nó được đồng bộ. 1908 01:25:54,770 --> 01:25:56,330 Bạn không nên làm điều này. 1909 01:25:56,330 --> 01:25:57,640 Nhưng bạn có thể làm điều đó. 1910 01:25:57,640 --> 01:25:59,277 Và nếu bạn đã làm điều đó, điều gì sẽ xảy ra? 1911 01:25:59,277 --> 01:26:01,610 Vâng, ví dụ, khi bạn nhận tin tức hoặc bất cứ điều gì, 1912 01:26:01,610 --> 01:26:05,464 Trình duyệt của bạn là chỉ cần đi để chờ đợi đến khi mà toàn bộ cuộc gọi hoàn tất 1913 01:26:05,464 --> 01:26:08,130 thay vì để cho bạn làm khác điều ngay sau khi bạn nhấp vào nó. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> Gabe: Nó không đi nữa. 1916 01:26:17,115 --> 01:26:19,681 Oh my god. 1917 01:26:19,681 --> 01:26:20,180 Xin lỗi! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Yup. 1920 01:26:23,601 --> 01:26:25,350 "Trong quá khứ, khách hàng cần thiết để yêu cầu 1921 01:26:25,350 --> 01:26:26,840 toàn bộ nội dung của một trang web. " 1922 01:26:26,840 --> 01:26:28,210 Đó là những gì tôi đã nói. 1923 01:26:28,210 --> 01:26:30,070 Nó cho phép chúng tôi gửi GET hoặc POST thêm 1924 01:26:30,070 --> 01:26:32,140 yêu cầu mà không có để tải lại trình duyệt của chúng tôi. 1925 01:26:32,140 --> 01:26:34,806 Vì vậy, vào cuối ngày, chúng tôi thực sự làm cho một yêu cầu HTTP 1926 01:26:34,806 --> 01:26:35,740 ở đây sử dụng JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Bởi vì trước đây, chúng tôi chỉ sử dụng JavaScript để thay đổi HTML rằng đã đến. 1928 01:26:39,700 --> 01:26:43,110 Và bây giờ, chúng ta có thể sử dụng nó để giao tiếp với các máy chủ web là tốt. 1929 01:26:43,110 --> 01:26:46,140 Cách này sẽ xảy ra là chúng tôi có các khách hàng. 1930 01:26:46,140 --> 01:26:47,340 Davin là một khách hàng. 1931 01:26:47,340 --> 01:26:50,797 Và anh có tất cả các JavaScript chạy vì HTML là câm. 1932 01:26:50,797 --> 01:26:51,630 JavaScript là thông minh. 1933 01:26:51,630 --> 01:26:54,690 Vì vậy Davin Davin có thông minh của mình một phần và một phần ngớ ngẩn của mình. 1934 01:26:54,690 --> 01:26:57,590 Ông ấy sẽ sử dụng một phần thông minh của mình bây giờ. 1935 01:26:57,590 --> 01:27:00,860 Ông ấy sẽ sử dụng JavaScript để yêu cầu, ví dụ, 1936 01:27:00,860 --> 01:27:04,340 dù là trong abc123 cơ sở dữ liệu hay không. 1937 01:27:04,340 --> 01:27:08,450 >> Vì vậy Davin, xin vui lòng, bạn chỉ gửi cho tôi một yêu cầu HTTP. 1938 01:27:08,450 --> 01:27:09,197 Cám ơn. 1939 01:27:09,197 --> 01:27:10,530 Vì vậy, ông chỉ cần gửi một yêu cầu HTTP. 1940 01:27:10,530 --> 01:27:11,270 Bạn thấy không? 1941 01:27:11,270 --> 01:27:14,700 Và đó chỉ là cùng một cách rằng bất kỳ yêu cầu HTTP được gửi đi. 1942 01:27:14,700 --> 01:27:16,830 Trình duyệt, Google Chrome hoặc một cái gì đó, là 1943 01:27:16,830 --> 01:27:19,570 sẽ thấy rằng Davin của cố gắng để gửi một yêu cầu HTTP, 1944 01:27:19,570 --> 01:27:20,930 sẽ giúp HM một chút. 1945 01:27:20,930 --> 01:27:23,950 Và đó là sẽ đi tất cả các cách để các máy chủ. 1946 01:27:23,950 --> 01:27:27,370 Bây giờ, các máy chủ sẽ có PHP ở đây, hoặc bất kỳ ngôn ngữ khác. 1947 01:27:27,370 --> 01:27:29,990 Cũng giống như trong một yêu cầu HTTP bình thường. 1948 01:27:29,990 --> 01:27:31,950 Đó là khá nhiều yêu cầu HTTP bình thường. 1949 01:27:31,950 --> 01:27:33,658 >> Và sau đó, các máy chủ sẽ nói, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin muốn tôi để kiểm tra xem abc123 này là trong cơ sở dữ liệu. 1951 01:27:37,270 --> 01:27:38,310 Đi nói chuyện với các mô hình. 1952 01:27:38,310 --> 01:27:41,310 Mô hình này cho biết nó không phải. abc123 là một tên người dùng tốt. 1953 01:27:41,310 --> 01:27:47,940 Và sau đó, các máy chủ web sẽ sử dụng PHP để đưa ra một số hình thức tập tin. 1954 01:27:47,940 --> 01:27:52,280 Nó có thể là nghĩa đen chỉ một tập tin có chứa "yes" trong nó, hoặc "không, 1955 01:27:52,280 --> 01:27:53,315 hoặc một cái gì đó như thế. 1956 01:27:53,315 --> 01:27:54,190 Nó có thể là bất kỳ tập tin. 1957 01:27:54,190 --> 01:27:57,080 >> Nó có thể giống như tôi sẽ Davin gửi một hình ảnh của một con vịt 1958 01:27:57,080 --> 01:28:01,200 nếu nó ở trong các cơ sở dữ liệu và gửi một hình ảnh của một con chuột 1959 01:28:01,200 --> 01:28:02,420 nếu nó không có trong cơ sở dữ liệu. 1960 01:28:02,420 --> 01:28:04,294 Đó sẽ là loại câm, nhưng nó sẽ làm việc. 1961 01:28:04,294 --> 01:28:07,030 OK, vì vậy tôi gửi một con vịt để Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin có một con vịt. 1963 01:28:08,150 --> 01:28:13,330 Và bây giờ, ai sẽ là người để xử lý các con vịt? 1964 01:28:13,330 --> 01:28:16,390 Phần thông minh Davin được nữa, vậy JavaScript, phải không? 1965 01:28:16,390 --> 01:28:18,620 JavaScript đã gửi yêu cầu, và JavaScript 1966 01:28:18,620 --> 01:28:22,300 sẽ nhận được yêu cầu và giải thích nó trong một số hình thức. 1967 01:28:22,300 --> 01:28:26,630 >> Và trong ý nghĩa này, nó sẽ nói, OK, nếu vịt sau đó tôi là tốt. 1968 01:28:26,630 --> 01:28:30,770 Nếu hamster, sau đó tôi sẽ để nói, không, tên người dùng đã 1969 01:28:30,770 --> 01:28:31,970 tồn tại trong cơ sở dữ liệu. 1970 01:28:31,970 --> 01:28:33,845 Nhưng thông thường, bạn không sẽ gửi một con vịt. 1971 01:28:33,845 --> 01:28:36,740 Bạn sẽ gửi một cái gì đó hơi thông minh hơn. 1972 01:28:36,740 --> 01:28:40,320 Và những gì chúng tôi sử dụng là XML. 1973 01:28:40,320 --> 01:28:42,690 Và gần đây, chúng tôi sử dụng JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON chỉ là JavaScript Object Notation, mà 1975 01:28:45,629 --> 01:28:47,670 về cơ bản là bạn có được một toàn bộ đối tượng JavaScript. 1976 01:28:47,670 --> 01:28:50,820 Và bạn đặt nó trong một tập tin, chỉ thích mà đối tượng CS50 rằng các bạn đã thấy. 1977 01:28:50,820 --> 01:28:53,090 Bạn đặt nó trong một tập tin, và bạn gửi nó cho Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Vì vậy, trong trường hợp này, tôi sẽ làm cho một đối tượng JavaScript 1979 01:28:55,850 --> 01:28:59,570 và chỉ nói rằng, người dùng tồn tại, có. 1980 01:28:59,570 --> 01:29:01,630 Hoặc người dùng tồn tại, không có. 1981 01:29:01,630 --> 01:29:02,810 Và gửi lại cho anh. 1982 01:29:02,810 --> 01:29:03,830 Và tại sao JSON? 1983 01:29:03,830 --> 01:29:07,330 Bởi vì người ai nhận này là 1984 01:29:07,330 --> 01:29:10,030 sẽ sử dụng JavaScript để xử lý các phản ứng. 1985 01:29:10,030 --> 01:29:14,970 Và JavaScript hoạt động rất tốt vì nó được gọi là JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Phải không? 1987 01:29:15,470 --> 01:29:19,660 Vì vậy, ông chỉ có thể gọi một chức năng và nhận được đối tượng này tốt đẹp từ các phản ứng. 1988 01:29:19,660 --> 01:29:22,890 Và sau đó, anh ta sẽ biết liệu người sử dụng đó là trong cơ sở dữ liệu hay không. 1989 01:29:22,890 --> 01:29:25,230 >> Vì vậy, bạn thấy, tất cả của nó xuất cùng nhau trong các máy chủ web, 1990 01:29:25,230 --> 01:29:28,450 và sau đó có một yêu cầu HTTP và một phản ứng HTTP và tất cả mọi thứ. 1991 01:29:28,450 --> 01:29:30,600 Vì vậy, chắc chắn các bạn hiểu cuộc gọi AJAX này 1992 01:29:30,600 --> 01:29:37,260 bởi vì nó sẽ giúp bạn hiểu tất cả của khái niệm mà chúng ta đang nói về. 1993 01:29:37,260 --> 01:29:40,260 >> Vì vậy, đây là một ví dụ AJAX với jQuery. 1994 01:29:40,260 --> 01:29:42,130 Và ở đây, chúng tôi làm với get JSON. 1995 01:29:42,130 --> 01:29:45,660 Vì vậy, chúng tôi không cố gắng để có được một hình ảnh của một con mèo ở đây, hoặc một con vịt. 1996 01:29:45,660 --> 01:29:48,110 Chúng tôi đang cố gắng để có được một tập tin JSON. 1997 01:29:48,110 --> 01:29:51,184 Và sau đó chúng tôi chờ đợi cho đến khi nó được thực hiện, dot thực hiện. 1998 01:29:51,184 --> 01:29:52,850 Điều đó có nghĩa là tôi đang chờ đợi sự đáp lại. 1999 01:29:52,850 --> 01:29:54,180 Nó có thể mất một thời gian ngắn. 2000 01:29:54,180 --> 01:29:56,360 Sau đó, bạn sẽ thấy một chút bốc. 2001 01:29:56,360 --> 01:29:59,340 Nếu bạn muốn làm điều đó trong trang web của bạn. 2002 01:29:59,340 --> 01:30:01,440 Vì vậy, dot thực hiện, và những gì xảy ra khi nó được thực hiện? 2003 01:30:01,440 --> 01:30:04,040 Bạn vượt qua trong một ẩn danh chức năng, giống như chúng ta đã thấy trước đây. 2004 01:30:04,040 --> 01:30:07,800 Bởi vì thực hiện là một sự kiện, chỉ như cách nhấp chuột hay bất cứ điều gì, 2005 01:30:07,800 --> 01:30:08,710 cho jQuery. 2006 01:30:08,710 --> 01:30:13,710 Vì vậy, bạn vượt qua trong chức năng này với dữ liệu, văn bản, trạng thái, và jqXHR. 2007 01:30:13,710 --> 01:30:15,790 Và về cơ bản, đó là chỉ số biến 2008 01:30:15,790 --> 01:30:22,160 mà bạn có thể sử dụng sau này để có trạng thái của yêu cầu HTTP, 2009 01:30:22,160 --> 01:30:24,470 các dữ liệu mà nó sẽ để gửi lại cho bạn. 2010 01:30:24,470 --> 01:30:28,740 Vì vậy, sau đó bạn có thể sau này giải thích nó và làm điều gì đó có ý nghĩa với nó. 2011 01:30:28,740 --> 01:30:30,240 Và nếu nó không thành công, khi nó có thể thất bại? 2012 01:30:30,240 --> 01:30:33,780 Vâng, khi yêu cầu HTTP cho bạn một 500 hoặc một cái gì đó như thế. 2013 01:30:33,780 --> 01:30:37,420 Sau đó, nó sẽ cho bạn biết trạng thái, loại thất bại đó là, 2014 01:30:37,420 --> 01:30:38,420 và tất cả các loại của sự vật. 2015 01:30:38,420 --> 01:30:40,630 Bạn phải chắc chắn để xử lý cả hai trường hợp, 2016 01:30:40,630 --> 01:30:42,770 nếu không chương trình đi điên. 2017 01:30:42,770 --> 01:30:45,820 >> Davin: Vì vậy, yeah, đây là chính xác những gì bạn thấy trên cuối cùng p-thiết lập của bạn. 2018 01:30:45,820 --> 01:30:49,720 Các cuộc gọi AJAX thực tế là trong JSON get. 2019 01:30:49,720 --> 01:30:50,587 Đó là cuộc gọi. 2020 01:30:50,587 --> 01:30:52,920 Và sau đó, dot thực hiện giống như nó kiểm tra nếu nó thành công. 2021 01:30:52,920 --> 01:30:55,620 Nếu thành công, bạn muốn để làm điều gì đó với dữ liệu. 2022 01:30:55,620 --> 01:30:59,290 Bạn nhận được trở lại từ đó JSON yêu cầu dữ liệu. 2023 01:30:59,290 --> 01:31:00,600 Đó là những gì bạn nhận lại. 2024 01:31:00,600 --> 01:31:04,470 Vì vậy, nếu bạn nhớ từ p-thiết lập của bạn, rất nhiều bạn như khung dữ liệu i 2025 01:31:04,470 --> 01:31:06,302 hoặc bất cứ điều gì, dot link hoặc tiêu đề. 2026 01:31:06,302 --> 01:31:08,260 Cái đang trở lại từ đó JSON, bất cứ điều gì 2027 01:31:08,260 --> 01:31:11,020 các lĩnh vực trong đó đối tượng JSON, đó là những gì bạn đang nhận lại. 2028 01:31:11,020 --> 01:31:12,394 Dữ liệu là những gì bạn đang nhận lại. 2029 01:31:12,394 --> 01:31:15,510 Tình trạng văn bản, chỉ cần một cái gì đó cho phép bạn biết những gì đã xảy ra. 2030 01:31:15,510 --> 01:31:20,570 Và sau đó, các jqXHR, đó chỉ là jQuery yêu cầu XML HTTP. 2031 01:31:20,570 --> 01:31:21,990 Đó chỉ như một đối tượng. 2032 01:31:21,990 --> 01:31:23,932 Và sau đó thất bại, giống như Gabe nói. 2033 01:31:23,932 --> 01:31:27,140 Gabe: Trong ví dụ nhỏ của chúng tôi abc123 chỉ để kiểm tra xem đó là trong cơ sở dữ liệu 2034 01:31:27,140 --> 01:31:32,260 hay không, các dữ liệu sẽ là một cái gì đó bạn sẽ làm gì, nếu tên người sử dụng dữ liệu dot tồn tại, 2035 01:31:32,260 --> 01:31:37,720 đó là những gì bạn tạo ra cho PHP bạn, nếu tên dữ liệu chấm dùng tồn tại, sau đó 2036 01:31:37,720 --> 01:31:40,880 Tôi sẽ cảnh báo, người dùng tên đã tồn tại. 2037 01:31:40,880 --> 01:31:44,300 Khác, tôi chỉ cần đi để cho người sử dụng tiến hành điền vào mẫu. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, an ninh, thoáng mát. 2040 01:31:50,820 --> 01:31:52,060 >> Davin: Muốn tôi? 2041 01:31:52,060 --> 01:31:54,500 >> Gabe: Tôi thích cái này. 2042 01:31:54,500 --> 01:31:57,680 Vì vậy, cái gì đó trông quen thuộc. 2043 01:31:57,680 --> 01:31:59,750 Chúng tôi đã gần hoàn tất. 2044 01:31:59,750 --> 01:32:02,670 Vì vậy, đây chỉ là ví dụ các bạn đã thấy trong lớp. 2045 01:32:02,670 --> 01:32:04,860 Bạn đã sử dụng argv1 đây. 2046 01:32:04,860 --> 01:32:06,460 Điều đó giống như một đối số dòng lệnh. 2047 01:32:06,460 --> 01:32:09,270 Và chúng tôi đang sao chép mà mem vào một bộ đệm có kích thước 12. 2048 01:32:09,270 --> 01:32:12,560 Vấn đề ở đây là gì? 2049 01:32:12,560 --> 01:32:13,660 Buffer overflow! 2050 01:32:13,660 --> 01:32:15,400 Bởi vì chúng tôi có một bộ đệm có kích thước 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 có thể có một kích thước của hai tỷ USD. 2052 01:32:18,400 --> 01:32:19,960 Chúng tôi không làm bất kỳ việc kiểm tra biên giới. 2053 01:32:19,960 --> 01:32:24,970 Vì vậy, chúng ta có thể sao chép rất nhiều bộ nhớ. 2054 01:32:24,970 --> 01:32:28,630 Và chúng tôi sẽ đặc biệt xấu về việc này. 2055 01:32:28,630 --> 01:32:32,600 Những gì chúng ta có thể làm đó là rất, rất có ý nghĩa trong trường hợp này? 2056 01:32:32,600 --> 01:32:33,278 Có? 2057 01:32:33,278 --> 01:32:36,528 Đung Một phần của hai tỉ thứ chứa mã thực thi mà trả 2058 01:32:36,528 --> 01:32:38,127 [Không nghe thấy]. 2059 01:32:38,127 --> 01:32:38,710 Gabe: Chính xác. 2060 01:32:38,710 --> 01:32:41,110 Vì vậy, đó là các loại điều mà mọi người sử dụng 2061 01:32:41,110 --> 01:32:43,344 để jailbreak iPhone, ví dụ. 2062 01:32:43,344 --> 01:32:44,260 Vì vậy, đó là điều mà. 2063 01:32:44,260 --> 01:32:48,610 Bởi vì bạn chỉ có thể làm cho thiết bị thực thi bất kỳ mã mà bạn thích. 2064 01:32:48,610 --> 01:32:50,247 Việc sửa chữa, vì vậy việc sửa chữa rất dễ dàng. 2065 01:32:50,247 --> 01:32:51,330 Chỉ cần kiểm tra đối với các giới hạn. 2066 01:32:51,330 --> 01:32:53,455 Bạn kiểm tra null vì chúng tôi luôn luôn kiểm tra cho null 2067 01:32:53,455 --> 01:32:54,940 khi chúng tôi đang làm việc với chuỗi. 2068 01:32:54,940 --> 01:32:57,840 Và sau đó, bạn nên tận dụng chiều dài chuỗi trước. 2069 01:32:57,840 --> 01:33:00,150 Và nếu chuỗi chiều dài là một chuỗi hợp lệ 2070 01:33:00,150 --> 01:33:03,700 chiều dài, đó là trong vòng 0 và 12, sau đó chúng tôi đang tốt. 2071 01:33:03,700 --> 01:33:07,144 >> Davin: Nếu bạn không kiểm tra null, thực sự nhanh chóng, những gì sẽ xảy ra? 2072 01:33:07,144 --> 01:33:07,810 Nó sẽ seg lỗi. 2073 01:33:07,810 --> 01:33:10,850 Tại sao nó seg lỗi? 2074 01:33:10,850 --> 01:33:12,510 Bởi vì bạn đang gọi điện thoại strlen về null. 2075 01:33:12,510 --> 01:33:13,010 Gabe: Yeah. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Đúng hay sai, sử dụng một mật khẩu là một ý tưởng tốt. 2078 01:33:19,630 --> 01:33:20,430 >> Đung False. 2079 01:33:20,430 --> 01:33:21,150 >> Gabe: False. 2080 01:33:21,150 --> 01:33:23,870 Sử dụng nhiều mật khẩu, và, những người lâu lớn. 2081 01:33:23,870 --> 01:33:26,050 Biểu tượng khóa móc đảm bảo an ninh. 2082 01:33:26,050 --> 01:33:27,080 >> Đung False. 2083 01:33:27,080 --> 01:33:27,749 >> Gabe: False. 2084 01:33:27,749 --> 01:33:28,790 Nó không có nghĩa là bất cứ điều gì. 2085 01:33:28,790 --> 01:33:30,480 Nó chỉ là một biểu tượng. 2086 01:33:30,480 --> 01:33:32,824 SSL bảo vệ chống lại một người đàn ông trong cuộc tấn công trung. 2087 01:33:32,824 --> 01:33:33,490 Đung False. 2088 01:33:33,490 --> 01:33:34,110 Gabe: False. 2089 01:33:34,110 --> 01:33:35,355 OK, vì vậy tất cả những người này là sai. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nice. 2092 01:33:39,490 --> 01:33:40,220 [Không nghe thấy] 2093 01:33:40,220 --> 01:33:42,500 Muốn nói về điều này? 2094 01:33:42,500 --> 01:33:43,259 Đến lượt bạn. 2095 01:33:43,259 --> 01:33:45,050 Davin: Các loại tấn công, người đàn ông ở giữa. 2096 01:33:45,050 --> 01:33:47,134 Một người đàn ông trong cuộc tấn công trung là gì? 2097 01:33:47,134 --> 01:33:48,050 Đung [không nghe được]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 Davin: Nếu bạn gửi một HTTP yêu cầu, họ có thể làm được điều này, phải không? 2100 01:33:54,020 --> 01:33:57,890 Nhưng nếu bạn đang gửi HTTPS, họ có lẽ sẽ không thể làm được điều này. 2101 01:33:57,890 --> 01:33:59,952 Có rất nhiều điểm cùng kết nối của bạn. 2102 01:33:59,952 --> 01:34:00,660 Bạn có router. 2103 01:34:00,660 --> 01:34:01,746 Bạn có máy chủ DNS. 2104 01:34:01,746 --> 01:34:04,120 Nếu ai đó có thể thể chất xem những gì bạn đang gửi, 2105 01:34:04,120 --> 01:34:06,140 vậy ai đó có thể thực sự có được từ bạn, 2106 01:34:06,140 --> 01:34:08,840 khách hàng, và các máy chủ, và là có thể nhìn thấy những gì bạn đang gửi, 2107 01:34:08,840 --> 01:34:10,298 đây là một người đàn ông trong cuộc tấn công trung. 2108 01:34:10,298 --> 01:34:14,287 Vì vậy, để xem những gì bạn đang cố gắng để có được từ các máy chủ, hoặc là có thể see-- tồi tệ hơn, 2109 01:34:14,287 --> 01:34:16,620 bạn có thể có thể nhìn thấy cookie hay một cái gì đó như thế. 2110 01:34:16,620 --> 01:34:19,290 >> Vì vậy, ví dụ, nếu bạn không sử dụng SSL, ông 2111 01:34:19,290 --> 01:34:21,900 có thể có thể nhìn thấy ID phiên của bạn cookie. 2112 01:34:21,900 --> 01:34:25,460 Và điều này được gọi là việc cướp quyền vì anh thấy ID cookie, 2113 01:34:25,460 --> 01:34:28,317 và sau đó anh ta có thể đi đến đó website và giả vờ là bạn. 2114 01:34:28,317 --> 01:34:31,150 Bởi vì chỉ thích trong PHP, nhớ khi chúng ta đăng nhập, chúng ta làm gì? 2115 01:34:31,150 --> 01:34:33,340 Chúng tôi thiết lập session ID bằng ID. 2116 01:34:33,340 --> 01:34:34,810 Vì vậy, nhận dạng bạn. 2117 01:34:34,810 --> 01:34:38,300 Đó là lý do tại sao bạn có thể xem danh mục đầu tư của bạn và danh mục đầu tư không phải ai khác. 2118 01:34:38,300 --> 01:34:42,320 >> Vâng, nếu tôi có thể có được cookie, sau đó tôi có thể đăng nhập vào trang đó. 2119 01:34:42,320 --> 01:34:45,380 Và sau đó, tôi chỉ có thể nhìn thấy công cụ của bạn và bắt đầu mua và bán công cụ. 2120 01:34:45,380 --> 01:34:46,800 Vì vậy, đó là việc cướp quyền. 2121 01:34:46,800 --> 01:34:50,810 Nhưng bạn không phải nhằm để bạn có thể có thể sử dụng những người đàn ông trong cuộc tấn công trung 2122 01:34:50,810 --> 01:34:52,290 ngay cả khi họ đang sử dụng SSL. 2123 01:34:52,290 --> 01:34:53,520 Nhưng bạn không nên có khả năng. 2124 01:34:53,520 --> 01:34:56,580 Nếu họ đang sử dụng SSL, Bạn không thể phiên cướp. 2125 01:34:56,580 --> 01:34:58,927 Tại sao? 2126 01:34:58,927 --> 01:35:01,135 Bởi vì nó là tất cả mã hóa, phải không? nếu nó được mã hóa, 2127 01:35:01,135 --> 01:35:03,509 và tôi vẫn là một người đàn ông trong trung học, tôi vẫn nhận được dữ liệu của bạn. 2128 01:35:03,509 --> 01:35:04,279 Đó là tốt. 2129 01:35:04,279 --> 01:35:05,070 Nhưng nó được mã hóa. 2130 01:35:05,070 --> 01:35:07,750 Vì vậy, tôi có thể không thực sự sử dụng nó. 2131 01:35:07,750 --> 01:35:09,840 Vì vậy, đó là hai. 2132 01:35:09,840 --> 01:35:11,544 >> Bất động nhanh chóng, qua trang web giả mạo yêu cầu. 2133 01:35:11,544 --> 01:35:13,960 Đó chỉ là nếu có một liên kết và liên kết mà làm điều gì đó 2134 01:35:13,960 --> 01:35:14,890 rằng bạn không nghĩ rằng nó nên làm. 2135 01:35:14,890 --> 01:35:18,150 Vì vậy, ví dụ, nếu liên kết được sẽ mua cổ phiếu hoặc bán cổ phiếu, 2136 01:35:18,150 --> 01:35:19,360 và bạn không biết điều đó. 2137 01:35:19,360 --> 01:35:22,040 Bạn nhấp vào liên kết, đã gửi một yêu cầu, mua 2138 01:35:22,040 --> 01:35:24,240 hoặc bán cái gì đó bạn không có nghĩa là để làm. 2139 01:35:24,240 --> 01:35:25,120 Đó là điều đó. 2140 01:35:25,120 --> 01:35:30,720 >> Kịch bản chéo trang web, vì vậy ở đây, bạn đang đi qua trong qua biến q, 2141 01:35:30,720 --> 01:35:33,510 thay vì đi qua trong một số loại giá trị, có lẽ q là giống như một tên. 2142 01:35:33,510 --> 01:35:36,560 Vì vậy, thay vì đi qua q equals Davin hoặc một cái gì đó như thế, 2143 01:35:36,560 --> 01:35:38,740 nếu bạn không sử dụng HTML ký tự đặc biệt, nếu bạn 2144 01:35:38,740 --> 01:35:43,100 không thoát khỏi này để chắc chắn rằng nó OK, sau đó tôi có thể vượt qua trong thay vào đó, 2145 01:35:43,100 --> 01:35:46,910 hãy nói rằng ở đây tôi đang nói in hoặc một cái gì đó như thế, 2146 01:35:46,910 --> 01:35:51,070 sau đó tôi có thể vượt qua trong một cuộc gọi ở đây kịch bản. 2147 01:35:51,070 --> 01:35:53,140 >> Vì vậy, sau đó, thay vì chỉ nhận được một biến, 2148 01:35:53,140 --> 01:35:54,960 Sau đó tôi sẽ thực hiện các cuộc gọi kịch bản này. 2149 01:35:54,960 --> 01:35:57,065 Vì vậy, bên trong kịch bản mà gọi, nó làm gì? 2150 01:35:57,065 --> 01:36:00,190 Tài liệu dot vị trí, đó là sẽ thay đổi vị trí của các tài liệu. 2151 01:36:00,190 --> 01:36:02,290 Vì vậy, tôi sẽ chuyển hướng đến một nơi khác. 2152 01:36:02,290 --> 01:36:08,170 Nó được gọi là anh chàng xấu trong ví dụ này, rất tốt. 2153 01:36:08,170 --> 01:36:10,536 Không thể nghĩ đến chữ. 2154 01:36:10,536 --> 01:36:12,410 Và sau đó, những gì thậm chí Tệ hơn nữa là tôi sẽ 2155 01:36:12,410 --> 01:36:16,832 để sau đó thiết lập cookie, mà là một số biến tôi có trong trang web này. 2156 01:36:16,832 --> 01:36:19,040 Tôi sẽ đặt nó bằng vào tài liệu dot cookie. 2157 01:36:19,040 --> 01:36:20,660 Vì vậy, tôi sẽ để ăn cắp cookie của bạn. 2158 01:36:20,660 --> 01:36:22,951 Và tôi sẽ chuyển hướng một số thông tin cho một trang web 2159 01:36:22,951 --> 01:36:25,120 mà bạn không nên truy cập. 2160 01:36:25,120 --> 01:36:29,250 Và tất cả điều này xảy ra bởi vì bạn không thoát ra những gì bạn đã thấy. 2161 01:36:29,250 --> 01:36:29,910 Yeah? 2162 01:36:29,910 --> 01:36:32,160 >> Đung vậy chỉ cần làm cho rõ ràng, đó là 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com đó là dễ bị tổn thương này. 2164 01:36:37,550 --> 01:36:39,300 Vì vậy, liên kết mà có thể xuất hiện trên bất kỳ trang web nào. 2165 01:36:39,300 --> 01:36:42,200 Ai đó nhấp chuột vào nó, đi vào vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Bạn có một cookie để vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Hãy nói rằng Facebook là dễ bị tổn thương, vì vậy facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Bạn có Cookie Facebook của bạn. 2169 01:36:48,310 --> 01:36:50,925 Điều này đang làm, bạn sẽ facebook.com, 2170 01:36:50,925 --> 01:36:53,990 nó ngay lập tức chuyển hướng bạn badguy.com, 2171 01:36:53,990 --> 01:36:57,182 nhưng bao gồm cả thông tin cookie của bạn. 2172 01:36:57,182 --> 01:36:59,310 Vì vậy, nó là một chuyển hướng nhanh chóng, nhưng Cookie Facebook của bạn 2173 01:36:59,310 --> 01:37:02,572 được bao gồm với chuyển hướng đó, và đó là cách họ [không nghe được]. 2174 01:37:02,572 --> 01:37:04,280 Gabe: Yeah, có một số điều rất bình 2175 01:37:04,280 --> 01:37:06,070 mọi người có thể làm gì nếu có này. 2176 01:37:06,070 --> 01:37:09,190 Ví dụ, nếu Facebook cho phép tất cả mọi người để thay đổi tên người dùng của bạn, 2177 01:37:09,190 --> 01:37:11,680 và họ đã không làm bất kỳ kiểm tra sự tỉnh táo, vì vậy bạn 2178 01:37:11,680 --> 01:37:16,810 có thể chèn một điều rằng JavaScript thay đổi hình ảnh của bạn vào một hamster. 2179 01:37:16,810 --> 01:37:22,590 Và đó chèn cùng JavaScript vào tất cả mọi người đã xem trang của bạn. 2180 01:37:22,590 --> 01:37:26,400 Vì vậy, tất cả mọi người đã xem trang của bạn có những điều tương tự trong tên người dùng. 2181 01:37:26,400 --> 01:37:30,104 Và bởi vì nó là một virus, nó lây lan theo cấp số nhân. 2182 01:37:30,104 --> 01:37:32,270 Davin: Chúng tôi sẽ bỏ qua cuối cùng một, và sau đó chúng tôi đang thực hiện. 2183 01:37:32,270 --> 01:37:34,120 Vì vậy, đây chỉ là một ví dụ khác. 2184 01:37:34,120 --> 01:37:36,120 Vì vậy, đây là họ không thoát bảng SQL của họ. 2185 01:37:36,120 --> 01:37:37,090 Vì vậy, bạn có thể thả nó. 2186 01:37:37,090 --> 01:37:38,805 Vì vậy, bạn muốn thoát ra khỏi mọi thứ. 2187 01:37:38,805 --> 01:37:44,010 Đó là ví dụ trước với các ứng dụng web. 2188 01:37:44,010 --> 01:37:45,430 Xin lỗi, chúng tôi chạy một chút muộn. 2189 01:37:45,430 --> 01:37:46,870 Ngày mai, xin lỗi! 2190 01:37:46,870 --> 01:37:48,560 Ngày mai, chúng tôi có giờ làm việc. 2191 01:37:48,560 --> 01:37:50,870 Vì vậy, giờ làm việc trong Cabbot 8:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 Giờ làm việc là đúng cho câu đố. 2193 01:37:55,240 --> 01:37:56,587