1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> R.J. Aquino: Chúng ta hãy bắt đầu. 3 00:00:10,430 --> 00:00:12,310 Vì vậy, đây là đố 1. 4 00:00:12,310 --> 00:00:14,890 Dưới đây là một số thông tin cấp cao. 5 00:00:14,890 --> 00:00:19,915 Trang Giới thiệu cho các bài kiểm tra là lúc này URL, không còn CS50.net, mặc dù đó 6 00:00:19,915 --> 00:00:21,080 sẽ vẫn làm việc. 7 00:00:21,080 --> 00:00:26,920 Nó CS50.harvard.edu/quizzes/2013/1. 8 00:00:26,920 --> 00:00:31,070 Đó là lớn Về trang, nói cho bạn ở đâu và khi nào, cụ thể là thứ tư tới 9 00:00:31,070 --> 00:00:32,100 trong một loạt các phòng. 10 00:00:32,100 --> 00:00:36,120 Và thứ tư tới, tôi có nghĩa là hai ngày, kể từ bây giờ. 11 00:00:36,120 --> 00:00:37,890 Tất cả các thông tin này là có. 12 00:00:37,890 --> 00:00:39,110 Nhưng nó là tích lũy. 13 00:00:39,110 --> 00:00:43,790 >> Vì vậy, tất cả mọi thứ từ nửa đầu năm là có khả năng trên các bài kiểm tra, 14 00:00:43,790 --> 00:00:50,780 bởi vì bạn có thể không thực sự làm tiên tiến mọi thứ trong C không nếu có điều kiện và 15 00:00:50,780 --> 00:00:51,920 cho các vòng và các loại tương tự. 16 00:00:51,920 --> 00:00:55,580 Nhưng sẽ có một sự nhấn mạnh vào vật liệu che phủ từ quiz 0, 17 00:00:55,580 --> 00:00:59,570 bắt đầu với cấu trúc và các tập tin I / O. Nó thường hơn 18 00:00:59,570 --> 00:01:01,620 Câu đố đầy thách thức hơn 0. 19 00:01:01,620 --> 00:01:03,870 Điểm số trung bình thường thấp. 20 00:01:03,870 --> 00:01:05,980 Học tập chăm chỉ. 21 00:01:05,980 --> 00:01:09,340 >> Trong khi bạn đang học, hãy sử dụng CS50/discuss để gửi câu hỏi của bạn 22 00:01:09,340 --> 00:01:10,830 và đọc những câu hỏi của người khác. 23 00:01:10,830 --> 00:01:13,550 Vì vậy, nếu bạn không có bất kỳ câu hỏi, đăng nhập và đọc 24 00:01:13,550 --> 00:01:14,580 câu hỏi của bạn bè. 25 00:01:14,580 --> 00:01:16,560 Họ đang có lẽ câu hỏi tốt. 26 00:01:16,560 --> 00:01:17,730 Và có những câu đố thực hành. 27 00:01:17,730 --> 00:01:20,750 Chúng tôi đã đưa ra câu đố cho bảy hay tám năm nay. 28 00:01:20,750 --> 00:01:22,180 Tất cả chúng trực tuyến. 29 00:01:22,180 --> 00:01:25,540 Câu hỏi tương lai tương tự các câu hỏi cũ. 30 00:01:25,540 --> 00:01:26,550 Đó là cách chúng tôi làm cho họ. 31 00:01:26,550 --> 00:01:27,740 >> Các bài kiểm tra không tồn tại được nêu ra. 32 00:01:27,740 --> 00:01:28,670 Không ai trong số chúng ta đã nhìn thấy nó. 33 00:01:28,670 --> 00:01:32,496 Nhưng nó sẽ giống như câu đố trước. 34 00:01:32,496 --> 00:01:36,500 Cho phiên xét này, đây không phải là một danh sách dài các chủ đề. 35 00:01:36,500 --> 00:01:40,740 Bạn không thể chỉ tham dự này và sau đó được hoàn toàn sẵn sàng cho bài kiểm tra. 36 00:01:40,740 --> 00:01:43,330 Nếu không, nó sẽ không được rằng có rất nhiều bài kiểm tra. 37 00:01:43,330 --> 00:01:46,270 Và điều này cũng không nhất thiết phải tất cả mọi thứ bạn cần biết về bất kỳ 38 00:01:46,270 --> 00:01:46,970 cho chủ đề. 39 00:01:46,970 --> 00:01:50,520 Nó có nghĩa là đặt bạn vào những điều chúng tôi đã được bảo hiểm, nhắc nhở bạn những gì chúng ta 40 00:01:50,520 --> 00:01:53,070 bảo hiểm, và cách thức mà chúng bao phủ nó. 41 00:01:53,070 --> 00:01:57,030 Nhưng bạn sẽ phải đi xa hơn và sâu hơn khi bạn học để kiểm tra lại 42 00:01:57,030 --> 00:02:00,230 mà bạn biết mọi thứ về bất kỳ cho chủ đề và bạn đã điền vào 43 00:02:00,230 --> 00:02:03,320 tất cả các góc đã được được đề cập trong bài giảng. 44 00:02:03,320 --> 00:02:07,980 >> Các ghi chú bài kiểm tra cho bạn biết để đi đến ghi chú ghi chép, xem bài giảng video. 45 00:02:07,980 --> 00:02:10,155 Đó là một cách tốt để chắc chắn rằng bạn đã bao gồm tất cả các căn cứ của bạn. 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 Vì vậy, khi bắt đầu, khi tôi thực hiện các trình bày, tôi đã cố gắng để đặt nơi tôi tìm thấy 48 00:02:17,340 --> 00:02:18,350 thông tin. 49 00:02:18,350 --> 00:02:22,890 Vì vậy, cho File I / O, ví dụ, Tuần 7, Bài giảng của Thứ hai, và đăng 50 00:02:22,890 --> 00:02:27,960 Phần 6 và vấn đề Set tất cả đều có thông tin về File I / O. Tôi đã thực hiện 51 00:02:27,960 --> 00:02:28,840 điều này cho mỗi chủ đề. 52 00:02:28,840 --> 00:02:33,010 Vì vậy, những tiêu đề chuyển động có thể hữu ích cho bạn. 53 00:02:33,010 --> 00:02:38,950 >> Vì vậy, ở đây chúng tôi có File I / O. Hãy nhớ rằng, trong Đặt vấn đề 5, chúng tôi sử dụng fopen, fclose, 54 00:02:38,950 --> 00:02:41,210 fwrite, fread, và fseek. 55 00:02:41,210 --> 00:02:48,090 Bị thu hồi 30ish JPEG và khi thay đổi kích thước và sai lầm với 56 00:02:48,090 --> 00:02:50,320 ảnh, bạn nên được khá quen thuộc với các chức năng 57 00:02:50,320 --> 00:02:51,830 và làm thế nào họ làm việc. 58 00:02:51,830 --> 00:02:54,420 Nếu bạn không còn quen thuộc, chắc chắn xem xét lại. 59 00:02:54,420 --> 00:02:56,860 Và chắc chắn rằng bạn hiểu những gì các đối số khác nhau, 60 00:02:56,860 --> 00:02:58,260 khi họ đang sử dụng. 61 00:02:58,260 --> 00:03:03,620 >> Nhưng các lỗi liên quan đến file phổ biến bạn có thể được yêu cầu về - 62 00:03:03,620 --> 00:03:07,270 tốt, nếu bạn đã quên để kiểm tra xem fopen thực sự làm việc trước khi đi 63 00:03:07,270 --> 00:03:08,350 sửa đổi một tập tin. 64 00:03:08,350 --> 00:03:09,760 Đó có thể là xấu. 65 00:03:09,760 --> 00:03:13,560 Nếu bạn đã quên fclose một tập tin mà bạn đã fopened, đó là tương tự như 66 00:03:13,560 --> 00:03:14,400 rò rỉ bộ nhớ. 67 00:03:14,400 --> 00:03:15,980 Đó là khá xấu. 68 00:03:15,980 --> 00:03:18,670 Và quên để kiểm tra xem bạn đã đạt đến kết thúc của tập tin trước khi bạn 69 00:03:18,670 --> 00:03:19,790 bắt đầu viết cho nó. 70 00:03:19,790 --> 00:03:22,320 >> Vì vậy, nếu bạn nói, hey, tôi đang ở cuối của tập tin. 71 00:03:22,320 --> 00:03:23,750 Cho tôi hơn 5 byte. 72 00:03:23,750 --> 00:03:27,370 Vâng, đó là lẽ sẽ không làm việc ra theo cách bạn mong đợi. 73 00:03:27,370 --> 00:03:30,930 Đó là thực sự nó cho File I / O, bởi vì chúng tôi đã làm rất nhiều của nó 74 00:03:30,930 --> 00:03:32,300 với các vấn đề thiết lập. 75 00:03:32,300 --> 00:03:36,000 Vì vậy, nếu bạn hiểu những gì đang xảy ra trong vấn đề Set 5, nhớ bitmats 76 00:03:36,000 --> 00:03:40,090 và hình ảnh JPEG, sau đó bạn có lẽ tất cả thiết lập cho tập tin I / O. Nếu đó là một chút 77 00:03:40,090 --> 00:03:44,770 mờ, chắc chắn xem xét vấn đề đó thiết lập và các tài liệu liên quan. 78 00:03:44,770 --> 00:03:51,110 >> Cấu trúc là những chủ đề đã được trên ranh giới giữa 0 và Câu đố Câu đố 1. 79 00:03:51,110 --> 00:03:53,090 Không hoàn toàn làm cho việc cắt giảm cho quiz 0. 80 00:03:53,090 --> 00:03:57,040 Vì vậy, họ chắc chắn sẽ được trên Bài kiểm tra 1, Tuần 7, thứ Hai. 81 00:03:57,040 --> 00:03:58,150 Một cấu trúc là gì? 82 00:03:58,150 --> 00:04:00,250 Ở đây chúng ta thấy một cấu trúc. 83 00:04:00,250 --> 00:04:03,140 Nó giống như một loại mới. 84 00:04:03,140 --> 00:04:07,940 Nó giống như một container cho nhiều lĩnh vực. 85 00:04:07,940 --> 00:04:12,970 >> Trong trường hợp này, chúng tôi đã tuyên bố một cấu trúc sinh viên có hai lĩnh vực - 86 00:04:12,970 --> 00:04:17,750 một chuỗi mà chúng ta đang gọi tên và một int mà chúng ta đang kêu gọi tuổi. 87 00:04:17,750 --> 00:04:21,450 Vì vậy, khi tôi vượt qua xung quanh sinh viên hoặc tôi sửa đổi sinh viên, tôi sẽ có thể 88 00:04:21,450 --> 00:04:24,430 truy cập tên của họ và tuổi tác của họ. 89 00:04:24,430 --> 00:04:26,670 Hãy nhìn vào một số mã cho điều đó. 90 00:04:26,670 --> 00:04:29,090 Ở đây chúng tôi thấy rằng tôi đã tuyên bố một sinh viên s, giống như 91 00:04:29,090 --> 00:04:30,300 Tôi tuyên bố bất kỳ biến - 92 00:04:30,300 --> 00:04:32,430 int x, int y, vân vân. 93 00:04:32,430 --> 00:04:34,180 >> Đây là sinh viên s. 94 00:04:34,180 --> 00:04:37,370 Ông bắt đầu với không có gì trong các lĩnh vực của mình. 95 00:04:37,370 --> 00:04:38,240 Vì vậy, hãy để họ ra đi. 96 00:04:38,240 --> 00:04:40,681 Bạn thiết lập các lĩnh vực của một cấu trúc với dấu chấm. 97 00:04:40,681 --> 00:04:43,780 Vì vậy, tôi đã nói ở đây là s.name = RJ. 98 00:04:43,780 --> 00:04:46,470 Và s.age = 21. 99 00:04:46,470 --> 00:04:48,500 Bạn cũng có thể cập nhật các lĩnh vực giống như cách bạn muốn cập nhật 100 00:04:48,500 --> 00:04:49,550 giá trị của một biến. 101 00:04:49,550 --> 00:04:53,270 Vì vậy, tôi muốn thay đổi tên của tôi từ RJ với không có thời gian để R.J. đánh vần 102 00:04:53,270 --> 00:04:54,540 cách chính xác. 103 00:04:54,540 --> 00:04:58,890 Nó sẽ được s.name = RJ, cùng như chúng tôi đã nói ban đầu nó. 104 00:04:58,890 --> 00:05:00,030 Và sau đó bạn có thể truy cập chúng. 105 00:05:00,030 --> 00:05:00,930 >> Vì vậy, chúng tôi đã thiết lập chúng. 106 00:05:00,930 --> 00:05:01,840 Chúng tôi đã cập nhật chúng. 107 00:05:01,840 --> 00:05:03,890 Bạn cũng có thể truy cập chúng theo cách rất giống nhau. 108 00:05:03,890 --> 00:05:09,330 Vì vậy, ở đây, tôi in ra R.J. Là 21 tuổi. 109 00:05:09,330 --> 00:05:14,700 Và tôi truy cập vào những giá trị với s.name và s.age. 110 00:05:14,700 --> 00:05:17,040 Vì vậy, đó là truy cập vào cấu trúc với ký hiệu dấu chấm. 111 00:05:17,040 --> 00:05:17,850 Vâng, đặt câu hỏi? 112 00:05:17,850 --> 00:05:21,176 >> ĐỐI TƯỢNG: Có một lý do trên slide trước đó bạn đã không đặt 113 00:05:21,176 --> 00:05:24,848 sinh viên trên dòng đầu, như typedef sinh viên cấu trúc và sau đó 114 00:05:24,848 --> 00:05:25,840 sinh viên ở cuối? 115 00:05:25,840 --> 00:05:29,040 >> R.J. Aquino: Vì vậy, câu hỏi là, trên slide này, chúng tôi đã thường thấy 116 00:05:29,040 --> 00:05:32,400 typedef struct node và sau đó lĩnh vực cấu trúc và 117 00:05:32,400 --> 00:05:34,250 sau đó các nút từ. 118 00:05:34,250 --> 00:05:37,790 Và làm thế nào đến đây tôi đã không nói, typedef sinh viên cấu trúc và sau đó 119 00:05:37,790 --> 00:05:39,820 lĩnh vực cấu trúc và sau đó sinh viên? 120 00:05:39,820 --> 00:05:44,310 Lý do là tôi không cần phải truy cập vào nó bên trong các cấu trúc. 121 00:05:44,310 --> 00:05:46,270 Vì vậy, nó đồng ý để lại nó mà không có một cái tên. 122 00:05:46,270 --> 00:05:49,210 Tôi chỉ có thể để nó như một cấu trúc vô danh. 123 00:05:49,210 --> 00:05:53,130 >> Lý do chúng tôi làm điều đó cho danh sách liên kết và điều là bởi vì bên trong bạn cần 124 00:05:53,130 --> 00:05:55,360 để tham khảo một ngôi sao nút cấu trúc. 125 00:05:55,360 --> 00:05:58,220 Vì vậy, các cấu trúc phải có tên, vì vậy bạn có thể truy cập nó sau này. 126 00:05:58,220 --> 00:05:59,540 Đó là một chi tiết nhỏ. 127 00:05:59,540 --> 00:06:04,750 Nhưng bạn sẽ thường thấy struct dấu ngoặc nhọn nếu bạn không cần 128 00:06:04,750 --> 00:06:08,720 tên và struct một số tên sau dấu ngoặc nhọn nếu bạn sẽ 129 00:06:08,720 --> 00:06:09,520 cần tên. 130 00:06:09,520 --> 00:06:12,070 Vì vậy, đó là một câu hỏi hay. 131 00:06:12,070 --> 00:06:17,000 >> Và vào thời điểm đó, chúng ta có xu hướng sửa đổi cấu trúc và vượt qua xung quanh cấu trúc của 132 00:06:17,000 --> 00:06:18,680 tham khảo, không phải bởi giá trị. 133 00:06:18,680 --> 00:06:21,940 Vì vậy, chúng ta sẽ vượt qua xung quanh con trỏ đến cấu trúc thay vì đi qua xung quanh 134 00:06:21,940 --> 00:06:23,150 cấu trúc bản thân. 135 00:06:23,150 --> 00:06:28,050 Vì vậy, bạn đang rất thường xuyên sẽ sử dụng, trong trường hợp này, sinh viên * hoặc 136 00:06:28,050 --> 00:06:34,150 struct node * hoặc nút thay vì * ra sinh viên hoặc các nút. 137 00:06:34,150 --> 00:06:39,350 Vì vậy, ở đây, tôi đã nói, OK, biến ptr là có được địa chỉ của s. 138 00:06:39,350 --> 00:06:45,570 Nó sẽ là con trỏ cho học sinh R.J. 139 00:06:45,570 --> 00:06:48,965 >> Vì vậy, chúng ta có thể có được ở các lĩnh vực giống như chúng ta có được bất cứ điều gì. 140 00:06:48,965 --> 00:06:51,460 Đầu tiên, ID tham khảo con trỏ để có được các cấu trúc. 141 00:06:51,460 --> 00:06:55,530 Đó là * ptr và sau đó một dấu chấm và sau đó tuổi. 142 00:06:55,530 --> 00:06:58,790 Vì vậy, để truy cập vào lĩnh vực này, và tôi đã cập nhật nó bây giờ đến 22, bởi vì, chúng ta hãy 143 00:06:58,790 --> 00:07:00,860 nói rằng, đó là sinh nhật của tôi. 144 00:07:00,860 --> 00:07:03,990 Có một cú pháp phím tắt sử dụng mũi tên ở đây. 145 00:07:03,990 --> 00:07:07,060 Tuổi mũi tên để ptr chỉ là giống như * ptr.age. 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 Bây giờ, đó là một cái gì đó bạn sẽ phải để ghi nhớ và nhớ. 148 00:07:11,550 --> 00:07:15,010 >> Bạn sử dụng nó rất nhiều trong pset6, các pset Speller. 149 00:07:15,010 --> 00:07:18,350 Nhưng điều này thực sự là những gì đang xảy ra trên dưới mui xe. 150 00:07:18,350 --> 00:07:20,500 Nó dereferencing con trỏ và sau đó truy cập vào nó. 151 00:07:20,500 --> 00:07:21,432 Câu hỏi? 152 00:07:21,432 --> 00:07:22,682 >> ĐỐI TƯỢNG: [nghe được]. 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> R.J. Aquino: Vì vậy, tại sao chúng ta sử dụng con trỏ như cấu trúc thay vì 155 00:07:28,060 --> 00:07:29,500 cấu trúc chính mình? 156 00:07:29,500 --> 00:07:33,740 Lý do là nếu bạn đang đi qua một cấu trúc cho một chức năng, bạn có thể 157 00:07:33,740 --> 00:07:36,900 muốn vượt qua xung quanh chỉ là 4 hoặc lâu hơn byte đại diện cho con trỏ, như 158 00:07:36,900 --> 00:07:40,375 trái ngược với khả năng 30 40 byte có cấu trúc. 159 00:07:40,375 --> 00:07:44,410 Vì vậy, đi qua một cái gì đó đến một chức năng là dễ dàng hơn khi điều 160 00:07:44,410 --> 00:07:48,230 là nhỏ hơn trong ngắn hạn. 161 00:07:48,230 --> 00:07:49,074 Câu hỏi? 162 00:07:49,074 --> 00:07:53,026 >> ĐỐI TƯỢNG: Bạn có thể đề cập đến điều này trong đầu, nhưng có 163 00:07:53,026 --> 00:07:56,000 slide khác lên trên [nghe được]? 164 00:07:56,000 --> 00:07:58,960 >> R.J. Aquino: Các slide sẽ được sau khi phiên xét. 165 00:07:58,960 --> 00:08:00,210 Chúng tôi sẽ gửi cho họ trên trang web. 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 Vì vậy, di chuyển trên và di chuyển trên một chút nhanh hơn, chúng ta sẽ nói về dữ liệu 168 00:08:06,870 --> 00:08:07,350 cấu trúc. 169 00:08:07,350 --> 00:08:08,040 Có rất nhiều. 170 00:08:08,040 --> 00:08:10,080 Chúng ta đã một bó của họ. 171 00:08:10,080 --> 00:08:12,500 Đây là những gì bạn nên hiểu về cấu trúc dữ liệu. 172 00:08:12,500 --> 00:08:15,590 >> Bạn thực sự cần phải hiểu ở mức cao cấp những gì mỗi cấu trúc là. 173 00:08:15,590 --> 00:08:21,190 Bạn có thể giải thích bằng tiếng Anh để bạn bạn đã không được thực hiện như thế nào CS50 174 00:08:21,190 --> 00:08:25,580 chúng tôi đang tổ chức dữ liệu của chúng tôi và lý do tại sao chúng tôi được sử dụng một cái gì đó theo cách này? 175 00:08:25,580 --> 00:08:26,990 Đó là điều một. 176 00:08:26,990 --> 00:08:29,650 Điều hai, hiểu việc thực hiện. 177 00:08:29,650 --> 00:08:34,270 Vì vậy, hiểu làm thế nào để sử dụng những điều này C. Và chúng tôi sẽ được đi qua này. 178 00:08:34,270 --> 00:08:39,030 >> Và sau đó điều ba sẽ được biết Thời gian chạy và những hạn chế của 179 00:08:39,030 --> 00:08:40,470 cấu trúc khác nhau mà bạn đang sử dụng. 180 00:08:40,470 --> 00:08:44,059 Vì vậy, hiểu tại sao bạn sẽ sử dụng một băm bảng thay vì một mảng. 181 00:08:44,059 --> 00:08:49,570 Hiểu làm thế nào nhanh chóng, trung bình, truy cập vào một bảng băm là. 182 00:08:49,570 --> 00:08:54,010 Hiểu những gì hoạt động được nhanh chóng trên danh sách liên kết nhưng chậm trên mảng và 183 00:08:54,010 --> 00:08:56,080 ngược lại. 184 00:08:56,080 --> 00:08:59,780 Vì vậy, để hiểu rằng, bạn sẽ phải hiểu Big-O ký hiệu chỉ để biết 185 00:08:59,780 --> 00:09:01,310 làm thế nào để nói về những các loại vật. 186 00:09:01,310 --> 00:09:02,700 Và chúng ta sẽ nói về điều đó. 187 00:09:02,700 --> 00:09:06,040 >> Vì vậy, điều đầu tiên, danh sách liên kết. 188 00:09:06,040 --> 00:09:07,770 Đây là một hình ảnh cao cấp của một danh sách liên kết. 189 00:09:07,770 --> 00:09:08,830 Chúng tôi thấy điều này trong lớp. 190 00:09:08,830 --> 00:09:11,670 Chúng tôi thường có 10 người đứng trên sân khấu. 191 00:09:11,670 --> 00:09:16,790 Nhưng chúng tôi có một loạt các nút trong đó mỗi nút có một số giá trị và một con trỏ 192 00:09:16,790 --> 00:09:18,610 giá trị tiếp theo. 193 00:09:18,610 --> 00:09:21,730 Vì vậy, để có được từ một nút kế tiếp, bạn chỉ cần nói, cho tôi nút tiếp theo. 194 00:09:21,730 --> 00:09:22,530 Bạn có nút đó. 195 00:09:22,530 --> 00:09:23,770 Cho tôi nút tiếp theo. 196 00:09:23,770 --> 00:09:24,400 Bạn có nút đó. 197 00:09:24,400 --> 00:09:28,790 Cho tôi nút tiếp theo và vv cho đến khi không có nút bên trái. 198 00:09:28,790 --> 00:09:31,850 >> Vì vậy, tiếp tục nói về nó ở mức cao. 199 00:09:31,850 --> 00:09:34,100 Nó rất dễ dàng để chèn điều vào một danh sách liên kết. 200 00:09:34,100 --> 00:09:36,010 Nếu bạn không quan tâm đến thứ tự, bạn chỉ có thể thả nó 201 00:09:36,010 --> 00:09:36,840 đúng ngay từ đầu. 202 00:09:36,840 --> 00:09:38,520 Đó là thời gian liên tục. 203 00:09:38,520 --> 00:09:39,900 Nhưng thật khó để tìm thấy một giá trị. 204 00:09:39,900 --> 00:09:43,060 Nếu bạn đang cố gắng để hỏi, là bảy trong danh sách của tôi? 205 00:09:43,060 --> 00:09:44,740 Bạn phải đi qua mỗi giá trị duy nhất. 206 00:09:44,740 --> 00:09:45,680 Đây là bảy? 207 00:09:45,680 --> 00:09:46,610 Đây là bảy? 208 00:09:46,610 --> 00:09:47,770 Đây là bảy? 209 00:09:47,770 --> 00:09:48,690 Đây là bảy? 210 00:09:48,690 --> 00:09:49,830 Hơn và hơn nữa. 211 00:09:49,830 --> 00:09:51,520 Và đó là O (n). 212 00:09:51,520 --> 00:09:53,800 Vì vậy, khi nghiên cứu cho các bài kiểm tra, so sánh điều này với mảng. 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> Là OK? 215 00:09:58,220 --> 00:09:59,220 Đèn đã mờ. 216 00:09:59,220 --> 00:10:01,110 OK. 217 00:10:01,110 --> 00:10:02,400 Khi là một danh sách liên kết tốt hơn? 218 00:10:02,400 --> 00:10:04,640 Khi là một mảng tốt hơn? 219 00:10:04,640 --> 00:10:06,670 Vì vậy, chúng ta hãy nhìn vào một số mã. 220 00:10:06,670 --> 00:10:08,960 Đây là một nút tiềm năng. 221 00:10:08,960 --> 00:10:09,770 Đó là một cấu trúc. 222 00:10:09,770 --> 00:10:12,220 Nó có một int n, mà sẽ có giá trị của chúng tôi. 223 00:10:12,220 --> 00:10:17,780 Và nó có một nút cấu trúc * tiếp theo, là con trỏ của chúng tôi đến nút tiếp theo. 224 00:10:17,780 --> 00:10:23,040 Vì vậy, ở đây, chúng ta có thể thấy rằng chúng tôi đã xảy ra đã đặt một int trong nút của chúng tôi. 225 00:10:23,040 --> 00:10:27,850 Nhưng nếu điều này là một danh sách liên kết của char sao hoặc một danh sách liên kết của phao nổi, chúng tôi 226 00:10:27,850 --> 00:10:28,820 hoàn toàn có thể làm điều đó quá. 227 00:10:28,820 --> 00:10:33,110 >> Nhớ trong pset6, có thể bạn đã có một danh sách liên kết của các ngôi sao char hoặc chỉ 228 00:10:33,110 --> 00:10:34,360 mảng char tĩnh. 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 Chúng ta hãy xem đây tại một hoạt động. 231 00:10:39,040 --> 00:10:43,570 Vì vậy, chúng tôi muốn chèn một mới n vào danh sách liên kết của chúng tôi. 232 00:10:43,570 --> 00:10:48,940 Chúng tôi bắt đầu với một con trỏ đầu đó là một con trỏ đến nút này mà có 233 00:10:48,940 --> 00:10:53,460 giá trị của n và tiếp theo của một con trỏ điểm nút này là một giá trị 234 00:10:53,460 --> 00:10:57,760 n và tiếp theo của null, vì đó là nút cuối cùng. 235 00:10:57,760 --> 00:11:00,440 Vì vậy, vì lợi ích của thời gian, tôi sẽ đặt tất cả các mã trên màn hình. 236 00:11:00,440 --> 00:11:03,130 Và chúng tôi sẽ đi bộ qua nó một vài dòng tại một thời điểm. 237 00:11:03,130 --> 00:11:05,790 >> Vì vậy, đây là các mã. 238 00:11:05,790 --> 00:11:07,560 Tôi hy vọng nó có thể đọc được. 239 00:11:07,560 --> 00:11:11,275 Điều đầu tiên chúng tôi làm là chúng tôi malloc một nút mới. 240 00:11:11,275 --> 00:11:15,105 Vì vậy, nó làm cho một con trỏ đến một nút mới không hoàn toàn có bất cứ điều gì thiết lập 241 00:11:15,105 --> 00:11:16,450 trong đó nêu ra. 242 00:11:16,450 --> 00:11:19,580 Chúng tôi kiểm tra để đảm bảo rằng nút mới không phải là null. 243 00:11:19,580 --> 00:11:22,220 Nếu không, chúng ta phải từ bỏ. 244 00:11:22,220 --> 00:11:27,680 Vì vậy, khi kiểm tra rằng, hiện nay chúng tôi thiết lập các giá trị trong nút. 245 00:11:27,680 --> 00:11:31,520 Vì vậy, chúng tôi đặt các n mới vào lĩnh vực n của chúng tôi. 246 00:11:31,520 --> 00:11:36,050 Và chúng tôi đặt con trỏ tiếp theo để trỏ đến người đứng đầu ban đầu, để chúng ta có thể 247 00:11:36,050 --> 00:11:38,900 bây giờ có thêm vào này nút vào danh sách của chúng tôi. 248 00:11:38,900 --> 00:11:44,600 >> Cuối cùng, chúng tôi có điểm đầu toàn cầu đến nút mới của chúng tôi, do đó, nếu chúng ta 249 00:11:44,600 --> 00:11:50,300 bắt đầu từ đầu, chúng tôi sẽ ở đây nút đầu tiên mới thay vì 250 00:11:50,300 --> 00:11:51,560 nút đầu tiên cũ. 251 00:11:51,560 --> 00:11:55,320 Và khi chức năng này thoát ra, các biến nút mới không còn tồn tại, 252 00:11:55,320 --> 00:11:57,130 bởi vì nó là địa phương để các chức năng. 253 00:11:57,130 --> 00:11:59,770 Vì vậy, đây là trạng thái của thế giới. 254 00:11:59,770 --> 00:12:03,570 Đầu toàn cầu của chúng tôi chỉ mới của chúng tôi nút đầu tiên, mà điểm đến của chúng tôi 255 00:12:03,570 --> 00:12:06,346 ban đầu nút đầu tiên, mà điểm đến nút ngay sau đó. 256 00:12:06,346 --> 00:12:09,790 >> Đó là chèn. 257 00:12:09,790 --> 00:12:12,150 Tôi hy vọng đó là tương đối đơn giản để làm theo. 258 00:12:12,150 --> 00:12:14,300 Khi nghi ngờ, vẽ một bức tranh. 259 00:12:14,300 --> 00:12:17,820 Vì vậy, tôi thấy rằng nói về danh sách liên kết và nhìn 260 00:12:17,820 --> 00:12:19,870 đang rất không hữu ích. 261 00:12:19,870 --> 00:12:23,790 Trong khi tìm kiếm một hình ảnh của một liên kết danh sách cho phép tôi nghĩ, oh, vì vậy 262 00:12:23,790 --> 00:12:24,970 Tôi có nút này ở đây. 263 00:12:24,970 --> 00:12:28,980 Nhưng nếu tôi cập nhật con trỏ đó, nó kết thúc lên bị ngắt kết nối. 264 00:12:28,980 --> 00:12:34,340 Và tôi đã quên nơi nút đi. 265 00:12:34,340 --> 00:12:35,390 Và mã thoát. 266 00:12:35,390 --> 00:12:37,830 Và bạn có nhiều nút được ngắt kết nối. 267 00:12:37,830 --> 00:12:39,970 Và bạn không kết thúc với danh sách mà bạn muốn. 268 00:12:39,970 --> 00:12:43,320 >> Vì vậy, nếu bạn vẽ hình ảnh và làm điều đó từng bước, hy vọng, bạn sẽ thấy 269 00:12:43,320 --> 00:12:46,840 đúng trình tự của điều về cập nhật các con trỏ để đảm bảo 270 00:12:46,840 --> 00:12:48,830 rằng danh sách đến với nhau. 271 00:12:48,830 --> 00:12:51,240 Chèn là tương đối đơn giản. 272 00:12:51,240 --> 00:12:55,210 Một một phức tạp hơn sẽ được chèn vào một danh sách được sắp xếp. 273 00:12:55,210 --> 00:12:59,980 Một chức năng phức tạp hơn là xóa và tìm thấy, do đó tìm kiếm thông qua danh sách để 274 00:12:59,980 --> 00:13:03,030 xem có cái gì là có. 275 00:13:03,030 --> 00:13:07,220 Có lẽ bạn đã làm điều này trong khi bạn pset6 đã vào bảng băm của bạn và bạn nói, 276 00:13:07,220 --> 00:13:10,460 tốt, là quả táo từ trong danh sách liên kết của tôi? 277 00:13:10,460 --> 00:13:11,440 >> Vì vậy, bạn có thể đã làm điều này. 278 00:13:11,440 --> 00:13:15,530 Nhưng chắc chắn, làm mới bộ nhớ của bạn và cố gắng tìm và reimplement 279 00:13:15,530 --> 00:13:19,150 reimplement xóa một danh sách liên kết. 280 00:13:19,150 --> 00:13:22,850 Phụ lưu ý vui vẻ, cũng có liên kết kép danh sách, nơi bạn có 281 00:13:22,850 --> 00:13:27,490 con trỏ trỏ cả hai phía trước và lạc hậu, do đó bạn có thể đi đến 282 00:13:27,490 --> 00:13:29,270 nút tiếp theo và đến nút trước đó. 283 00:13:29,270 --> 00:13:33,860 Và có một câu hỏi về năm ngoái bài kiểm tra của loại đó, nói chuyện 284 00:13:33,860 --> 00:13:36,190 về danh sách liên kết kép. 285 00:13:36,190 --> 00:13:40,070 >> Bây giờ, đó là một cấu trúc mà bạn tương đối quen thuộc, bởi vì hầu hết 286 00:13:40,070 --> 00:13:42,520 các bạn có thể sử dụng chúng trên pset6. 287 00:13:42,520 --> 00:13:45,680 Đây là một trong đó là một chút không quen thuộc. 288 00:13:45,680 --> 00:13:51,020 Như một mặt lưu ý, tôi nghĩ rằng đố 1 là chủ yếu khó hơn đố 0, bởi vì 289 00:13:51,020 --> 00:13:54,600 những thứ bạn đang làm, bạn đã không được thực hiện càng nhiều. 290 00:13:54,600 --> 00:13:58,100 Đặt theo cách khác, ví đố 0, bạn đã viết rất nhiều C. Và chúng tôi 291 00:13:58,100 --> 00:13:58,880 hỏi bạn về C. 292 00:13:58,880 --> 00:14:02,310 >> Cho Câu hỏi 1, chúng ta sẽ hỏi bạn về PHP và JavaScript, mà bạn 293 00:14:02,310 --> 00:14:03,490 đã không viết càng nhiều. 294 00:14:03,490 --> 00:14:07,590 Chúng ta sẽ hỏi bạn về C-mã bạn đã không viết càng nhiều, 295 00:14:07,590 --> 00:14:09,130 C công cụ cao cấp này. 296 00:14:09,130 --> 00:14:11,520 Vì vậy, chắc chắn, thực hành những thứ chúng tôi đã nói trong bài giảng mà bạn 297 00:14:11,520 --> 00:14:15,260 không nhất thiết phải làm về vấn đề thiết lập. 298 00:14:15,260 --> 00:14:17,870 >> Phát biểu trong đó, bạn đã không viết một chồng về một vấn đề thiết lập. 299 00:14:17,870 --> 00:14:19,610 Nhưng đó là trong bài giảng. 300 00:14:19,610 --> 00:14:22,530 Dưới đây là hình ảnh cao cấp của ngăn xếp mà chúng tôi cho thấy mỗi năm. 301 00:14:22,530 --> 00:14:26,180 Đó là chồng khay trong các Mather phòng ăn. 302 00:14:26,180 --> 00:14:30,570 Ở mức độ cao, ngăn xếp là một cuối cùng , ra trước cấu trúc dữ liệu. 303 00:14:30,570 --> 00:14:32,040 Điều đó có nghĩa bạn đang đi đặt mọi thứ trong - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, tiêu cực 0. 305 00:14:36,400 --> 00:14:39,180 Một trong những điều tôi không thể có nói - âm 3, 0. 306 00:14:39,180 --> 00:14:40,250 Bạn đặt tất cả những điều này in 307 00:14:40,250 --> 00:14:42,940 Và cuối cùng bạn đưa vào là lần đầu tiên một trong đó là sẽ đi ra. 308 00:14:42,940 --> 00:14:44,170 >> Vì vậy, bạn có hai hoạt động - 309 00:14:44,170 --> 00:14:45,260 đẩy và pop. 310 00:14:45,260 --> 00:14:49,180 Tất cả các đặt trong tôi là cử chỉ như thế này là đẩy. 311 00:14:49,180 --> 00:14:52,020 Và sau đó khi tôi đạt được trong để lấy một cái gì đó hoặc đạt được trên đầu trang để lấy 312 00:14:52,020 --> 00:14:53,940 một cái gì đó, đó là pop. 313 00:14:53,940 --> 00:14:55,540 Vì vậy, chúng ta sẽ thực hiện ngăn xếp. 314 00:14:55,540 --> 00:14:57,870 Và chúng tôi cho thấy chúng trong bài giảng sử dụng các mảng. 315 00:14:57,870 --> 00:14:59,550 Nhưng bạn có thể làm cho họ sử dụng danh sách liên kết. 316 00:14:59,550 --> 00:15:01,770 Một stack là một dữ liệu khái niệm cấu trúc, không giống như một 317 00:15:01,770 --> 00:15:03,760 thực hiện cụ thể một. 318 00:15:03,760 --> 00:15:06,420 >> Vì vậy, những gì mà có thể nhìn như thế nào? 319 00:15:06,420 --> 00:15:07,970 Nó sẽ trông giống như này. 320 00:15:07,970 --> 00:15:10,840 Bạn muốn có một số nguyên kích thước. 321 00:15:10,840 --> 00:15:16,000 Và bạn muốn có một mảng các giá trị chúng tôi đang gọi điện thoại khay, bởi vì đó là 322 00:15:16,000 --> 00:15:18,570 những hình ảnh được cho chúng tôi - int khay - 323 00:15:18,570 --> 00:15:21,740 và sau đó một số công suất tối đa. 324 00:15:21,740 --> 00:15:27,100 Vậy điều gì sẽ thúc đẩy như thế nào? 325 00:15:27,100 --> 00:15:33,250 Vâng, nếu chúng ta có một đống s, sau đó đẩy một cái gì đó vào s, chúng tôi sẽ nhận được 326 00:15:33,250 --> 00:15:34,620 kích thước của s. 327 00:15:34,620 --> 00:15:42,270 Và đó sẽ là tiếp theo chỗ mở của mảng của chúng tôi. 328 00:15:42,270 --> 00:15:50,510 Vì vậy, nếu chúng tôi có ba điều trong ngăn xếp của chúng tôi, sau đó khay 3 sẽ là tiếp theo 329 00:15:50,510 --> 00:15:54,290 mở tại chỗ, vì 0, 1, và 2 đã được lấp đầy. 330 00:15:54,290 --> 00:16:01,790 >> Vì vậy, chúng tôi đặt các giá trị vào s.trays [s.size], vị trí thứ ba. 331 00:16:01,790 --> 00:16:06,290 Và sau đó chúng tôi tăng s.size nói, hey, chúng tôi đã có ba điều trước. 332 00:16:06,290 --> 00:16:07,400 Bây giờ, chúng tôi có bốn. 333 00:16:07,400 --> 00:16:10,180 Vì vậy, lần sau khi bạn đẩy, bạn sẽ đặt cái gì đó vào 4. 334 00:16:10,180 --> 00:16:15,560 Hoặc thời gian tiếp theo bạn bật, bạn sẽ nhìn vào 3 thay vì 4 hoặc bất cứ điều gì. 335 00:16:15,560 --> 00:16:18,000 Và sau đó chúng tôi sẽ trở lại đúng với nói, hey, chúng tôi đã thành công. 336 00:16:18,000 --> 00:16:19,160 Điều này làm việc. 337 00:16:19,160 --> 00:16:22,060 Theo quy định của ngón tay cái, nếu một chức năng đó là phải để trở về đúng hoặc 338 00:16:22,060 --> 00:16:26,370 sai luôn luôn trả về true, bạn có thể đã làm điều gì sai. 339 00:16:26,370 --> 00:16:28,350 Vì vậy, để làm việc này? 340 00:16:28,350 --> 00:16:32,400 >> Vâng, nó hoạt động tốt trong 1, và 2, 3, và 4, và năm. 341 00:16:32,400 --> 00:16:34,640 Nhưng hãy nói rằng tôi đạt được khả năng của tôi. 342 00:16:34,640 --> 00:16:38,750 Tôi đã sau đó chạy vào một vấn đề, bởi vì nếu kích thước tương tự như năng lực, tôi 343 00:16:38,750 --> 00:16:43,340 bây giờ cố gắng để đưa một cái gì đó vào một mảng mà tôi không có không gian. 344 00:16:43,340 --> 00:16:46,980 Do đó, một kiểm tra ngắn để sửa lỗi này. 345 00:16:46,980 --> 00:16:51,630 Nếu s.size == NĂNG LỰC, trả về false. 346 00:16:51,630 --> 00:16:54,130 Nếu không, hãy đi và làm những gì chúng tôi đã làm. 347 00:16:54,130 --> 00:16:55,660 Vì vậy, những gì khác chúng ta có thể hỏi về cho ngăn xếp? 348 00:16:55,660 --> 00:16:56,460 Bạn nên học những gì khác? 349 00:16:56,460 --> 00:16:57,690 Bạn nên thực hành những gì khác? 350 00:16:57,690 --> 00:17:01,030 >> Vâng, thực hiện pop. 351 00:17:01,030 --> 00:17:02,370 Chúng tôi đã làm đẩy. 352 00:17:02,370 --> 00:17:04,280 Tôi sẽ khắc phục điều đó. 353 00:17:04,280 --> 00:17:08,180 Một thực hiện không mảng, nơi bạn sử dụng một danh sách liên kết, có lẽ. 354 00:17:08,180 --> 00:17:09,390 Một thực hiện không int. 355 00:17:09,390 --> 00:17:10,940 Chúng tôi đã làm ints đây. 356 00:17:10,940 --> 00:17:11,880 Nhưng nó có thể là phao nổi. 357 00:17:11,880 --> 00:17:13,010 Tôi có thể có được chuỗi. 358 00:17:13,010 --> 00:17:14,290 Nó có thể đã được sao char. 359 00:17:14,290 --> 00:17:17,960 Nhìn vào bài kiểm tra vừa qua cho các loại câu hỏi chúng tôi đã hỏi về ngăn xếp. 360 00:17:17,960 --> 00:17:20,000 >> Tôi sẽ nói rằng chúng ta đã ngăn xếp xung quanh giống như chúng tôi đã được bảo hiểm họ trong 361 00:17:20,000 --> 00:17:20,540 năm qua. 362 00:17:20,540 --> 00:17:24,400 Vì vậy, các câu đố nên là một dấu hiệu tốt. 363 00:17:24,400 --> 00:17:27,010 Di chuyển về phía trước nhanh hơn, hàng đợi. 364 00:17:27,010 --> 00:17:28,200 Họ giống như ngăn xếp. 365 00:17:28,200 --> 00:17:29,960 Nhưng chúng đầu tiên, ra trước. 366 00:17:29,960 --> 00:17:33,530 Nếu bạn là người Anh, xếp hàng từ có thể thực hiện rất nhiều ý nghĩa với bạn. 367 00:17:33,530 --> 00:17:36,390 Nếu không, bạn có thể có nghe nói về nó như một dòng. 368 00:17:36,390 --> 00:17:38,120 Họ làm việc giống như các dòng tại các cửa hàng Apple. 369 00:17:38,120 --> 00:17:40,740 Người đầu tiên xuất hiện vào lúc 3:00 vào buổi sáng là lần đầu tiên 370 00:17:40,740 --> 00:17:42,880 người mua iPad của mình. 371 00:17:42,880 --> 00:17:44,260 >> Vì vậy, chúng tôi có hai hoạt động - 372 00:17:44,260 --> 00:17:45,720 enqueue và dequeue. 373 00:17:45,720 --> 00:17:47,560 Enqueue đặt một người nào đó trong dòng. 374 00:17:47,560 --> 00:17:50,070 Dequeue kéo đầu tiên người ra khỏi dây chuyền. 375 00:17:50,070 --> 00:17:52,640 Một lần nữa, chúng ta có thể thực hiện này với một mảng. 376 00:17:52,640 --> 00:17:54,880 Vì vậy, các cấu trúc, chúng tôi là những gì cho thấy trong bài giảng? 377 00:17:54,880 --> 00:17:57,660 Đó là một này. 378 00:17:57,660 --> 00:17:59,300 Một lần nữa, các con số. 379 00:17:59,300 --> 00:18:02,020 Một lần nữa, kích thước và điều trước mới này. 380 00:18:02,020 --> 00:18:04,880 Tại sao lại có một cái gì đó gọi là phía trước? 381 00:18:04,880 --> 00:18:07,050 Đó là chỉ số tiếp theo yếu tố để dequeue. 382 00:18:07,050 --> 00:18:12,210 Nó chỉ là nội bộ theo dõi anh chàng đầu tiên xuất hiện, vì vậy chúng tôi có 383 00:18:12,210 --> 00:18:15,005 có thể kéo nó ra khi chúng ta cần. 384 00:18:15,005 --> 00:18:19,322 >> Chắc chắn nhìn vào bài giảng và cố gắng để thực hiện enqueue và dequeue 385 00:18:19,322 --> 00:18:21,700 khi nghiên cứu cho các bài kiểm tra. 386 00:18:21,700 --> 00:18:23,190 Điều quan trọng để suy nghĩ về. 387 00:18:23,190 --> 00:18:27,260 Bao quanh nếu phía trước cộng với kích thước kết thúc lớn hơn năng lực. 388 00:18:27,260 --> 00:18:32,670 Một lần nữa, nếu cấu trúc của bạn là đầy đủ, bạn sẽ có một vấn đề. 389 00:18:32,670 --> 00:18:34,780 Băm bảng bạn đã thấy trước đây. 390 00:18:34,780 --> 00:18:39,820 Hầu hết các bạn có thể thực hiện những ngày pset6. 391 00:18:39,820 --> 00:18:44,210 Đó là một cấu trúc nhằm mục đích cho O (1) thời gian liên tục chèn và O (1) 392 00:18:44,210 --> 00:18:46,430 tra cứu thời gian liên tục. 393 00:18:46,430 --> 00:18:49,760 >> Trong CS50, chúng tôi thực hiện điều này như một loạt các danh sách liên kết. 394 00:18:49,760 --> 00:18:53,690 Các thành phần quan trọng để một bảng băm là hàm băm. 395 00:18:53,690 --> 00:18:58,350 Vì vậy, nó chuyển đổi đầu vào của bạn, hãy nói, một từ trong từ điển, vào một số, 396 00:18:58,350 --> 00:18:59,560 mà là có được chỉ số của chúng tôi. 397 00:18:59,560 --> 00:19:01,410 Và chúng tôi sẽ sử dụng chỉ số vào mảng của chúng tôi. 398 00:19:01,410 --> 00:19:05,374 Vì vậy, đây là một hình ảnh nhỏ dễ thương từ study.50.net. 399 00:19:05,374 --> 00:19:08,060 Chúng tôi ném tất cả các từ vào hàm băm của chúng tôi. 400 00:19:08,060 --> 00:19:10,950 Và hàm băm cho chúng ta nơi để đặt những lời này. 401 00:19:10,950 --> 00:19:15,650 >> Đây là tất cả tuyệt vời trong đất nơi chỉ có một từ cho mỗi khe cắm. 402 00:19:15,650 --> 00:19:20,480 Nhưng khi nhớ ra từ pset6, có là những từ hơn khe. 403 00:19:20,480 --> 00:19:23,080 Vì vậy, những gì xảy ra khi bạn nhận được một va chạm? 404 00:19:23,080 --> 00:19:26,730 Thay vì lưu trữ một giá trị trong, hãy nói, bảng băm 3, bạn 405 00:19:26,730 --> 00:19:27,990 lưu trữ một danh sách liên kết. 406 00:19:27,990 --> 00:19:32,900 Và vì vậy thay vì có dưa đỏ ở đây, bạn sẽ có một danh sách liên kết, 407 00:19:32,900 --> 00:19:34,190 nơi nút đầu tiên là dưa đỏ. 408 00:19:34,190 --> 00:19:35,260 Và nút tiếp theo là mèo. 409 00:19:35,260 --> 00:19:38,970 Và nút thứ ba là va chạm, chúng ta hãy nói, bởi vì tất cả những lời bắt đầu 410 00:19:38,970 --> 00:19:41,110 với C. 411 00:19:41,110 --> 00:19:42,700 >> Vì vậy, hầu hết các bạn đã làm điều này cho pset6. 412 00:19:42,700 --> 00:19:45,685 Nếu bạn không làm một bảng băm trên pset6 và bạn đã cố gắng một cái gì đó như 413 00:19:45,685 --> 00:19:47,720 một Trie, chắc chắn xem xét bảng băm. 414 00:19:47,720 --> 00:19:50,650 Nếu bạn đã làm điều đó trên pset6, chắc chắn xem xét các bảng băm. 415 00:19:50,650 --> 00:19:53,610 Và nếu bạn đã làm nó trên pset6 và nó đã làm không làm việc ra hoàn toàn đúng và bạn 416 00:19:53,610 --> 00:19:56,150 đã có rất nhiều rắc rối với nó, chắc chắn xem xét các bảng băm. 417 00:19:56,150 --> 00:20:01,610 Vì vậy, bài học thực sự chắc chắn là xem xét các bảng băm. 418 00:20:01,610 --> 00:20:07,130 >> Các dân tộc thiểu số lớn các bạn đã cố gắng cố gắng ra trên pset6. 419 00:20:07,130 --> 00:20:08,570 Cao cấp hình ảnh. 420 00:20:08,570 --> 00:20:15,150 Đó là một cái gì đó như thế này, trong đó mỗi nút có một bộ trẻ em, trong đó mỗi 421 00:20:15,150 --> 00:20:17,100 con tương ứng với một lá thư. 422 00:20:17,100 --> 00:20:20,520 Và tất cả các nút cũng nói, hey, tôi là một từ. 423 00:20:20,520 --> 00:20:25,933 Vì vậy, trong trường hợp này, từ Maxwell, nếu bạn làm theo M vào A đến 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L và sau đó làm theo nó một lần nữa. 425 00:20:28,530 --> 00:20:32,800 Và bạn nhận được biểu tượng này, đồng bằng, mà chúng tôi biểu có nghĩa là đây là một từ. 426 00:20:32,800 --> 00:20:34,780 Vì vậy, Maxwell là một từ. 427 00:20:34,780 --> 00:20:38,430 Các vùng đồng bằng là suốt biểu mà điều đó là những từ và 428 00:20:38,430 --> 00:20:40,360 điều này là không. 429 00:20:40,360 --> 00:20:46,400 >> Vì vậy, trong pset6, dữ liệu chúng tôi lưu trữ cùng với bất kỳ các nút của chúng tôi là "Tôi là một 430 00:20:46,400 --> 00:20:52,630 từ. "Và điều thú vị về cố gắng là họ chứng minh và chèn 431 00:20:52,630 --> 00:20:55,080 tra cứu trong O (chiều dài của một từ). 432 00:20:55,080 --> 00:20:59,450 Vì vậy, chỉ để có được thông qua Maxwell, đó là M-A-X-W-E-L-L. Vì vậy, bảy hoặc tám - 433 00:20:59,450 --> 00:21:00,360 Tôi không thể đếm - 434 00:21:00,360 --> 00:21:03,920 bước để có được đến cùng và kiểm tra mọi thứ. 435 00:21:03,920 --> 00:21:06,800 Thực hiện để nhanh chóng ở đây. 436 00:21:06,800 --> 00:21:10,230 Rob đã đi qua một liên kết liệt kê trong sau khi chết của mình. 437 00:21:10,230 --> 00:21:11,600 Vì vậy, kiểm tra xem ra. 438 00:21:11,600 --> 00:21:11,720 Xin lôi. 439 00:21:11,720 --> 00:21:13,240 Đã đi qua một Trie trong sau khi chết của mình. 440 00:21:13,240 --> 00:21:14,260 Vì vậy, kiểm tra xem ra. 441 00:21:14,260 --> 00:21:24,410 >> Nhưng về cơ bản bạn có mỗi nút có 27 con trỏ đến nút tiếp theo và một 442 00:21:24,410 --> 00:21:27,050 Boolean cho tôi một lời. 443 00:21:27,050 --> 00:21:31,530 Kiểm tra sau khi chết của Rob trong bao điều này thực sự được thực hiện. 444 00:21:31,530 --> 00:21:34,750 Cấu trúc cuối cùng của chúng tôi, cây của chúng tôi và cây tìm kiếm nhị phân. 445 00:21:34,750 --> 00:21:41,530 Vì vậy, nhìn vào đó, chúng được bao phủ gần đây nhất là 8 tuần, thứ Hai. 446 00:21:41,530 --> 00:21:46,960 Một cây tương tự như một Trie, ngoại trừ bạn không nhất thiết phải 27 nút ở 447 00:21:46,960 --> 00:21:47,500 mỗi điểm. 448 00:21:47,500 --> 00:21:52,820 Và bạn không có dữ liệu này tại mỗi bước nghĩa liệu - 449 00:21:52,820 --> 00:21:54,030 con đường không quan trọng. 450 00:21:54,030 --> 00:22:00,870 Trong khi một Trie, con đường từ trên xuống phía dưới, Maxwell, là quan trọng đối với chúng tôi. 451 00:22:00,870 --> 00:22:05,270 >> Nhưng mỗi nút có nhiều trẻ em, có lẽ. 452 00:22:05,270 --> 00:22:07,290 Chúng tôi có một số từ vựng hơn. 453 00:22:07,290 --> 00:22:09,530 Các gốc rễ của cây là ở đầu. 454 00:22:09,530 --> 00:22:12,520 Và chúng ta nói rằng rất dưới cùng các nút có không 455 00:22:12,520 --> 00:22:14,530 trẻ em là lá. 456 00:22:14,530 --> 00:22:18,040 Vì vậy, giống như một Trie, một cây một cấu trúc của các nút. 457 00:22:18,040 --> 00:22:21,490 Một dạng phổ biến của cây mà chúng ta đang đi nói đến là một cây nhị phân, nơi 458 00:22:21,490 --> 00:22:26,040 mỗi nút không có trẻ em hoặc một con hoặc hai con. 459 00:22:26,040 --> 00:22:28,890 Vì vậy, hình ảnh này ở đây không phải là một cây nhị phân, vì 460 00:22:28,890 --> 00:22:32,890 nút 3 có ba trẻ em. 461 00:22:32,890 --> 00:22:38,140 >> Nhưng nếu chúng ta bỏ qua những, phần còn lại của nó là một cây nhị phân vì nó 462 00:22:38,140 --> 00:22:43,200 chứng minh tài sản mà mỗi nút có không, một hoặc hai con. 463 00:22:43,200 --> 00:22:46,400 Vậy làm thế nào chúng ta có thể thể hiện điều này trong mã? 464 00:22:46,400 --> 00:22:51,460 Chúng ta có thể có một nút mà mỗi nút có một số nguyên bên trong của nó, cũng 465 00:22:51,460 --> 00:22:55,590 như một con trỏ đến cây bên trái và một con trỏ đến cây trên 466 00:22:55,590 --> 00:22:59,510 bên phải, do đó, hai trẻ em. 467 00:22:59,510 --> 00:23:00,880 Làm thế này là hữu ích? 468 00:23:00,880 --> 00:23:05,740 Vâng, nếu chúng ta thực hiện các quy định về nơi chúng tôi đặt các nút, chúng ta có thể thực hiện tìm kiếm nhanh hơn. 469 00:23:05,740 --> 00:23:10,630 >> Do đó, có một khái niệm về một tìm kiếm nhị phân cây, nơi mà tất cả các nút trên 470 00:23:10,630 --> 00:23:14,420 cây con trái có một giá trị nhỏ hơn hơn các nút chúng tôi đang tìm kiếm. 471 00:23:14,420 --> 00:23:17,880 Và tất cả các nút trên cây con bên phải có giá trị lớn 472 00:23:17,880 --> 00:23:18,660 hơn nút gốc. 473 00:23:18,660 --> 00:23:20,670 Bây giờ, có vẻ như rất nhiều từ. 474 00:23:20,670 --> 00:23:23,770 Tôi sẽ đặt nó bên trong của đôi báo giá và cho bạn thấy một bức tranh. 475 00:23:23,770 --> 00:23:27,010 Vì vậy, đây là một ví dụ một cây tìm kiếm nhị phân. 476 00:23:27,010 --> 00:23:28,770 Thấy rằng chúng tôi bắt đầu với 10. 477 00:23:28,770 --> 00:23:31,780 Tất cả mọi thứ bên trái của 10 nhỏ hơn nó. 478 00:23:31,780 --> 00:23:33,130 Và tất cả mọi thứ bên phải lớn hơn nó. 479 00:23:33,130 --> 00:23:37,620 >> Nhưng nhiều hơn so với đó, mỗi nút trong cây thể hiện khách sạn này. 480 00:23:37,620 --> 00:23:42,110 Vì vậy, các nút 7 có 3 đến trái và 9 bên phải. 481 00:23:42,110 --> 00:23:44,440 Vì vậy, tất cả những nhỏ hơn 10. 482 00:23:44,440 --> 00:23:50,470 Nhưng nhìn vào chỉ những người, 7 có 3 bên trái và 9 của nó bên phải của nó. 483 00:23:50,470 --> 00:23:56,100 Và tương tự bên phải, 15 có 14 bên trái và 50 của mình bên phải của nó. 484 00:23:56,100 --> 00:24:03,770 Vì vậy, ba nút ở đằng kia, 15, 14, và 50, cũng là một cây nhị phân hợp lệ 485 00:24:03,770 --> 00:24:05,480 hoặc một cây tìm kiếm nhị phân hợp lệ. 486 00:24:05,480 --> 00:24:07,250 Và tất cả đều lớn hơn 10. 487 00:24:07,250 --> 00:24:08,960 Vì vậy, họ được phép có bên phải có. 488 00:24:08,960 --> 00:24:09,940 Có một câu hỏi? 489 00:24:09,940 --> 00:24:12,580 >> ĐỐI TƯỢNG: Làm thế nào để bạn đối phó khi bạn có hai lần bảy? 490 00:24:12,580 --> 00:24:12,850 >> R.J. Aquino: Vâng. 491 00:24:12,850 --> 00:24:16,550 Làm thế nào để bạn đối phó với hai giá trị đó là như nhau? 492 00:24:16,550 --> 00:24:21,465 Một số cây tìm kiếm nhị phân nói rằng bạn bỏ qua bản sao, vì mục tiêu là 493 00:24:21,465 --> 00:24:24,280 chỉ để nói rằng, tôi đã nhìn thấy những điều này cho đến nay. 494 00:24:24,280 --> 00:24:28,120 Một số cây tìm kiếm nhị phân bạn có thể nói có một số bên trong của nút. 495 00:24:28,120 --> 00:24:32,000 Những người khác có thể nói rằng tất cả mọi thứ để bên trái là ít hơn hoặc bằng. 496 00:24:32,000 --> 00:24:33,470 Và tất cả mọi thứ bên phải lớn hơn. 497 00:24:33,470 --> 00:24:36,520 >> Nó chỉ phụ thuộc vào những gì vấn đề là bạn đang giải quyết. 498 00:24:36,520 --> 00:24:40,840 Vì vậy, trong một từ điển, ví dụ, bạn sẽ không quan tâm đến bản sao. 499 00:24:40,840 --> 00:24:41,490 Bạn sẽ ném chúng ra. 500 00:24:41,490 --> 00:24:44,719 Nhưng một số vấn đề khác bạn có thể quan tâm. 501 00:24:44,719 --> 00:24:49,242 >> ĐỐI TƯỢNG: Có thể có 1 bên trái của 15, mà 502 00:24:49,242 --> 00:24:50,590 là ít hơn 10? 503 00:24:50,590 --> 00:24:51,885 >> R.J. Aquino: số 504 00:24:51,885 --> 00:24:56,570 Nếu 14 đây là một 1, điều này sẽ không phải là một cây tìm kiếm nhị phân có giá trị, 505 00:24:56,570 --> 00:25:00,840 bởi vì tất cả mọi thứ ở bên phải của 10 có được lớn hơn nó. 506 00:25:00,840 --> 00:25:02,300 Và chúng ta sẽ thấy lý do tại sao. 507 00:25:02,300 --> 00:25:07,960 Nếu trong đất tìm kiếm mục tiêu của tôi là để tìm 14, tôi bắt đầu ở gốc. 508 00:25:07,960 --> 00:25:08,500 Vì vậy, tôi xem. 509 00:25:08,500 --> 00:25:08,710 OK. 510 00:25:08,710 --> 00:25:10,670 Chúng ta sẽ bắt đầu từ gốc. 511 00:25:10,670 --> 00:25:12,500 Nhìn vào 10. 512 00:25:12,500 --> 00:25:16,050 >> Vâng, 14, mục tiêu của chúng tôi, lớn hơn 10. 513 00:25:16,050 --> 00:25:17,370 Vì vậy, nó phải được bên phải. 514 00:25:17,370 --> 00:25:21,780 Điều này rất giống với toàn bộ điện thoại điều chúng tôi đã làm cuốn sách, nhị phân 515 00:25:21,780 --> 00:25:23,720 tìm kiếm đó. 516 00:25:23,720 --> 00:25:26,430 Nhưng thay vì tìm kiếm nhị phân trong một mảng, chúng ta nhị phân 517 00:25:26,430 --> 00:25:28,490 tìm kiếm trong cây này. 518 00:25:28,490 --> 00:25:31,260 Vì vậy, chúng tôi vẫn đang tìm kiếm 14. 519 00:25:31,260 --> 00:25:32,480 Vâng, 14 nhỏ hơn 15. 520 00:25:32,480 --> 00:25:36,430 Vì vậy nếu nó trong cây của chúng tôi, nó phải được trong lĩnh vực này ở đây. 521 00:25:36,430 --> 00:25:39,680 Nó phải được ở bên phải của 10 và bên trái của 15. 522 00:25:39,680 --> 00:25:42,250 >> Và vì vậy chúng tôi kiểm tra nút này. 523 00:25:42,250 --> 00:25:45,790 Và yay, chúng tôi đã tìm thấy 14. 524 00:25:45,790 --> 00:25:46,760 Tôi sẽ không đi qua nó. 525 00:25:46,760 --> 00:25:48,090 Nhưng đây là các mã. 526 00:25:48,090 --> 00:25:49,690 Nó thực sự tương đối đơn giản, 527 00:25:49,690 --> 00:25:52,630 bởi vì đây là đệ quy. 528 00:25:52,630 --> 00:25:55,420 Những gì chúng tôi có thể yêu cầu bạn làm trên một bài kiểm tra? 529 00:25:55,420 --> 00:25:57,000 Chúng ta có thể yêu cầu bạn viết mã này. 530 00:25:57,000 --> 00:25:59,170 Chúng ta có thể yêu cầu bạn nhìn vào mã này và sửa đổi mã này và giải thích những gì 531 00:25:59,170 --> 00:26:00,210 nó làm. 532 00:26:00,210 --> 00:26:00,390 Yeah. 533 00:26:00,390 --> 00:26:00,770 Câu hỏi? 534 00:26:00,770 --> 00:26:04,240 >> ĐỐI TƯỢNG: Là những slide sẽ làm sẵn có như họ thời gian qua không? 535 00:26:04,240 --> 00:26:04,740 >> R.J. Aquino: Có. 536 00:26:04,740 --> 00:26:06,460 Vì vậy, các slide sẽ chắc chắn được đăng. 537 00:26:06,460 --> 00:26:08,640 >> ĐỐI TƯỢNG: Họ đang thực sự được đăng ngay bây giờ trên trang web. 538 00:26:08,640 --> 00:26:10,020 David chỉ làm điều đó. 539 00:26:10,020 --> 00:26:12,720 >> R.J. Aquino: Các slide là ngay bây giờ trên trang web. 540 00:26:12,720 --> 00:26:16,420 Tôi có lẽ sẽ vá một vài các lỗi chính tả tôi ghi nhận và sửa chữa chúng. 541 00:26:16,420 --> 00:26:19,940 Nhưng có một hiện tại phiên bản trên trang web. 542 00:26:19,940 --> 00:26:21,820 Những người khác những điều chúng ta có thể yêu cầu bạn làm - 543 00:26:21,820 --> 00:26:23,790 viết chèn. 544 00:26:23,790 --> 00:26:27,490 Viết một phiên bản lặp đi lặp lại của hàm đệ quy, chúng tôi chỉ cho bạn 545 00:26:27,490 --> 00:26:32,520 hoặc nói về những điều này, như trong đoạn văn, trong lời nói, trong câu. 546 00:26:32,520 --> 00:26:35,760 So sánh thời gian chạy và giải thích những gì bạn sẽ muốn sử dụng một số nhị phân 547 00:26:35,760 --> 00:26:39,200 cây tìm kiếm thay vì một băm bảng, ví dụ. 548 00:26:39,200 --> 00:26:43,580 >> Vì vậy, hiểu được những cấu trúc ở mức khá sâu. 549 00:26:43,580 --> 00:26:47,440 Hiểu làm thế nào để viết cho họ, làm thế nào để sử dụng chúng, làm thế nào để nói về chúng. 550 00:26:47,440 --> 00:26:50,270 Và bạn sẽ được tất cả các thiết lập. 551 00:26:50,270 --> 00:26:50,630 Câu hỏi? 552 00:26:50,630 --> 00:26:55,070 >> ĐỐI TƯỢNG: Khi bạn đang viết cây tìm kiếm nhị phân, làm thế nào bạn 553 00:26:55,070 --> 00:27:01,460 xác định giá trị làm cho nó như là gốc? 554 00:27:01,460 --> 00:27:06,120 >> R.J. Aquino: Vì vậy, câu hỏi là, những gì giá trị để bạn thực hiện như là gốc? 555 00:27:06,120 --> 00:27:08,760 Tùy thuộc vào mã của bạn, bạn có thể có một gốc toàn cầu. 556 00:27:08,760 --> 00:27:14,290 Vì vậy, bạn có thể có khả năng đã có trong pset6 một bảng băm toàn cầu. 557 00:27:14,290 --> 00:27:18,640 Hoặc bạn có thể vượt qua gốc trong như một tham số. 558 00:27:18,640 --> 00:27:23,810 Vì vậy, chức năng tìm kiếm này đây có một đối một nút *. 559 00:27:23,810 --> 00:27:27,420 Và vì vậy bất cứ nút bạn xảy ra được nhìn vào là một trong những bạn đang điều trị 560 00:27:27,420 --> 00:27:31,510 như là người chủ của bạn khi bạn vượt qua nó vào 561 00:27:31,510 --> 00:27:32,320 Và tôi là tất cả các thiết lập. 562 00:27:32,320 --> 00:27:33,480 Đó là những trang trình bày của tôi. 563 00:27:33,480 --> 00:27:35,940 Người tiếp theo có thể đến trao đổi trong một máy tính xách tay và mic. 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> ROB Bowden: Tôi nghĩ rằng tôi có thể có giải thích câu hỏi đó một cách khác nhau. 566 00:27:49,760 --> 00:27:53,826 Nhưng tôi hiểu nó như là, nếu bạn có những con số 1, 2, và 3, làm thế nào chúng tôi 567 00:27:53,826 --> 00:27:56,720 biết để làm cho 2 gốc như trái ngược với 1 hoặc 3? 568 00:27:56,720 --> 00:27:59,480 Nếu chúng tôi có 2 gốc, sau đó nó độc đáo 1 và 3 ở bên trái và bên phải. 569 00:27:59,480 --> 00:28:04,610 Nhưng nếu 1 là gốc rễ, thì đó là 1 đến đầu, 2 bên phải, 3 bên phải. 570 00:28:04,610 --> 00:28:10,880 Vì vậy, theo mặc định, bạn không biết những gì để làm gốc. 571 00:28:10,880 --> 00:28:15,400 Và cho bất kỳ thuật toán chúng tôi đang mong để cung cấp cho bạn, chỉ là những điều đầu tiên bạn 572 00:28:15,400 --> 00:28:16,680 chèn sẽ là gốc. 573 00:28:16,680 --> 00:28:19,890 Hoặc chúng tôi cung cấp cho bạn một cây nhị phân đã tồn tại mà có một gốc. 574 00:28:19,890 --> 00:28:24,760 Nhưng các thuật toán khác tồn tại như vậy mà gốc sẽ cập nhật, do đó nếu bạn 575 00:28:24,760 --> 00:28:28,370 kết thúc trong tình huống mà nó là 1, 2, 3, nó sẽ tự động cập nhật 576 00:28:28,370 --> 00:28:30,900 làm cho 2 gốc mới, do đó, nó vẫn còn độc đáo là sự cân. 577 00:28:30,900 --> 00:28:33,750 578 00:28:33,750 --> 00:28:34,833 >> ANGELA LI: Cool. 579 00:28:34,833 --> 00:28:36,170 Chào mọi người. 580 00:28:36,170 --> 00:28:37,810 Tôi Angela. 581 00:28:37,810 --> 00:28:42,490 Và tôi sẽ kết thúc ra C của chúng tôi và sau đó đi vào một số trang web của chúng tôi 582 00:28:42,490 --> 00:28:43,120 công nghệ - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML và CSS. 584 00:28:46,570 --> 00:28:49,610 Vì vậy, điều đầu tiên là bộ đệm cuộc tấn công tràn. 585 00:28:49,610 --> 00:28:53,070 Vì vậy, chúng ta hãy nhìn vào mã này. 586 00:28:53,070 --> 00:28:54,260 Nó khá đơn giản. 587 00:28:54,260 --> 00:28:55,460 Có một chức năng foo. 588 00:28:55,460 --> 00:28:56,990 Và nó không trả lại bất cứ điều gì. 589 00:28:56,990 --> 00:29:00,950 Nhưng phải mất trong một con trỏ một chuỗi được gọi là thanh. 590 00:29:00,950 --> 00:29:04,920 >> Và nó sẽ tuyên bố này đệm, mà là một nhân vật 591 00:29:04,920 --> 00:29:07,690 mảng có 12 khe. 592 00:29:07,690 --> 00:29:11,730 Và nó sử dụng memcpy, mà chỉ là một là chức năng mà bản sao từ một địa chỉ 593 00:29:11,730 --> 00:29:12,910 thành khác. 594 00:29:12,910 --> 00:29:19,400 Vì vậy, đây là cố gắng để sao chép vào đệm của chúng tôi từ bất cứ điều gì 595 00:29:19,400 --> 00:29:21,140 thanh được trỏ đến. 596 00:29:21,140 --> 00:29:24,640 Vì vậy, bất kỳ ý tưởng gì sai với mã số này? 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> ĐỐI TƯỢNG: Nếu thanh dài hơn C, họ sẽ ghi đè lên. 599 00:29:30,830 --> 00:29:31,520 >> ANGELA LI: Vâng, chính xác. 600 00:29:31,520 --> 00:29:34,200 Chúng tôi không có gì đảm bảo rằng thanh là có được ít hơn 12. 601 00:29:34,200 --> 00:29:36,080 Chúng ta chỉ cần thực hiện một số số tùy ý 12. 602 00:29:36,080 --> 00:29:38,380 Và chúng tôi đã như thế, chúng ta hãy hy vọng rằng đầu vào người dùng của chúng tôi là ít hơn 603 00:29:38,380 --> 00:29:40,440 Dài 12 ký tự. 604 00:29:40,440 --> 00:29:46,320 Vì vậy, trong một thế giới lý tưởng, nếu đầu vào của chúng tôi là luôn luôn như mong đợi, sau đó chúng tôi sẽ nhận được 605 00:29:46,320 --> 00:29:47,550 một cái gì đó như thế nào, xin chào. 606 00:29:47,550 --> 00:29:48,920 Đó là ít hơn 12 ký tự. 607 00:29:48,920 --> 00:29:51,870 Nó được đọc vào char c. 608 00:29:51,870 --> 00:29:53,280 Và sau đó chúng tôi làm điều gì đó với nó. 609 00:29:53,280 --> 00:29:54,800 Nó không thực sự quan trọng. 610 00:29:54,800 --> 00:29:59,740 >> Nhưng một người độc hại có thể làm một cái gì đó như thế này, nơi họ 611 00:29:59,740 --> 00:30:04,760 cung cấp cho chúng tôi bất cứ điều gì thanh được trỏ đến, nó sẽ trỏ đến mảng lớn này 612 00:30:04,760 --> 00:30:06,280 chỉ của một. 613 00:30:06,280 --> 00:30:10,680 Và đây là cách dài hơn 12. 614 00:30:10,680 --> 00:30:13,830 Vì vậy, nó sẽ đi tất cả các cách xuống đây để mà trở lại 615 00:30:13,830 --> 00:30:15,420 địa chỉ sử dụng được. 616 00:30:15,420 --> 00:30:17,860 Vì vậy, chúng ta hãy nói chức năng này được gọi là foo. 617 00:30:17,860 --> 00:30:20,970 Có lẽ foo được gọi bằng một số khác chức năng, được gọi là chính. 618 00:30:20,970 --> 00:30:24,890 Vì vậy, khi foo đang chạy, nó cần để biết được nơi để trở về. 619 00:30:24,890 --> 00:30:29,130 >> Nếu foo được gọi bằng một số chức năng được đặt tên baz, nó phải biết rằng nó 620 00:30:29,130 --> 00:30:30,250 đã trở lại baz. 621 00:30:30,250 --> 00:30:34,040 Và đó là những gì trở lại địa chỉ này xuống đây cho chúng ta. 622 00:30:34,040 --> 00:30:38,340 Nhưng nếu chúng ta ghi đè lên nó với một số khác địa chỉ, trong trường hợp này, đây là một 623 00:30:38,340 --> 00:30:42,650 đại diện của các địa chỉ ở khi bắt đầu của bộ đệm này, sau đó 624 00:30:42,650 --> 00:30:45,240 những gì thực sự sẽ xảy ra là thay vì trả lại trở lại baz, 625 00:30:45,240 --> 00:30:48,470 đó gọi là chức năng của chúng tôi, nó chỉ là sẽ đi vào phía trước của mã này. 626 00:30:48,470 --> 00:30:53,930 >> Và nếu điều này là có bởi vì một độc hại của hacker anh chàng đến và 627 00:30:53,930 --> 00:30:56,820 tiêm này, thì có lẽ số tiền này A không phải là thực sự của một. 628 00:30:56,820 --> 00:31:02,030 Và nó thực sự chỉ là mã mà nghỉ máy tính hoặc một cái gì đó của bạn. 629 00:31:02,030 --> 00:31:05,930 Vì vậy, để được phòng thủ về loại này điều, bạn phải không bao giờ giả định rằng 630 00:31:05,930 --> 00:31:09,120 người sử dụng đầu vào là một số số lượng ký tự. 631 00:31:09,120 --> 00:31:13,310 Ví dụ, khi bạn đang làm Speller, bạn đã nói rằng lời là 632 00:31:13,310 --> 00:31:15,580 chỉ có được 40 ký tự tối đa dài. 633 00:31:15,580 --> 00:31:16,570 Và đó là tốt. 634 00:31:16,570 --> 00:31:20,150 >> Nhưng nếu không, sau đó bạn sẽ phải hãy chắc chắn để chỉ đọc trong 45 635 00:31:20,150 --> 00:31:21,520 nhân vật tại một thời điểm. 636 00:31:21,520 --> 00:31:24,430 Nếu không, bạn có thể ghi đè lên bộ đệm của bạn. 637 00:31:24,430 --> 00:31:26,140 Thắc mắc về điều đó. 638 00:31:26,140 --> 00:31:26,733 Yeah. 639 00:31:26,733 --> 00:31:28,850 >> ĐỐI TƯỢNG: bạn có thể chỉ cần nói chuyện thêm một chút về những? 640 00:31:28,850 --> 00:31:29,790 >> ANGELA LI: Xin lỗi. 641 00:31:29,790 --> 00:31:31,040 Vâng. 642 00:31:31,040 --> 00:31:32,813 643 00:31:32,813 --> 00:31:35,870 >> ĐỐI TƯỢNG: Các mic là chỉ cho video. 644 00:31:35,870 --> 00:31:37,640 Tôi sẽ cố gắng và dự án. 645 00:31:37,640 --> 00:31:39,900 Hi, guys. 646 00:31:39,900 --> 00:31:40,920 Sup? 647 00:31:40,920 --> 00:31:45,330 Vì vậy, hãy đi qua một vài điều trong Thư viện CS50, mà bạn đã sử dụng 648 00:31:45,330 --> 00:31:49,072 tất cả các học kỳ, chủ yếu là để có được người dùng nhập vào. 649 00:31:49,072 --> 00:31:53,140 Như bạn biết, bạn bao gồm các CS50 thư viện bởi chỉ cần làm CS50.h, mà 650 00:31:53,140 --> 00:31:55,660 chứa tất cả các nguyên mẫu của chức năng mà bạn có thể sử dụng, như 651 00:31:55,660 --> 00:31:58,640 GetString và getInt, và GetFloat, vân vân. 652 00:31:58,640 --> 00:32:02,870 Và có một dòng này trong CS50 thư viện định nghĩa một chuỗi, 653 00:32:02,870 --> 00:32:05,380 các bạn đều biết bây giờ chỉ là một char *. 654 00:32:05,380 --> 00:32:07,900 >> Nhưng chúng ta hãy một peek tại cách GetString hoạt động. 655 00:32:07,900 --> 00:32:10,010 Đây là một phiên bản rất cô đọng. 656 00:32:10,010 --> 00:32:15,090 Bạn có thể kéo các tập tin thư viện CS50 từ, tôi nghĩ rằng, manuals.CS50.net. 657 00:32:15,090 --> 00:32:16,750 Và bạn có thể đọc thông qua chức năng thực tế. 658 00:32:16,750 --> 00:32:19,330 Nhưng điều này bao gồm một số những phần quan trọng. 659 00:32:19,330 --> 00:32:23,870 Vì vậy, chúng tôi đã tạo ra một số bộ đệm với một số năng lực. 660 00:32:23,870 --> 00:32:27,570 Và những gì chúng tôi làm là chúng ta có được một nhân vật tại một thời điểm từ n tiêu chuẩn. 661 00:32:27,570 --> 00:32:30,910 Đó là nơi mà các đầu vào người sử dụng văn bản trong giao diện điều khiển. 662 00:32:30,910 --> 00:32:33,430 >> Và như vậy chúng ta sẽ đọc trong một nhân vật, miễn là nó không phải là một mới 663 00:32:33,430 --> 00:32:37,220 dòng và nó không kết thúc của tập tin, là kết thúc của đầu vào tiêu chuẩn. 664 00:32:37,220 --> 00:32:45,690 Và cho mỗi nhân vật mà chúng ta đọc trong, nếu nhân vật mà kết thúc lên thêm 665 00:32:45,690 --> 00:32:50,120 với số ký tự chúng ta đã đọc và đó là nhiều hơn năng lực của chúng tôi, 666 00:32:50,120 --> 00:32:53,490 sau đó những gì chúng tôi làm là chúng ta chỉ cần thay đổi kích thước của chúng tôi đệm để nó dài gấp đôi. 667 00:32:53,490 --> 00:32:56,950 Vì vậy, một lần nữa, điều này bảo vệ chống lại đệm cuộc tấn công tràn, bởi vì bạn đọc 668 00:32:56,950 --> 00:32:58,315 một nhân vật tại một thời điểm. 669 00:32:58,315 --> 00:33:02,290 Và nếu bất cứ lúc nào bạn đọc trong quá nhiều, bạn chỉ cần mở rộng bộ đệm của bạn. 670 00:33:02,290 --> 00:33:03,330 Bạn nhân nó bằng hai. 671 00:33:03,330 --> 00:33:05,510 Và sau đó bạn có nhiều phòng. 672 00:33:05,510 --> 00:33:09,120 >> Nếu không, bạn chỉ cần thêm một nhân vật để đệm. 673 00:33:09,120 --> 00:33:15,080 Và sau khi bạn đã đọc trong tất cả các ký tự, nó sẽ thu nhỏ đệm 674 00:33:15,080 --> 00:33:18,510 quay trở lại kích thước bình thường, thêm một kết thúc bởi null, và sau đó quay trở lại. 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 Bây giờ, chúng ta hãy nhìn vào getInt. 677 00:33:24,960 --> 00:33:27,700 Các bạn có thể đọc này? 678 00:33:27,700 --> 00:33:30,710 Tôi có thể phóng to một chút. 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 Tôi không biết làm thế nào máy tính làm việc. 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 Không sao đâu. 683 00:33:41,270 --> 00:33:42,520 Tôi không thể phóng to đúng. 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> Điều này thực sự là khó. 686 00:33:48,770 --> 00:33:49,180 Tôi xin lỗi. 687 00:33:49,180 --> 00:33:51,490 Chúng ta hãy nhìn vào điều này. 688 00:33:51,490 --> 00:33:57,140 Vì vậy, những gì getInt có phải là nó đầu tiên đọc trong một chuỗi từ GetString, mà 689 00:33:57,140 --> 00:33:59,250 chúng tôi đã thực hiện trước đây. 690 00:33:59,250 --> 00:34:02,945 Và một phần quan trọng cần lưu ý ở đây là nếu chia sẻ này mà nó kết thúc lên 691 00:34:02,945 --> 00:34:06,400 đọc cũng giống như không thực sự là một chuỗi, sau đó chúng tôi chỉ trả lại INT_MAX để 692 00:34:06,400 --> 00:34:09,409 đại diện cho thất bại. 693 00:34:09,409 --> 00:34:12,645 Tại sao chúng ta lại thay vì INT_MAX của âm 1 hay 1? 694 00:34:12,645 --> 00:34:13,895 Bất kỳ ý tưởng? 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> ĐỐI TƯỢNG: [nghe được] tiêu cực 1 trên một. 697 00:34:19,350 --> 00:34:20,070 >> ANGELA LI: Vâng, chính xác. 698 00:34:20,070 --> 00:34:24,560 Vì vậy bạn cách nhiều khả năng chỉ muốn nhập vào 1 hay tiêu cực 1 khi được nhắc 699 00:34:24,560 --> 00:34:27,469 cho một thứ n và bất cứ điều gì đạt cực đại thứ n. 700 00:34:27,469 --> 00:34:27,969 Nó là rất lớn. 701 00:34:27,969 --> 00:34:29,690 Có lẽ bạn đang không sử dụng nó. 702 00:34:29,690 --> 00:34:32,690 Vì vậy, điều này giống như một quyết định thiết kế để đảm bảo rằng bạn không vô tình 703 00:34:32,690 --> 00:34:38,540 trả lại một lỗi hoặc bạn không trở lại 1, mà có thể được phân tích 704 00:34:38,540 --> 00:34:41,199 như một câu trả lời chính xác. 705 00:34:41,199 --> 00:34:45,110 Vì vậy, nếu một dòng không tồn tại, chúng ta trở lại INT-MAX. 706 00:34:45,110 --> 00:34:48,090 Nếu không, chúng tôi sử dụng sscanf, mà là giống như scanf. 707 00:34:48,090 --> 00:34:49,449 Nhưng nó đọc từ một chuỗi. 708 00:34:49,449 --> 00:34:54,310 >> Và chúng tôi có định dạng này chuỗi, đó là% i% c. 709 00:34:54,310 --> 00:34:57,440 Và chúng tôi cố gắng và kết hợp điều đó với bất cứ điều gì người sử dụng đã cho chúng tôi. 710 00:34:57,440 --> 00:35:01,420 Chúng tôi muốn số lượng rất phù hợp với là 1, có nghĩa là chúng ta chỉ 711 00:35:01,420 --> 00:35:04,940 thực sự muốn để phù hợp với một số nguyên bao quanh bởi có thể trắng 712 00:35:04,940 --> 00:35:06,840 không gian, có thể không. 713 00:35:06,840 --> 00:35:10,710 Trong trường hợp này, nếu bạn đặt trong một cái gì đó như thanh, thanh không phù hợp ở tất cả, 714 00:35:10,710 --> 00:35:14,400 vì cần có một số nguyên vào đầu. 715 00:35:14,400 --> 00:35:17,060 Vì vậy, không bao giờ quay sscan 0. 716 00:35:17,060 --> 00:35:19,640 Vì vậy, bạn không trở lại đó. 717 00:35:19,640 --> 00:35:23,850 >> Ngoài ra, nếu bạn đặt vào một cái gì đó như 1, 2, 3, A, B, C, phù hợp nhất 718 00:35:23,850 --> 00:35:27,180 cả hai số nguyên mà còn các nhân vật sau khi nó. 719 00:35:27,180 --> 00:35:29,990 Vì vậy, sscanf sẽ trở lại 2, cũng không phải là lý tưởng. 720 00:35:29,990 --> 00:35:34,620 Bạn không muốn 1, 2, 3, A, B, C là một int hợp lệ. 721 00:35:34,620 --> 00:35:36,990 Vì vậy, đó cũng không làm việc. 722 00:35:36,990 --> 00:35:38,530 Nhưng nói rằng bạn đặt trong một cái gì đó giống như 50. 723 00:35:38,530 --> 00:35:42,460 Điều đó sẽ phù hợp với% i, có nghĩa là nó sẽ được đọc vào n. 724 00:35:42,460 --> 00:35:44,790 Và bây giờ, n sẽ chứa số 50. 725 00:35:44,790 --> 00:35:46,110 Và sau đó bạn có thể trả lại. 726 00:35:46,110 --> 00:35:49,270 >> Nếu không, bạn nhấn Thử lại. 727 00:35:49,270 --> 00:35:55,790 Và sau đó nó chỉ đi qua một lần nữa cho đến khi bạn sẽ có được một đầu vào thích hợp từ người sử dụng. 728 00:35:55,790 --> 00:35:56,891 Bất kỳ câu hỏi về điều đó? 729 00:35:56,891 --> 00:36:02,182 >> ĐỐI TƯỢNG: Vì vậy, nếu bạn đã in ra giá trị của getInt trên [nghe được] 730 00:36:02,182 --> 00:36:06,250 nó sẽ là chỉ số nguyên và tối đa? 731 00:36:06,250 --> 00:36:07,440 >> ANGELA LI: Vâng. 732 00:36:07,440 --> 00:36:11,780 Vì vậy, nếu bạn sử dụng getInt, bạn nên cho mà bạn không muốn tối đa thứ n đến 733 00:36:11,780 --> 00:36:15,328 là một đầu vào có giá trị, bởi vì bạn sẽ cho rằng đó là xấu. 734 00:36:15,328 --> 00:36:27,740 >> ĐỐI TƯỢNG: Nếu chúng tôi không có char c và ai đó đặt trong 1, 2, 3, Sam, phải không 735 00:36:27,740 --> 00:36:29,430 vẫn còn làm việc cho 1, 2, 3? 736 00:36:29,430 --> 00:36:29,750 >> ANGELA LI: Tôi nghĩ rằng nó sẽ làm việc. 737 00:36:29,750 --> 00:36:33,340 Nhưng bạn không muốn để 123Sam là một đầu vào hợp lệ bởi một người dùng. 738 00:36:33,340 --> 00:36:34,670 Đó không phải là thực sự là một int. 739 00:36:34,670 --> 00:36:36,840 Vì vậy, nó không có vẻ không công bằng để phân tích nó như một int. 740 00:36:36,840 --> 00:36:40,910 741 00:36:40,910 --> 00:36:42,160 OK. 742 00:36:42,160 --> 00:36:45,800 Trong trường hợp đó, chúng ta hãy di chuyển của trên internet. 743 00:36:45,800 --> 00:36:49,120 Vì vậy, HTTP không phải là một ngôn ngữ. 744 00:36:49,120 --> 00:36:56,060 HTTP chỉ là bộ tiêu chuẩn cho làm thế nào bạn gửi những điều từ khách hàng, 745 00:36:56,060 --> 00:36:57,280 đó là bạn, đến các máy chủ. 746 00:36:57,280 --> 00:36:59,730 Đó là những người khác trên web. 747 00:36:59,730 --> 00:37:02,900 >> Vì vậy, HTTP là viết tắt của Hypertext Transfer Protocol. 748 00:37:02,900 --> 00:37:04,610 Đó là trái tim và linh hồn của toàn bộ trang web. 749 00:37:04,610 --> 00:37:07,050 Phần siêu văn bản chỉ đề cập đến HTML. 750 00:37:07,050 --> 00:37:10,690 Việc chuyển giao là các khách hàng như bạn sẽ gửi yêu cầu tới 751 00:37:10,690 --> 00:37:13,060 máy chủ, trong đó cung cấp câu trả lời. 752 00:37:13,060 --> 00:37:16,380 Và giao thức chỉ là, làm thế nào bạn mong đợi một máy chủ để xử? 753 00:37:16,380 --> 00:37:19,960 Và làm thế nào bạn có nghĩa vụ phải hành xử như vậy mà bạn có thể sắp xếp này 754 00:37:19,960 --> 00:37:21,920 quá trình giao tiếp? 755 00:37:21,920 --> 00:37:26,650 >> Vì vậy, các yêu cầu HTTP trông rất giống này. 756 00:37:26,650 --> 00:37:28,070 GET là loại yêu cầu. 757 00:37:28,070 --> 00:37:31,220 Các bạn đã thấy yêu cầu GET và yêu cầu POST. 758 00:37:31,220 --> 00:37:36,690 Đó là điều thứ hai có, / tôi, đó là chỉ URI hoặc URL của nơi bạn 759 00:37:36,690 --> 00:37:38,140 muốn đi trong máy chủ. 760 00:37:38,140 --> 00:37:44,140 Vì vậy, yêu cầu này là yêu cầu cho các trang, giống như www.facebook.com / tôi. 761 00:37:44,140 --> 00:37:45,300 Và đó là một yêu cầu GET. 762 00:37:45,300 --> 00:37:51,020 Và sau đó HTTP/1.1 này, đó chỉ là các phiên bản của HTTP bạn đang sử dụng. 763 00:37:51,020 --> 00:37:55,020 Nó hầu như luôn luôn 1.1. 764 00:37:55,020 --> 00:37:56,880 >> Và sau đó có một loạt thứ khác quá. 765 00:37:56,880 --> 00:38:02,510 Bạn thực sự có thể nhìn thấy những nếu bạn mở giao diện điều khiển của bạn khi bạn 766 00:38:02,510 --> 00:38:03,770 duyệt web. 767 00:38:03,770 --> 00:38:07,290 Phản ứng giống hơn như thế này. 768 00:38:07,290 --> 00:38:09,620 Phần trên là, một lần nữa, loại HTTP bạn đang sử dụng 769 00:38:09,620 --> 00:38:12,310 theo sau là một mã trạng thái. 770 00:38:12,310 --> 00:38:14,700 Vì vậy, 200 OK là tất cả mọi thứ làm việc ra. 771 00:38:14,700 --> 00:38:16,200 Dưới đây là nội dung của bạn. 772 00:38:16,200 --> 00:38:17,390 Nội dung của bạn sẽ làm theo. 773 00:38:17,390 --> 00:38:21,730 Và sau đó nó sẽ cho bạn biết những gì loại nội dung và các công cụ khác nữa. 774 00:38:21,730 --> 00:38:24,620 >> Các mã trạng thái, có một vài những người quan trọng mà bạn nên biết. 775 00:38:24,620 --> 00:38:26,460 200 OK giống như tất cả mọi thứ của vàng. 776 00:38:26,460 --> 00:38:28,490 Tất cả mọi thứ hoạt động. 777 00:38:28,490 --> 00:38:29,710 403 Forbidden. 778 00:38:29,710 --> 00:38:32,910 Này bạn đã có thể nhìn thấy nếu bạn quên chmod cái gì đó đúng. 779 00:38:32,910 --> 00:38:34,510 Nó có nghĩa là bạn không có đủ quyền hạn để 780 00:38:34,510 --> 00:38:36,210 truy cập mà trên máy chủ. 781 00:38:36,210 --> 00:38:38,110 Nó giống như, không có, bạn có thể không nhìn thấy nó. 782 00:38:38,110 --> 00:38:39,780 404 có nghĩa là điều đó không tồn tại. 783 00:38:39,780 --> 00:38:40,400 Không tìm thấy. 784 00:38:40,400 --> 00:38:41,640 Bạn đã có thể thấy rằng rất nhiều. 785 00:38:41,640 --> 00:38:45,510 >> 500 Internal Server Error thường như một cái gì đó đã đi sai trên mặt 786 00:38:45,510 --> 00:38:46,460 của máy chủ. 787 00:38:46,460 --> 00:38:50,830 Vì vậy, khi bạn đã thực hiện pset7, nếu bạn đã có lỗi PHP, bạn có thể 788 00:38:50,830 --> 00:38:53,890 thực sự đi đến trang và thấy một bó toàn bộ các PHP lỗi công cụ. 789 00:38:53,890 --> 00:38:56,900 Nhưng điều đó không thường xảy ra, bởi vì các trang web không thực sự muốn 790 00:38:56,900 --> 00:38:58,830 nói cho bạn biết lý do tại sao trang web của họ bị phá vỡ. 791 00:38:58,830 --> 00:39:03,370 Họ sẽ có thể chỉ trả lại một 500 Internal Server Error. 792 00:39:03,370 --> 00:39:06,120 >> Và sau đó có 418 Tôi là một ấm trà. 793 00:39:06,120 --> 00:39:07,910 Có một câu chuyện về tại sao đó là một điều. 794 00:39:07,910 --> 00:39:09,860 Nhưng bạn có thể đọc về điều đó vào thời gian riêng của bạn. 795 00:39:09,860 --> 00:39:11,450 Có một bó toàn bộ mã trạng thái khác quá. 796 00:39:11,450 --> 00:39:12,700 Nhưng đó là những cái bạn nên biết. 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 Vì vậy, chúng ta hãy nói về HTML. 799 00:39:18,610 --> 00:39:22,180 HTML, hãy nhớ, không phải là một ngôn ngữ lập trình. 800 00:39:22,180 --> 00:39:23,510 Đó là một ngôn ngữ đánh dấu. 801 00:39:23,510 --> 00:39:25,210 Có nghĩa là nó mô tả nội dung. 802 00:39:25,210 --> 00:39:30,440 Nó sẽ cho bạn những gì một tài liệu HTML trông thích hoặc không phải những gì nó trông giống như 803 00:39:30,440 --> 00:39:32,230 nhưng làm thế nào nó có cấu trúc. 804 00:39:32,230 --> 00:39:36,110 >> Vì vậy, nó định nghĩa một cấu trúc và ngữ nghĩa của các trang web. 805 00:39:36,110 --> 00:39:37,830 Nó giống như, đây là một đoạn văn. 806 00:39:37,830 --> 00:39:40,060 Đây là một danh sách đặt hàng. 807 00:39:40,060 --> 00:39:42,360 Điều này giống như một phần của trang web của tôi. 808 00:39:42,360 --> 00:39:43,260 Đây là tiêu đề. 809 00:39:43,260 --> 00:39:44,310 Nó công cụ như thế. 810 00:39:44,310 --> 00:39:48,770 Nó không phong cách nào đó, bởi vì đó là những gì bạn làm trong CSS. 811 00:39:48,770 --> 00:39:50,270 Và có vẻ như một loạt thẻ lồng nhau. 812 00:39:50,270 --> 00:39:54,720 Vì vậy, để sử dụng một ví dụ về một thực sự cơ bản Trang HTML, bạn có DOCTYPE 813 00:39:54,720 --> 00:39:56,720 khai trên đó. 814 00:39:56,720 --> 00:40:00,940 >> Khai báo DOCTYPE này là nói, chúng tôi đang sử dụng HTML5. 815 00:40:00,940 --> 00:40:03,370 Sau đó, bạn có thẻ HTML lớn. 816 00:40:03,370 --> 00:40:05,230 Nó chứa một cái đầu và một cơ thể. 817 00:40:05,230 --> 00:40:06,970 Bên trong đầu, bạn có tiêu đề. 818 00:40:06,970 --> 00:40:12,950 Đó là những gì diễn ra trong tiêu đề thanh của trình duyệt. 819 00:40:12,950 --> 00:40:15,810 Chúng tôi có một thẻ liên kết liên kết trong một sheet bên ngoài. 820 00:40:15,810 --> 00:40:19,880 Và sau đó chúng tôi có một kịch bản mà kéo từ một JavaScript bên ngoài là tốt. 821 00:40:19,880 --> 00:40:23,750 >> Và sau đó bên trong cơ thể của chúng tôi là thực sự những gì được hiển thị trên trang. 822 00:40:23,750 --> 00:40:28,210 Chúng tôi đã có một đoạn văn và sau đó một hình ảnh bên trong đoạn đó. 823 00:40:28,210 --> 00:40:32,000 Điều này là một hình ảnh của mèo con. 824 00:40:32,000 --> 00:40:35,840 Nhận thấy rằng các hình ảnh tag đóng cửa của chính nó. 825 00:40:35,840 --> 00:40:41,760 Vì vậy, thay vì mở với một hình ảnh và sau đó làm một / hình ảnh, bạn 826 00:40:41,760 --> 00:40:47,500 chỉ có dấu gạch chéo này ít ở đây, mà đóng nó. 827 00:40:47,500 --> 00:40:53,670 Và các thẻ hình ảnh cũng có phím này thuộc tính giá trị gọi là alt. 828 00:40:53,670 --> 00:40:56,970 Đó là văn bản thay thế xảy ra khi bạn di chuột qua nó. 829 00:40:56,970 --> 00:41:03,170 >> Hầu hết các phần tử HTML có một số giá trị quan trọng những điều mà bạn có thể cung cấp cho nó, khác nhau 830 00:41:03,170 --> 00:41:04,420 tuỳ biến. 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 Yeah. 833 00:41:08,705 --> 00:41:09,955 >> ĐỐI TƯỢNG: [nghe được]. 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> ANGELA LI: Vâng, vì vậy nó là một thuộc tính của thẻ. 836 00:41:19,680 --> 00:41:25,320 Vì vậy, nếu bạn đang sử dụng jQuery, bạn có thể làm image.getAttribute chọn. 837 00:41:25,320 --> 00:41:27,930 Và sau đó bạn có thể tìm kiếm có được thuộc tính alt. 838 00:41:27,930 --> 00:41:31,040 Và nó sẽ cung cấp cho bạn mèo con. 839 00:41:31,040 --> 00:41:37,400 Nếu bạn nhớ các hình thức trong HTML, đầu vào yếu tố này sẽ có các thuộc tính tên. 840 00:41:37,400 --> 00:41:41,870 Và đó là những gì PHP sử dụng để gửi các yêu cầu khi một mẫu được gửi. 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> ĐỐI TƯỢNG: Bạn đã đề cập đến một cái gì đó về làm thế nào nếu bạn sử dụng hoặc kittens.jpg 843 00:41:50,064 --> 00:41:54,410 cái gì mà có người mất tích nộp thư mục hoặc tập tin khác? 844 00:41:54,410 --> 00:41:54,750 >> ANGELA LI: Có. 845 00:41:54,750 --> 00:41:57,010 Vì vậy, đây là những gì được gọi là một người thân con đường, bởi vì tôi không cho 846 00:41:57,010 --> 00:41:58,740 bạn đường dẫn đầy đủ. 847 00:41:58,740 --> 00:42:05,160 Điều này giống như khi trong C nếu bạn làm fopen một số tập tin, nếu bạn hi.txt fopen, mà 848 00:42:05,160 --> 00:42:09,190 hi.txt dự kiến ​​sẽ được trong cùng một thư mục, trừ khi bạn cung cấp cho nó một nhiều hơn 849 00:42:09,190 --> 00:42:11,530 con đường phức tạp. 850 00:42:11,530 --> 00:42:14,900 >> ĐỐI TƯỢNG: Vì vậy, bạn có thể chỉ định mà thư mục [nghe được]? 851 00:42:14,900 --> 00:42:17,660 >> ANGELA LI: Vâng. 852 00:42:17,660 --> 00:42:19,370 Và bạn có thể tìm cách để làm điều đó. 853 00:42:19,370 --> 00:42:23,480 Nhưng nếu tôi muốn có được kittens.jpg ra của thư mục cha, tôi sẽ làm 854 00:42:23,480 --> 00:42:24,730 .. / Kittens.jpg. 855 00:42:24,730 --> 00:42:29,680 856 00:42:29,680 --> 00:42:30,930 Yeah. 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 Xin lôi. 859 00:42:33,760 --> 00:42:34,045 Yeah. 860 00:42:34,045 --> 00:42:35,700 Ôi trời, tôi quên câu hỏi. 861 00:42:35,700 --> 00:42:36,460 Câu hỏi là gì? 862 00:42:36,460 --> 00:42:39,570 Oh, câu hỏi là là, kittens.jpg dự kiến ​​sẽ được trong cùng một thư mục? 863 00:42:39,570 --> 00:42:40,630 Và trong trường hợp này, nó được. 864 00:42:40,630 --> 00:42:44,030 Nhưng bạn cũng có thể cung cấp cho nó một con đường nhất định như vậy mà nó không có được. 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 Tốt? 867 00:42:48,350 --> 00:42:50,190 868 00:42:50,190 --> 00:42:51,350 >> CSS. 869 00:42:51,350 --> 00:42:55,420 Vì vậy, CSS, như HTML, không phải là một ngôn ngữ lập trình. 870 00:42:55,420 --> 00:42:58,250 CSS chỉ là một loạt các quy tắc phong cách. 871 00:42:58,250 --> 00:43:00,130 Nó là viết tắt của Cascading Style Sheets. 872 00:43:00,130 --> 00:43:03,910 Và bạn sử dụng nó kết hợp với HTML để trang phong cách. 873 00:43:03,910 --> 00:43:08,140 Vì vậy, có ba cách bạn có thể bao gồm nó. 874 00:43:08,140 --> 00:43:11,950 Một cách để bạn có thể làm điều đó là vào đầu phần HTML của bạn, bạn có thể chỉ 875 00:43:11,950 --> 00:43:15,410 mở một thẻ phong cách và sau đó dính một số CSS quy tắc trong đó. 876 00:43:15,410 --> 00:43:16,759 Nó khá OK. 877 00:43:16,759 --> 00:43:17,228 Yeah. 878 00:43:17,228 --> 00:43:21,449 >> ĐỐI TƯỢNG: bạn có thể đặt những thẻ phong cách ở giữa, chúng ta hãy 879 00:43:21,449 --> 00:43:22,860 nói, cơ thể và / cơ thể. 880 00:43:22,860 --> 00:43:27,400 Và sau đó bạn sẽ có phong cách chỉ trong cơ thể. 881 00:43:27,400 --> 00:43:28,840 >> ANGELA LI: Bạn có thể. 882 00:43:28,840 --> 00:43:29,590 Nó sẽ làm việc. 883 00:43:29,590 --> 00:43:33,990 Nhưng bạn không nên, bởi vì phong cách là loại siêu dữ liệu mà cần đi 884 00:43:33,990 --> 00:43:35,890 người đứng đầu của tài liệu của bạn. 885 00:43:35,890 --> 00:43:38,280 Cơ thể nên thực sự chỉ chứa những gì đang thực sự đi vào 886 00:43:38,280 --> 00:43:39,420 hiển thị trên trang của bạn. 887 00:43:39,420 --> 00:43:42,155 >> ĐỐI TƯỢNG: Vì vậy, bạn muốn đặt phong cách trong đầu của bạn để tạo kiểu cho 888 00:43:42,155 --> 00:43:43,930 toàn bộ trang web, phải không? 889 00:43:43,930 --> 00:43:44,300 >> ANGELA LI: Vâng. 890 00:43:44,300 --> 00:43:50,470 Vì vậy, việc đưa phong cách ở đây, các quy tắc CSS sẽ áp dụng cho toàn bộ trang dựa trên 891 00:43:50,470 --> 00:43:52,100 bộ chọn của họ. 892 00:43:52,100 --> 00:43:57,090 Vì vậy, cách tốt hơn để làm điều đó là thay vì của việc có một từ khóa phong cách trong đầu của bạn, 893 00:43:57,090 --> 00:44:00,430 bạn có liên kết này để một phong cách bên ngoài tờ như tôi đã giới thiệu trong các 894 00:44:00,430 --> 00:44:01,980 ví dụ trước. 895 00:44:01,980 --> 00:44:05,920 Điều này không là nó sẽ cố gắng và tìm thấy nộp style.css và sau đó kéo nó 896 00:44:05,920 --> 00:44:08,470 và sử dụng đó như là phong cách cho trang. 897 00:44:08,470 --> 00:44:10,500 Và style.css của bạn sẽ chỉ cần nhìn như thế này. 898 00:44:10,500 --> 00:44:13,330 Nó sẽ chỉ được một loạt các CSS. 899 00:44:13,330 --> 00:44:16,210 >> Và cuối cùng, có một cách khác bạn có thể bao gồm CSS, mà bạn thực sự 900 00:44:16,210 --> 00:44:17,480 không bao giờ nên làm. 901 00:44:17,480 --> 00:44:18,950 Đó là phong cách nội tuyến cuộc gọi. 902 00:44:18,950 --> 00:44:22,650 Và vì vậy bất kỳ phần tử HTML cũng có thể có một thuộc tính phong cách. 903 00:44:22,650 --> 00:44:26,320 Và sau đó trong đó thuộc tính phong cách, bạn có thể cung cấp cho nó những nguyên tắc CSS. 904 00:44:26,320 --> 00:44:29,140 Vì vậy, trong trường hợp này, bất cứ điều gì div tôi xác định ngay tại đây, nó sẽ 905 00:44:29,140 --> 00:44:32,580 có một nền đen và một màu sắc văn bản màu trắng. 906 00:44:32,580 --> 00:44:35,620 Nhưng bạn không nên làm điều này, bởi vì những gì điều này là nó đặt phong cách của bạn 907 00:44:35,620 --> 00:44:36,850 trong HTML của bạn. 908 00:44:36,850 --> 00:44:40,530 >> Và tôi biết chúng tôi đã nói về HTML là cấu trúc và CSS là phong cách. 909 00:44:40,530 --> 00:44:42,790 Nếu bạn làm điều này, nó hỗn hợp chúng lại với nhau. 910 00:44:42,790 --> 00:44:44,550 Và nó không phải rất sạch sẽ. 911 00:44:44,550 --> 00:44:45,800 Vì vậy, không làm điều đó. 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 Sử dụng một ví dụ về CSS, ở đó, chúng tôi chỉ cần chọn cơ thể của HTML 914 00:44:52,100 --> 00:44:52,380 phim tài liệu. 915 00:44:52,380 --> 00:44:55,110 Và chúng tôi như thế, tất cả mọi thứ của sẽ Comic Sans. 916 00:44:55,110 --> 00:44:57,290 Tôi cũng không khuyên. 917 00:44:57,290 --> 00:44:59,940 Nhưng bạn có thể làm điều đó. 918 00:44:59,940 --> 00:45:03,140 >> Nguyên tắc thứ hai ở đây, nó sẽ để lựa chọn các yếu tố trên 919 00:45:03,140 --> 00:45:04,880 trang với ID chính. 920 00:45:04,880 --> 00:45:11,690 Vì vậy, bất cứ điều gì HTML yếu tố, tôi đã nói ID = Chính, tôi sẽ cho rằng một 921 00:45:11,690 --> 00:45:16,020 Tỷ suất lợi nhuận 20-pixel và sắp xếp tất cả mọi thứ, tất cả các văn bản, đến trung tâm. 922 00:45:16,020 --> 00:45:19,030 Điều cuối cùng lựa chọn bởi lớp CSS. 923 00:45:19,030 --> 00:45:24,450 Vì vậy, bất kỳ yếu tố trên trang mà tôi đã một lớp học phần, tôi sẽ làm cho nó 924 00:45:24,450 --> 00:45:26,602 một màu nền ánh sáng màu xanh. 925 00:45:26,602 --> 00:45:29,380 926 00:45:29,380 --> 00:45:30,040 Vâng. 927 00:45:30,040 --> 00:45:30,700 Đó là tất cả tôi có. 928 00:45:30,700 --> 00:45:30,890 Câu hỏi? 929 00:45:30,890 --> 00:45:34,020 >> ĐỐI TƯỢNG: Gì hashtag trước khi chính làm gì? 930 00:45:34,020 --> 00:45:36,310 >> ANGELA LI: Câu hỏi đặt ra là, những gì hiện hashtag trước khi làm chính? 931 00:45:36,310 --> 00:45:40,770 Trong trường hợp này, băm trong CSS có nghĩa là chọn bởi ID. 932 00:45:40,770 --> 00:45:47,490 Vì vậy, nếu tôi đã có một số phần tử HTML, như divid = chính, CSS này selects quy tắc 933 00:45:47,490 --> 00:45:49,260 điều với ID chính. 934 00:45:49,260 --> 00:45:53,940 Và tương tự, thời gian ở phía trước phần là chọn bởi lớp CSS hay 935 00:45:53,940 --> 00:45:56,558 chọn bởi lớp HTML. 936 00:45:56,558 --> 00:46:00,940 >> ĐỐI TƯỢNG: Tại sao lại có có trước 6 trong màu nền? 937 00:46:00,940 --> 00:46:01,270 >> ANGELA LI: Vâng. 938 00:46:01,270 --> 00:46:03,360 Vì vậy, câu hỏi là, tại sao lại có băm trước 6? 939 00:46:03,360 --> 00:46:05,320 Điều này khác với băm. 940 00:46:05,320 --> 00:46:09,500 Điều này có nghĩa rằng bạn đang đưa ra một màu thập lục phân. 941 00:46:09,500 --> 00:46:14,260 Màu sắc để hex, điều này chỉ đại diện cho một màu sắc. 942 00:46:14,260 --> 00:46:17,860 Và bạn nhớ RGB gấp ba khi bạn đã làm pháp y pset? 943 00:46:17,860 --> 00:46:18,770 Điều này tương tự. 944 00:46:18,770 --> 00:46:21,590 Hai chữ số đầu tiên đại diện cho bao nhiêu màu đỏ là ở màu sắc. 945 00:46:21,590 --> 00:46:23,260 Thứ hai đại diện cho hai bao nhiêu màu xanh lá cây. 946 00:46:23,260 --> 00:46:25,450 Và thứ ba đại diện cho bao nhiêu màu xanh. 947 00:46:25,450 --> 00:46:30,060 Và băm là điều này sẽ đại diện cho một màu sắc. 948 00:46:30,060 --> 00:46:35,660 >> Vì vậy, bất cứ điều gì từ 0, 0, 0, 0, 0, 0 lên đến F, F, F, F, F, F là hợp lệ. 949 00:46:35,660 --> 00:46:39,550 Đó là một số màu sắc hợp lệ mà có thể được hiển thị bởi trình duyệt của bạn. 950 00:46:39,550 --> 00:46:39,790 Câu hỏi? 951 00:46:39,790 --> 00:46:43,590 >> ĐỐI TƯỢNG: Sự khác nhau giữa là gì sử dụng bằng ID và lớp học? 952 00:46:43,590 --> 00:46:46,470 >> ANGELA LI: Câu hỏi là gì sự khác biệt giữa 953 00:46:46,470 --> 00:46:48,950 sử dụng bằng ID và lớp học? 954 00:46:48,950 --> 00:46:54,390 Bạn chỉ có thể có một phần tử trong một Tài liệu HTML mà có một ID nhất định. 955 00:46:54,390 --> 00:46:58,660 Vì vậy, chỉ có một điều trên trang của tôi được phép có ID chính. 956 00:46:58,660 --> 00:47:02,580 Vì vậy, bạn sử dụng nó cho việc này là tiêu đề. 957 00:47:02,580 --> 00:47:03,850 Đây là định hướng. 958 00:47:03,850 --> 00:47:05,230 Đây là chân. 959 00:47:05,230 --> 00:47:09,070 Các lớp học khác nhau, bởi vì bạn có thể áp dụng các lớp học là nhiều yếu tố HTML 960 00:47:09,070 --> 00:47:10,100 như bạn muốn. 961 00:47:10,100 --> 00:47:15,860 >> Vì vậy, ví dụ, tôi đã làm phần lớp, bởi vì có thể nhiều hơn một 962 00:47:15,860 --> 00:47:17,540 phần trên trang của mình. 963 00:47:17,540 --> 00:47:20,200 Bạn chỉ được phép có nhiều yếu tố trên trang với cùng 964 00:47:20,200 --> 00:47:23,190 lớp nhưng chỉ có một với một ID nhất định. 965 00:47:23,190 --> 00:47:25,600 >> ĐỐI TƯỢNG: Vì vậy, các dấu chấm đại diện cho các lớp học? 966 00:47:25,600 --> 00:47:26,090 >> ANGELA LI: Vâng. 967 00:47:26,090 --> 00:47:27,380 Một dấu chấm đại diện cho một lớp học. 968 00:47:27,380 --> 00:47:29,990 969 00:47:29,990 --> 00:47:31,540 Mát mẻ. 970 00:47:31,540 --> 00:47:32,370 Đó là tất cả tôi đã có, các cậu. 971 00:47:32,370 --> 00:47:33,544 Cảm ơn bạn. 972 00:47:33,544 --> 00:48:13,380 >> [Vỗ tay] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA CHAN: Hi, tất cả mọi người. 974 00:48:14,290 --> 00:48:14,880 Tôi Zamyla. 975 00:48:14,880 --> 00:48:18,830 Tôi sẽ được bao gồm PHP, MVC, và SQL hôm nay. 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 Rất nhiều các tài liệu mà tôi sẽ phủ là có được khá nhiều 978 00:48:26,110 --> 00:48:29,100 phải ra khỏi pset7. 979 00:48:29,100 --> 00:48:29,700 Được rồi. 980 00:48:29,700 --> 00:48:31,180 Vì vậy, PHP là gì? 981 00:48:31,180 --> 00:48:35,150 PHP là viết tắt của PHP Hypertext Tiền xử lý. 982 00:48:35,150 --> 00:48:38,740 Vì vậy, nó, tự nó, là một đệ quy tên, mà là khá mát mẻ. 983 00:48:38,740 --> 00:48:42,220 PHP là một ngôn ngữ kịch bản phía máy chủ, và nó cung cấp phụ trợ 984 00:48:42,220 --> 00:48:44,610 và nền tảng hợp lý của trang web của chúng tôi. 985 00:48:44,610 --> 00:48:48,520 >> Vì vậy, Angela đã nói rất nhiều về HTML và CSS mà sẽ làm cho cấu trúc 986 00:48:48,520 --> 00:48:49,530 của trang web. 987 00:48:49,530 --> 00:48:53,210 Nhưng nếu bạn muốn thay đổi điều đó nội dung tự động hoặc nếu nó thay đổi 988 00:48:53,210 --> 00:48:55,240 dựa vào người sử dụng hoặc một số điều kiện? 989 00:48:55,240 --> 00:48:57,060 Đó là nơi mà PHP có in 990 00:48:57,060 --> 00:49:02,610 Bây giờ, thông thường, PHP có thể mất một vài đường ít hơn để thực hiện điều tương tự 991 00:49:02,610 --> 00:49:07,380 C. Đó là bởi vì PHP xử lý bộ nhớ quản lý cho các lập trình viên, 992 00:49:07,380 --> 00:49:11,170 như trái ngược với chúng ta phải malloc miễn phí, những thứ như thế. 993 00:49:11,170 --> 00:49:15,430 >> Nhưng vì PHP là một nghệ thuật trình diễn ngôn ngữ, thông thường, nó có thể thực hiện 994 00:49:15,430 --> 00:49:19,540 chậm hơn một chút so với C, là một ngôn ngữ biên soạn. 995 00:49:19,540 --> 00:49:23,150 Bởi vì chúng tôi đang di chuyển lập trình ngôn ngữ, chúng ta hãy xem làm thế nào các 996 00:49:23,150 --> 00:49:24,570 cú pháp sẽ khác nhau. 997 00:49:24,570 --> 00:49:28,770 Hãy rất cẩn thận không để bị lẫn lộn với điều này. 998 00:49:28,770 --> 00:49:33,750 Vì vậy, với cú pháp PHP, cho dù bạn là nhúng PHP của bạn bên trong một HTML 999 00:49:33,750 --> 00:49:40,430 file hoặc trong một tập tin php. chính nó, bạn cần phải kèm theo mã trong mở 1000 00:49:40,430 --> 00:49:45,270 PHP và các thẻ PHP đóng như sau, giống như trên màn hình. 1001 00:49:45,270 --> 00:49:46,660 >> Biến trong PHP. 1002 00:49:46,660 --> 00:49:51,490 Mỗi biến duy nhất sẽ bắt đầu với ký hiệu $ theo sau là tên của 1003 00:49:51,490 --> 00:49:53,150 biến của bạn. 1004 00:49:53,150 --> 00:49:56,530 Bây giờ, các biến trong PHP được lỏng lẻo, có nghĩa là bạn không cần 1005 00:49:56,530 --> 00:50:00,030 để chỉ ra những kiểu dữ liệu là khi bạn khai báo nó. 1006 00:50:00,030 --> 00:50:03,505 Tuy nhiên, điều này không có nghĩa là họ không có bất kỳ loại ở tất cả. 1007 00:50:03,505 --> 00:50:09,370 Vì vậy, nếu tôi khai báo một biến và chỉ cần đặt nó bằng 1, và sau đó tôi tuyên bố 1008 00:50:09,370 --> 00:50:15,140 biến khác, thiết lập nó bằng "1" và sau đó một số khác 1.0, tốt, 1009 00:50:15,140 --> 00:50:19,410 tùy thuộc vào loại bình đẳng khai thác sử dụng tôi, nếu tôi muốn so sánh 1010 00:50:19,410 --> 00:50:21,830 trên tất cả các loại, sau đó họ sẽ được bình đẳng. 1011 00:50:21,830 --> 00:50:25,570 Nhưng nếu tôi muốn đảm bảo rằng các loại bằng nhau, PHP vẫn có thể làm 1012 00:50:25,570 --> 00:50:28,690 rằng, mặc dù chúng tôi không chỉ loại đó là khi chúng tôi 1013 00:50:28,690 --> 00:50:31,170 đầu tiên làm cho các tập tin. 1014 00:50:31,170 --> 00:50:33,990 >> Bây giờ, trong PHP, mặc dù chúng tôi chuyển qua từ lập trình 1015 00:50:33,990 --> 00:50:39,360 ngôn ngữ từ C, chúng ta vẫn phải của chúng tôi đáng tin cậy nếu điều kiện, chỉ cần như thế này. 1016 00:50:39,360 --> 00:50:43,270 Chúng ta vẫn còn vòng trong khi của chúng tôi, chỉ cần như thế này, nơi mà bạn đặt trong của bạn 1017 00:50:43,270 --> 00:50:47,300 điều kiện và sau đó cơ thể của vòng lặp. 1018 00:50:47,300 --> 00:50:50,360 Và sau đó chúng tôi cũng có của chúng tôi cho vòng lặp, mà thường trông như thế này. 1019 00:50:50,360 --> 00:50:55,330 Vì vậy, nếu tôi muốn lặp qua tất cả chín psets trình và gọi một 1020 00:50:55,330 --> 00:50:58,960 chức năng submitPset, sau đó tôi có thể làm điều đó ở đây, mà các bạn đã tất cả 1021 00:50:58,960 --> 00:50:59,830 thực hiện bởi thời điểm này. 1022 00:50:59,830 --> 00:51:01,080 Xin chúc mừng, bằng cách này. 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> Cho máy ảnh, người cho biết, cảm ơn bạn. 1025 00:51:07,550 --> 00:51:11,220 Bây giờ, nếu bạn không muốn chỉ cần sử dụng này cho vòng lặp, sau đó PHP thực sự cũng 1026 00:51:11,220 --> 00:51:13,580 đã điều được gọi là vòng lặp foreach. 1027 00:51:13,580 --> 00:51:22,210 Vì vậy, nếu tôi đã có một mảng các số nguyên, 0 thông qua 8, lưu trữ trong psets mảng, 1028 00:51:22,210 --> 00:51:27,290 sau đó tôi có thể có một vòng lặp foreach lặp trên tất cả các số trong psets. 1029 00:51:27,290 --> 00:51:30,640 Và sau đó tôi có thể gọi cùng hoạt động tám lần, 1030 00:51:30,640 --> 00:51:31,910 giống như tôi đã làm trước đây. 1031 00:51:31,910 --> 00:51:36,480 Vì vậy, điều này cho mỗi vòng lặp là tốt đẹp, bởi vì bạn không phải nếu bạn không biết 1032 00:51:36,480 --> 00:51:39,470 chiều dài chính xác của mảng mà bạn đã, sau đó sử dụng vòng lặp foreach này 1033 00:51:39,470 --> 00:51:42,800 sẽ chăm sóc cho bạn. 1034 00:51:42,800 --> 00:51:45,410 >> Vì vậy, tôi đã psets như là một mảng. 1035 00:51:45,410 --> 00:51:46,700 Chúng ta hãy nhìn vào đó. 1036 00:51:46,700 --> 00:51:51,290 Mảng trong PHP thường giống như những người mà chúng tôi đã có trong C, nơi 1037 00:51:51,290 --> 00:51:52,960 bạn có thể khai báo một mảng. 1038 00:51:52,960 --> 00:51:59,200 Và ở đây, tôi có thể khai báo một mảng trống và sau đó xây dựng tự động bằng cách sử dụng 1039 00:51:59,200 --> 00:52:00,850 chỉ số là số nguyên. 1040 00:52:00,850 --> 00:52:04,140 Vì vậy, chỉ số 0, tôi sẽ lưu trữ một số nguyên tên 1. 1041 00:52:04,140 --> 00:52:09,210 Tại chỉ số 1 trong danh sách của tôi, tôi sẽ để lưu trữ các giá trị 2. 1042 00:52:09,210 --> 00:52:12,670 Và chỉ số thứ ba nhưng số thứ hai, tôi sẽ 1043 00:52:12,670 --> 00:52:14,870 lưu trữ các số 12. 1044 00:52:14,870 --> 00:52:17,250 >> Bây giờ, điều này là tốt trong đó hoạt động nó hoạt động tốt. 1045 00:52:17,250 --> 00:52:21,310 Nhưng nói rằng nó quan trọng đối với tôi những gì mỗi chỉ số nắm giữ. 1046 00:52:21,310 --> 00:52:24,500 Đối với tôi, chỉ số 0 có nghĩa là như thế nào nhiều mèo tôi có. 1047 00:52:24,500 --> 00:52:27,400 Và chỉ số 1 có nghĩa là như thế nào nhiều cú tôi có. 1048 00:52:27,400 --> 00:52:29,450 Và kế tiếp là bao nhiêu con chó. 1049 00:52:29,450 --> 00:52:34,140 Vâng, sau đó nó để xác định rằng, thay vì phải nhớ 0 liên quan đến 1050 00:52:34,140 --> 00:52:38,090 mèo và 1 con cú, tôi có thể sử dụng mảng kết hợp, có nghĩa là 1051 00:52:38,090 --> 00:52:42,260 thay vì các số nguyên như chỉ số của tôi, Tôi thực sự có thể sử dụng dây. 1052 00:52:42,260 --> 00:52:43,290 >> Vì vậy, đây là khá hữu ích. 1053 00:52:43,290 --> 00:52:47,130 Và bạn đã cơ bản chỉ thay thế các số nguyên với chuỗi. 1054 00:52:47,130 --> 00:52:50,074 Và bạn đã có một mảng kết hợp. 1055 00:52:50,074 --> 00:52:51,930 Yeah. 1056 00:52:51,930 --> 00:52:55,800 >> ĐỐI TƯỢNG: Có một lý do tại sao có một gạch dưới cho phần thứ hai 1057 00:52:55,800 --> 00:52:58,750 một phần, bởi vì danh sách của tôi có mảng. 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA CHAN: Câu hỏi là, là Có một lý do tại sao có một 1059 00:53:01,330 --> 00:53:03,320 nhấn mạnh giữa và danh sách của tôi? 1060 00:53:03,320 --> 00:53:03,610 Không. 1061 00:53:03,610 --> 00:53:06,878 Đó chỉ là cách tôi đặt tên biến của tôi. 1062 00:53:06,878 --> 00:53:11,670 >> ĐỐI TƯỢNG: Ngày đầu tiên dòng, đó là một từ. 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA CHAN: lời xin lỗi của tôi. 1064 00:53:12,560 --> 00:53:13,410 Tôi sẽ khắc phục điều đó. 1065 00:53:13,410 --> 00:53:13,620 Yeah. 1066 00:53:13,620 --> 00:53:15,460 Họ sẽ có tên biến giống nhau. 1067 00:53:15,460 --> 00:53:16,710 Tốt bắt. 1068 00:53:16,710 --> 00:53:19,640 1069 00:53:19,640 --> 00:53:19,950 OK. 1070 00:53:19,950 --> 00:53:22,610 Vì vậy, chúng ta hãy chuyển sang chuỗi nối. 1071 00:53:22,610 --> 00:53:27,500 Nếu tôi muốn có hai dây, sau đó tôi có thể ghép chúng 1072 00:53:27,500 --> 00:53:28,550 với dấu chấm. 1073 00:53:28,550 --> 00:53:32,440 Vì vậy, nếu tôi có Milo như một tên đầu tiên và chuối như một tên cuối cùng, sau đó 1074 00:53:32,440 --> 00:53:35,430 ghép với các dấu chấm và sau đó đặt một không gian ở giữa 1075 00:53:35,430 --> 00:53:39,210 sẽ làm cho một chuỗi có chứa Milo Chuối, mà tôi sau đó có thể echo hay, 1076 00:53:39,210 --> 00:53:41,280 đúng hơn, in ra. 1077 00:53:41,280 --> 00:53:44,465 >> Nói về tiếng vang, chúng ta hãy nói về một vài hữu ích - 1078 00:53:44,465 --> 00:53:44,920 oops. 1079 00:53:44,920 --> 00:53:46,030 Tôi xin lỗi. 1080 00:53:46,030 --> 00:53:52,920 Một vài chức năng hữu ích PHP. 1081 00:53:52,920 --> 00:53:56,240 Vì vậy, chúng ta có - 1082 00:53:56,240 --> 00:53:57,444 khó khăn kỹ thuật. 1083 00:53:57,444 --> 00:53:58,694 Thứ hai. 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 Tôi đã gửi nó. 1086 00:54:19,550 --> 00:54:22,320 Vấn đề PowerPoint. 1087 00:54:22,320 --> 00:54:29,200 Và chúng tôi đang trở lại với chức năng PHP. 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 Và chúng tôi đang trở lại với chức năng PHP. 1090 00:54:35,150 --> 00:54:39,890 >> Vì vậy, chúng tôi đã yêu cầu chức năng, nơi nếu bạn vượt qua trong một tập tin, đây là chỉ là 1091 00:54:39,890 --> 00:54:43,300 một ví dụ của một tập tin Tôi có thể vượt qua in 1092 00:54:43,300 --> 00:54:47,605 Sau đó sẽ bao gồm mã PHP từ tập tin đó mà tôi biết. 1093 00:54:47,605 --> 00:54:49,940 Và nó sẽ đánh giá rằng in 1094 00:54:49,940 --> 00:54:54,450 Sau đó, chúng tôi cũng có tiếng vang, mà là một song song với printf. 1095 00:54:54,450 --> 00:54:57,710 Lối ra là một song song để phá vỡ, mà thoát ra khỏi khối 1096 00:54:57,710 --> 00:54:58,570 mã mà bạn đang nhập 1097 00:54:58,570 --> 00:55:03,180 Và sau đó kiểm tra xem một sản phẩm nào được biến giống như vô giá trị hoặc không có hoặc 1098 00:55:03,180 --> 00:55:08,482 bất cứ điều gì đánh đồng với sự trống rỗng. 1099 00:55:08,482 --> 00:55:09,438 Yeah. 1100 00:55:09,438 --> 00:55:15,341 >> ĐỐI TƯỢNG: Đối với các dây nối dấu chấm một, trong PHP, đó là 1101 00:55:15,341 --> 00:55:20,158 tương tự như trong JavaScript mà nó sử dụng dấu chấm cho nối có nghĩa là cộng? 1102 00:55:20,158 --> 00:55:27,440 Vì vậy, tên đầy đủ, bạn có thể có đô la đăng ký đầu tiên và sau đó + + cuối cùng? 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA CHAN: Vâng. 1104 00:55:27,720 --> 00:55:32,150 Vì vậy câu hỏi là liệu trong PHP, chúng tôi có thể sử dụng cùng một chuỗi nối 1105 00:55:32,150 --> 00:55:33,890 như trong JavaScript với Điểm cộng. 1106 00:55:33,890 --> 00:55:35,410 Và Joseph sẽ nhận được vào mà sau này. 1107 00:55:35,410 --> 00:55:36,620 Tôi nghĩ anh ấy có một slide trên đó. 1108 00:55:36,620 --> 00:55:37,570 Trên thực tế, đó là khác nhau. 1109 00:55:37,570 --> 00:55:41,310 Vì vậy, trong JavaScript, bạn cần phải sử dụng cộng để nối dây. 1110 00:55:41,310 --> 00:55:43,280 Và trong PHP, bạn phải sử dụng các dấu chấm. 1111 00:55:43,280 --> 00:55:44,530 Vì vậy, chúng khác nhau. 1112 00:55:44,530 --> 00:55:46,680 1113 00:55:46,680 --> 00:55:46,910 >> OK. 1114 00:55:46,910 --> 00:55:49,500 Vì vậy, bây giờ mà chúng tôi đã bao phủ tất cả PHP này, nơi nào nó 1115 00:55:49,500 --> 00:55:50,490 thực sự có ích? 1116 00:55:50,490 --> 00:55:54,470 Vâng, nó có ích khi chúng ta có thể kết hợp nó với HTML. 1117 00:55:54,470 --> 00:55:59,550 Vì vậy, PHP của chúng tôi sẽ cung cấp cho chúng ta sức mạnh để thay đổi nội dung HTML của trang trước 1118 00:55:59,550 --> 00:56:00,000 tải của nó. 1119 00:56:00,000 --> 00:56:04,270 Vì vậy, dựa vào các điều kiện khác nhau, thường người sử dụng cụ thể đó là 1120 00:56:04,270 --> 00:56:07,520 đăng nhập, chúng tôi có thể hiển thị thông tin khác nhau. 1121 00:56:07,520 --> 00:56:08,800 Linda, anh có một câu hỏi? 1122 00:56:08,800 --> 00:56:15,510 >> ĐỐI TƯỢNG: Bạn có thể ghép một số nguyên cũng? 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA CHAN: Có, bạn có thể. 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 Vì vậy câu hỏi là nếu bạn có thể ghép các số nguyên hoặc khác 1126 00:56:23,270 --> 00:56:28,920 variable.s bây giờ, chúng ta chuyển sang MVC, mà là một mô hình mà chúng tôi sử dụng trong 1127 00:56:28,920 --> 00:56:33,380 pset7 và rất nhiều nhà thiết kế web sử dụng cho tổ chức các mã trong các tập tin 1128 00:56:33,380 --> 00:56:34,490 trong trang web của họ. 1129 00:56:34,490 --> 00:56:35,870 M là viết tắt của Model. 1130 00:56:35,870 --> 00:56:41,450 Và về cơ bản, mô hình tập tin sẽ đối phó với các tương tác với cơ sở dữ liệu. 1131 00:56:41,450 --> 00:56:44,640 Xem các tập tin, chúng liên quan đến các tính thẩm mỹ của trang web. 1132 00:56:44,640 --> 00:56:47,550 Và xử lý điều khiển yêu cầu người sử dụng, phân tích 1133 00:56:47,550 --> 00:56:49,230 dữ liệu, không logic khác. 1134 00:56:49,230 --> 00:56:52,520 >> Trong pset7, chúng tôi kết hợp các mô hình và bộ điều khiển. 1135 00:56:52,520 --> 00:56:55,880 Và chúng tôi chỉ gọi chúng là các bộ điều khiển và đặt chúng trong thư mục công cộng. 1136 00:56:55,880 --> 00:57:01,730 Và các tập tin xem, chúng tôi sử dụng chúng như mẫu trong thư mục mẫu. 1137 00:57:01,730 --> 00:57:07,260 Vì vậy, sơ đồ này ở đây cũng đại diện cùng loại phân chia với 1138 00:57:07,260 --> 00:57:10,510 mô hình và bộ điều khiển màu tím đây bên trái và 1139 00:57:10,510 --> 00:57:12,770 nhìn bên phải. 1140 00:57:12,770 --> 00:57:16,020 Vì vậy, đây là một sơ đồ mà một số bạn có thể đã thấy tại Thời gian làm việc hoặc 1141 00:57:16,020 --> 00:57:19,130 sơ đồ mà chúng ta đã được vẽ như bạn đã tìm ra pset của bạn. 1142 00:57:19,130 --> 00:57:25,030 >> Vì vậy, ở đây, trong một bộ điều khiển được, một mô hình điều khiển, chúng tôi có chức năng 1143 00:57:25,030 --> 00:57:30,490 có liên quan đến truy vấn SQL cơ sở dữ liệu, thực hiện PHP logic. 1144 00:57:30,490 --> 00:57:32,370 Có thể bạn sẽ tìm kiếm một cổ phiếu trong Yahoo! 1145 00:57:32,370 --> 00:57:34,590 Tài chính. 1146 00:57:34,590 --> 00:57:37,390 Hoặc có lẽ, bạn sẽ chỉ cần kiểm tra để xem liệu người dùng đã đệ trình một 1147 00:57:37,390 --> 00:57:40,250 tạo đã trước khi có đến thăm trang của bạn. 1148 00:57:40,250 --> 00:57:43,390 Và sau đó bạn sẽ làm cho một hình thành trên đây. 1149 00:57:43,390 --> 00:57:48,210 Sau khi hình thức đã được gửi bởi người sử dụng, những hành động đó là 1150 00:57:48,210 --> 00:57:53,470 quy định trong thẻ HTML của form sẽ chỉ ra trang mà nó 1151 00:57:53,470 --> 00:57:55,620 trả về dữ liệu đó để. 1152 00:57:55,620 --> 00:57:59,460 >> Vì vậy, tất cả các thông tin đó sẽ là gửi trở lại điều khiển của bạn. 1153 00:57:59,460 --> 00:58:02,620 Sau đó, bạn có lẽ sẽ làm nhiều hơn một chút logic trên đó và có thể thực hiện một vài 1154 00:58:02,620 --> 00:58:06,510 truy vấn nhiều hơn trong cơ sở dữ liệu SQL và sau đó, cuối cùng, đến với một độc đáo 1155 00:58:06,510 --> 00:58:11,930 bộ đóng gói thông tin mà bạn sẽ vượt qua trong vào một số mẫu khác 1156 00:58:11,930 --> 00:58:13,950 mà hiển thị thông tin đó. 1157 00:58:13,950 --> 00:58:17,030 Bây giờ, làm thế nào để chúng tôi thực sự trọn gói thông tin đó lên? 1158 00:58:17,030 --> 00:58:23,980 Vâng, chúng ta có một chức năng gọi là Render đó là trong tập tin functions.php trong 1159 00:58:23,980 --> 00:58:29,950 pset7, nơi bạn vượt qua trong tên của một tập tin, tên của một bản mẫu. 1160 00:58:29,950 --> 00:58:32,160 >> Và sau đó bạn cũng vượt qua trong một mảng kết hợp. 1161 00:58:32,160 --> 00:58:37,150 Và để đại diện cho mảng kết hợp các thông tin khác nhau 1162 00:58:37,150 --> 00:58:39,040 mà bạn muốn vượt qua in 1163 00:58:39,040 --> 00:58:43,460 Bây giờ, điều gì sẽ là không đổi trong các ví dụ này là các phím hoặc, 1164 00:58:43,460 --> 00:58:47,070 đúng hơn, các phím của liên kết mảng, đó là những gì đang xảy ra là 1165 00:58:47,070 --> 00:58:51,050 dự kiến ​​sẽ được liên tục của các mẫu, bởi vì nó biết nó cần 1166 00:58:51,050 --> 00:58:53,990 một cái gì đó gọi là tin nhắn hoặc gọi tên. 1167 00:58:53,990 --> 00:58:56,940 Và sau đó những điều trên bên phải, giá trị thực tế, vì vậy trong trường hợp này, những người 1168 00:58:56,940 --> 00:59:00,750 một cậu bé tốt và Milo, những người sẽ là các giá trị được thay đổi 1169 00:59:00,750 --> 00:59:05,610 bộ điều khiển thay đổi mỗi khi hoặc dựa trên một điều kiện nhất định và 1170 00:59:05,610 --> 00:59:07,120 sẽ vượt qua mà in 1171 00:59:07,120 --> 00:59:12,790 >> Vì vậy, ở đây trong các mẫu, chúng tôi thấy rằng chúng tôi đang sử dụng HTML ký tự đặc biệt, 1172 00:59:12,790 --> 00:59:16,370 mà chỉ cần về cơ bản có nghĩa là chúng ta muốn để có được chuỗi ngang hàng mà các 1173 00:59:16,370 --> 00:59:17,580 người sử dụng đặt in 1174 00:59:17,580 --> 00:59:20,880 Và chúng tôi muốn thay thế tin trong đó. 1175 00:59:20,880 --> 00:59:26,110 Vì vậy, sau đó khi chúng tôi thực sự xem các tập tin, cụ thể 1176 00:59:26,110 --> 00:59:28,700 thông tin là thông qua nhập 1177 00:59:28,700 --> 00:59:33,850 Lưu ý quan trọng như thế nào làm cho công trình là rằng các phím của liên kết 1178 00:59:33,850 --> 00:59:37,170 mảng, những biến trở thành tên ở đây. 1179 00:59:37,170 --> 00:59:40,720 Và do đó, giá trị của khóa đó trong mảng kết hợp sau đó trở thành 1180 00:59:40,720 --> 00:59:41,970 giá trị của biến. 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> Bây giờ, chúng ta hãy chuyển sang SQL. 1183 00:59:46,040 --> 00:59:48,010 Nó tượng trưng cho cấu trúc Ngôn ngữ truy vấn. 1184 00:59:48,010 --> 00:59:50,460 Và do đó, đây chỉ là một lập trình ngôn ngữ thiết kế 1185 00:59:50,460 --> 00:59:51,880 quản lý cơ sở dữ liệu. 1186 00:59:51,880 --> 00:59:56,860 Và nó đã có ích cho chúng ta trong trang web tài chính pset7 của chúng tôi. 1187 00:59:56,860 --> 01:00:00,510 Về cơ bản, nó chỉ là một cách dễ dàng để theo dõi và quản lý đối tượng và bảng 1188 01:00:00,510 --> 01:00:02,070 và liên kết chúng với nhau. 1189 01:00:02,070 --> 01:00:06,860 Bây giờ, nghĩ về cơ sở dữ liệu SQL của bạn về cơ bản là một tập tin Excel, có lẽ, 1190 01:00:06,860 --> 01:00:10,040 với nhiều sheet tab. 1191 01:00:10,040 --> 01:00:13,820 >> Vì vậy, bạn có thể có nhiều bảng, có lẽ, đó là liên kết với nhau. 1192 01:00:13,820 --> 01:00:19,420 Và giống như Excel, chúng tôi có rất nhiều những chức năng mà chúng ta muốn. 1193 01:00:19,420 --> 01:00:22,300 Ví dụ, chúng ta có thể chọn một số hàng. 1194 01:00:22,300 --> 01:00:24,110 Chúng ta có thể chèn thông tin. 1195 01:00:24,110 --> 01:00:25,560 Chúng tôi có thể cập nhật hàng. 1196 01:00:25,560 --> 01:00:27,440 Và chúng tôi cũng có thể xóa mọi thứ. 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> SQL chọn công trình bằng cách chọn hàng hoặc một hàng cột được chỉ định từ một 1199 01:00:36,560 --> 01:00:39,640 cơ sở dữ liệu phù hợp với một số tiêu chí mà bạn chỉ ra. 1200 01:00:39,640 --> 01:00:44,930 Vì vậy, ở đây khi tôi nhìn thấy chọn * từ trình thuật sĩ nơi nhà = Ravenclaw, sau đó 1201 01:00:44,930 --> 01:00:48,340 Tôi chọn *, có nghĩa là tôi lựa chọn tất cả các cột duy nhất trong đó 1202 01:00:48,340 --> 01:00:56,340 hàng từ bảng phù thủy nhưng chỉ khi cột nhà bằng Ravenclaw. 1203 01:00:56,340 --> 01:00:57,840 Bây giờ, đây là tinh khiết hoặc SQL. 1204 01:00:57,840 --> 01:01:02,680 Vì vậy, nếu tôi đi vào phpMyAdmin, đó là cách cụ thể mà chúng tôi sử dụng để quản lý 1205 01:01:02,680 --> 01:01:07,040 cơ sở dữ liệu SQL của chúng tôi, sau đó tôi có thể chèn đó vào trang web của phpMyAdmin. 1206 01:01:07,040 --> 01:01:08,290 Và đó sẽ thực hiện. 1207 01:01:08,290 --> 01:01:11,280 >> Nhưng chúng tôi thực sự muốn làm mà ở bên PHP. 1208 01:01:11,280 --> 01:01:12,580 Vì vậy, làm thế nào để chúng tôi làm điều đó? 1209 01:01:12,580 --> 01:01:20,180 Vâng, chúng tôi sử dụng chức năng truy vấn, mà về cơ bản thực hiện truy vấn SQL. 1210 01:01:20,180 --> 01:01:21,830 Sử dụng không? 1211 01:01:21,830 --> 01:01:25,850 như một giữ chỗ, chúng ta có thể vượt qua trong một số giá trị chuỗi của chúng tôi mà chúng tôi 1212 01:01:25,850 --> 01:01:26,920 muốn thay thế. 1213 01:01:26,920 --> 01:01:32,110 Vì vậy, có lẽ tôi là lưu trữ khác nhau giá trị trong curr_house, mà 1214 01:01:32,110 --> 01:01:34,400 đại diện cho các nhà hiện tại mà tôi đang trải qua. 1215 01:01:34,400 --> 01:01:39,040 Vì vậy, tôi có thể vượt qua trong như một giữ chỗ với dấu chấm hỏi. 1216 01:01:39,040 --> 01:01:43,290 Và sau đó tôi sẽ về cơ bản thực hiện cùng một điều như tôi đã làm trước đây, ngoại trừ 1217 01:01:43,290 --> 01:01:45,550 bây giờ, tôi đang ở trong PHP. 1218 01:01:45,550 --> 01:01:51,300 >> Và truy vấn sẽ trả lại một mảng kết hợp. 1219 01:01:51,300 --> 01:01:53,470 Và tôi sẽ lưu nó trong hàng. 1220 01:01:53,470 --> 01:01:56,880 Bây giờ, truy vấn luôn luôn có thể thất bại. 1221 01:01:56,880 --> 01:02:02,870 Có lẽ các truy vấn SQL không thể thực hiện vì bảng không tồn tại. 1222 01:02:02,870 --> 01:02:04,310 Hoặc có lẽ, cột không tồn tại. 1223 01:02:04,310 --> 01:02:05,400 Một cái gì đó đã đi sai. 1224 01:02:05,400 --> 01:02:08,170 Vâng, trong trường hợp đó, bạn sẽ muốn làm chắc chắn rằng bạn kiểm tra xem 1225 01:02:08,170 --> 01:02:09,700 truy vấn trả về sai. 1226 01:02:09,700 --> 01:02:15,590 Và đó là bằng cách sử dụng các ba bằng hoạt động ở đó. 1227 01:02:15,590 --> 01:02:19,660 >> Và sau đó tôi xin lỗi, mà là một Chức năng CS50, đi qua trong một tin nhắn. 1228 01:02:19,660 --> 01:02:23,435 Và nếu bạn nhìn vào xin lỗi, tất cả nó thực sự là làm cho apology.php. 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 Yeah. 1231 01:02:26,410 --> 01:02:29,630 >> ĐỐI TƯỢNG: Ông có thể giải thích điều đó Ngôi sao nào giữa lựa chọn và từ đâu? 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA CHAN: Yeah, hoàn toàn. 1233 01:02:30,710 --> 01:02:35,220 Vì vậy, các ngôi sao ở giữa và chọn từ có nghĩa là tôi muốn chọn toàn bộ 1234 01:02:35,220 --> 01:02:37,440 toàn bộ dòng từ bảng của tôi. 1235 01:02:37,440 --> 01:02:41,900 Tôi có thể đã chỉ ra chọn tên, năm, ngôi nhà. 1236 01:02:41,900 --> 01:02:46,160 Và tôi sẽ chỉ nhận được những ba cột trong bảng của tôi. 1237 01:02:46,160 --> 01:02:51,560 Nhưng nếu tôi nói chọn *, sau đó tôi sẽ được tất cả mọi thứ trong cột đó. 1238 01:02:51,560 --> 01:02:53,760 Sau đó, tôi sẽ đi bạn ở phía sau đầu. 1239 01:02:53,760 --> 01:02:57,656 >> ĐỐI TƯỢNG: Vì vậy, điều này vẫn còn trong SQL, phải không? 1240 01:02:57,656 --> 01:02:59,610 Là truy vấn này hoặc là PHP này? 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA CHAN: Chúng tôi đang ở trong một truy vấn. 1242 01:03:00,550 --> 01:03:01,940 Vì vậy, đây là trong PHP. 1243 01:03:01,940 --> 01:03:06,280 Vì vậy, bằng cách sử dụng chức năng truy vấn PHP, chúng tôi đang thực hiện một truy vấn SQL. 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> ĐỐI TƯỢNG: là bất cứ điều gì trong SQL trường hợp nhạy cảm, như chọn 1246 01:03:15,364 --> 01:03:17,834 hay pháp sư hay nhà? 1247 01:03:17,834 --> 01:03:20,050 >> ZAMYLA CHAN: là bất cứ điều gì trong SQL trường hợp nhạy cảm? 1248 01:03:20,050 --> 01:03:21,760 Tôi tin như vậy, có. 1249 01:03:21,760 --> 01:03:24,620 Tôi tin rằng SELECT và FROM và đâu là trường hợp nhạy cảm. 1250 01:03:24,620 --> 01:03:25,535 Không? 1251 01:03:25,535 --> 01:03:27,500 >> ROB Bowden: Vì vậy, nó là ngược lại. 1252 01:03:27,500 --> 01:03:32,030 Các tên cột và các phương tiện bảng, tất cả những là trường hợp nhạy cảm. 1253 01:03:32,030 --> 01:03:35,470 Nhưng bất kỳ từ khóa MySQL, như CHỌN, từ, và ở đâu, những người không phải 1254 01:03:35,470 --> 01:03:36,140 trường hợp nhạy cảm. 1255 01:03:36,140 --> 01:03:36,420 OK. 1256 01:03:36,420 --> 01:03:37,780 Vì vậy, trái ngược với những gì tôi nói. 1257 01:03:37,780 --> 01:03:40,420 Vì vậy, tất cả các từ khóa MySQL - 1258 01:03:40,420 --> 01:03:42,670 lựa chọn, từ đâu - những không phải là trường hợp nhạy cảm. 1259 01:03:42,670 --> 01:03:44,630 Nhưng tất cả mọi thứ khác được. 1260 01:03:44,630 --> 01:03:45,210 OK. 1261 01:03:45,210 --> 01:03:46,500 Bạn ở phía trước. 1262 01:03:46,500 --> 01:03:52,041 >> ĐỐI TƯỢNG: Nếu tôi có $ hàng về nhiều hơn một dòng, không có nghĩa là 1263 01:03:52,041 --> 01:03:53,640 chỉ trở thành một mảng kết hợp? 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA CHAN: Vậy câu hỏi là nếu hàng có nhiều hơn một dòng trong đó, không 1265 01:03:59,550 --> 01:04:01,800 nó trở thành một mảng kết hợp? 1266 01:04:01,800 --> 01:04:05,680 Vì vậy, nó là một mảng kết hợp mảng rồi. 1267 01:04:05,680 --> 01:04:10,730 Vì vậy, ngay cả khi chỉ có một hàng trở lại, sau đó bạn sẽ phải đi đến 1268 01:04:10,730 --> 01:04:12,690 chỉ số 0 kết quả đó. 1269 01:04:12,690 --> 01:04:15,316 Và sau đó bạn phải có hàng đầu tiên. 1270 01:04:15,316 --> 01:04:17,482 Có, Belinda? 1271 01:04:17,482 --> 01:04:21,258 >> ĐỐI TƯỢNG: Khi bạn sử dụng ===, đây là trường hợp duy nhất? 1272 01:04:21,258 --> 01:04:22,210 Hoặc là có những người khác? 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA CHAN: Vì vậy, trong trường hợp này, === là một so sánh trên các loại. 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 Xin lôi. === Là một so sánh so sánh các loại. 1276 01:04:34,050 --> 01:04:37,620 Và sau đó == so sánh trên tất cả các loại. 1277 01:04:37,620 --> 01:04:41,620 >> ĐỐI TƯỢNG: Bạn có thể giải thích những gì hàng là trong tình huống này? 1278 01:04:41,620 --> 01:04:45,120 Có hàng dữ liệu? 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA CHAN: Trong slide tiếp theo, tôi sẽ giải thích là những gì hàng. 1280 01:04:48,100 --> 01:04:49,890 Vì vậy, nếu bạn không nhớ giữ tắt về điều đó. 1281 01:04:49,890 --> 01:04:50,620 Và sau đó bạn ở phía sau? 1282 01:04:50,620 --> 01:04:54,699 >> ĐỐI TƯỢNG: Đối với các chức năng như truy vấn, vẽ lại và xin lỗi [không nghe được]? 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA CHAN: Câu hỏi là liệu các chức năng - truy vấn, xin lỗi, 1285 01:05:03,050 --> 01:05:04,510 và đưa ra - 1286 01:05:04,510 --> 01:05:05,930 là phổ biến trên PHP. 1287 01:05:05,930 --> 01:05:09,460 Đây là những người mà CS50 viết cho pset7. 1288 01:05:09,460 --> 01:05:09,910 Và Jay? 1289 01:05:09,910 --> 01:05:15,333 >> ĐỐI TƯỢNG: Khi bạn cần phải nói $ _SESSION, Là chỉ cho ID? 1290 01:05:15,333 --> 01:05:17,310 Hoặc có thể bạn đã nói rằng ở đây? 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA CHAN: Vì vậy, câu hỏi là, khi chúng tôi sử dụng $ _SESSION, đó là một cụ thể 1292 01:05:23,440 --> 01:05:25,290 biến toàn cầu mà chúng ta đang sử dụng. 1293 01:05:25,290 --> 01:05:32,080 Đây biến này sẽ được địa phương với chức năng của chúng tôi. 1294 01:05:32,080 --> 01:05:36,588 Vì vậy, chúng tôi chỉ cần khai báo một biến mới. 1295 01:05:36,588 --> 01:05:38,460 >> ĐỐI TƯỢNG: Làm thế nào là xin lỗi thực hiện? 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA CHAN: Câu hỏi là, làm thế nào là xin lỗi thực hiện? 1297 01:05:40,960 --> 01:05:44,180 Và tôi nghĩ rằng đây thực sự là một khá thực hành tốt cho các bạn đi vào 1298 01:05:44,180 --> 01:05:49,260 phần functions.php và nhìn vào xin lỗi và xem làm thế nào bạn có thể có 1299 01:05:49,260 --> 01:05:50,670 thực hiện nó cho mình. 1300 01:05:50,670 --> 01:05:55,620 Vì vậy, tôi có thể để lại đó cho bạn, nhưng chỉ nói rằng nếu bạn nhìn vào xin lỗi, 1301 01:05:55,620 --> 01:06:02,110 sau đó phải mất thông điệp mà bạn nộp để xin lỗi, và sau đó nó 1302 01:06:02,110 --> 01:06:06,570 làm cho thông điệp đó. 1303 01:06:06,570 --> 01:06:08,240 Bất kỳ câu hỏi nhiều hơn? 1304 01:06:08,240 --> 01:06:08,710 Tôi yêu câu hỏi. 1305 01:06:08,710 --> 01:06:09,555 Vì vậy, giữ chúng tới. 1306 01:06:09,555 --> 01:06:11,888 >> ĐỐI TƯỢNG: [nghe được] 1307 01:06:11,888 --> 01:06:13,840 vang hoặc in đó? 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA CHAN: Câu hỏi là, có thể chúng ta không chỉ đã đưa 1309 01:06:15,900 --> 01:06:17,000 vang hoặc in đó. 1310 01:06:17,000 --> 01:06:19,710 Vì vậy, đã có thể làm một cái gì đó hơi khác nhau. 1311 01:06:19,710 --> 01:06:23,750 Mà có thể đã in truy vấn không vào đó - 1312 01:06:23,750 --> 01:06:27,420 tốt, ngay bây giờ, chúng tôi thực sự trong bộ điều khiển của chúng tôi. 1313 01:06:27,420 --> 01:06:30,350 Vì vậy, chúng tôi không thực sự có HTML thiết lập ở đây. 1314 01:06:30,350 --> 01:06:34,946 Xin lỗi bằng cách làm cho apologize.php thực sự chuyển hướng bạn đến apology.php. 1315 01:06:34,946 --> 01:06:39,560 1316 01:06:39,560 --> 01:06:42,200 OK. 1317 01:06:42,200 --> 01:06:45,880 >> Vì vậy, bây giờ, chúng ta hãy đi vào giải quyết các câu hỏi từ trước đó về những gì 1318 01:06:45,880 --> 01:06:47,330 thực sự là hàng. 1319 01:06:47,330 --> 01:06:51,960 Vâng, truy vấn sẽ trở lại một loạt các hàng. 1320 01:06:51,960 --> 01:06:55,020 Và mỗi hàng được đại diện bởi một mảng kết hợp. 1321 01:06:55,020 --> 01:07:02,840 Vì vậy, nếu tôi đã thực hiện một số truy vấn SQL và Tôi đã được lưu trữ kết quả trong hàng, sau đó 1322 01:07:02,840 --> 01:07:07,850 sử dụng một vòng lặp foreach, sau đó các mảng tên là người đầu tiên có - hàng. 1323 01:07:07,850 --> 01:07:13,170 Và sau đó tôi sẽ gọi mỗi dòng trong đó $ row. 1324 01:07:13,170 --> 01:07:20,060 >> Vì vậy, lặp lại những điều đó, tôi có thể sau đó truy cập tên cột hàng nhất định của, 1325 01:07:20,060 --> 01:07:22,340 năm cột, và cột nhà. 1326 01:07:22,340 --> 01:07:28,010 Lưu ý rằng tôi sẽ không có được thể làm điều này với các hàng, bởi vì chỉ số hàng 1327 01:07:28,010 --> 01:07:29,290 tên không tồn tại. 1328 01:07:29,290 --> 01:07:31,970 Hàng chỉ là một mảng của mảng kết hợp. 1329 01:07:31,970 --> 01:07:34,870 Vì vậy, bạn có hai cấp độ đó. 1330 01:07:34,870 --> 01:07:37,170 Một khi bạn có các mảng của các hàng, bạn phải nhận được vào đó. 1331 01:07:37,170 --> 01:07:39,110 Và sau đó bạn có thể truy cập các cột. 1332 01:07:39,110 --> 01:07:41,636 Đã làm cho nó rõ ràng? 1333 01:07:41,636 --> 01:07:42,520 Yeah, ở phía trước? 1334 01:07:42,520 --> 01:07:45,490 >> ĐỐI TƯỢNG: [nghe được] mở khung cho [không nghe được]? 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA CHAN: Xin lỗi? 1336 01:07:46,220 --> 01:07:49,740 >> ĐỐI TƯỢNG: Các dấu ngoặc mở. 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA CHAN: Các đây? 1338 01:07:52,420 --> 01:07:58,520 Đó là cho phép tôi để bao gồm rằng biến. 1339 01:07:58,520 --> 01:07:58,670 Yeah. 1340 01:07:58,670 --> 01:08:01,900 >> ĐỐI TƯỢNG: Khi bạn in, bạn có in các mã HTML? 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA CHAN: Có. 1342 01:08:03,110 --> 01:08:07,720 Khi tôi in, ở đây là bên trong mẫu của tôi bây giờ, vì vậy 1343 01:08:07,720 --> 01:08:10,310 điểm của tôi về phương pháp MVC. 1344 01:08:10,310 --> 01:08:12,750 Vì vậy, tôi in vào HTML. 1345 01:08:12,750 --> 01:08:16,670 >> ĐỐI TƯỢNG: Vì vậy, nếu chúng tôi đã đi vào phát triển công cụ sau khi chạy này, chúng ta có thể 1346 01:08:16,670 --> 01:08:17,160 mà thực sự trong mã? 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA CHAN: Đó là một tuyệt vời câu hỏi, yeah. 1348 01:08:18,410 --> 01:08:22,359 Vì vậy, nếu bạn đã đi vào các công cụ phát triển trong Firefox sử dụng Firebug hoặc 1349 01:08:22,359 --> 01:08:26,109 Chrome, sau đó yeah, bạn có thể xem HTML cụ thể. 1350 01:08:26,109 --> 01:08:28,470 Vì vậy, nó sẽ không hiển thị $ row ["Name"]. 1351 01:08:28,470 --> 01:08:32,524 Nó sẽ hiển thị nào tên ở hàng đó. 1352 01:08:32,524 --> 01:08:36,268 >> ĐỐI TƯỢNG: Chỉ cần một vấn đề chung, những gì là tr và td định nghĩa là? 1353 01:08:36,268 --> 01:08:37,672 Tại sao chúng ta [không nghe được]? 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA CHAN: hàng tr bảng, bảng sau đó td cột. 1356 01:08:44,814 --> 01:08:48,060 1357 01:08:48,060 --> 01:08:49,310 OK. 1358 01:08:49,310 --> 01:08:55,771 1359 01:08:55,771 --> 01:08:56,835 >> ĐỐI TƯỢNG: Vâng, đó là dữ liệu bảng. 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA CHAN: dữ liệu bảng. 1361 01:08:58,770 --> 01:08:59,894 Yeah. 1362 01:08:59,894 --> 01:09:08,670 >> ĐỐI TƯỢNG: Đó là một hàng trong đó hàng được đối xử như một cột? 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA CHAN: Xin lỗi. 1364 01:09:08,910 --> 01:09:10,570 Bạn có thể lặp lại điều đó? 1365 01:09:10,570 --> 01:09:14,450 >> ĐỐI TƯỢNG: Làm thế nào bạn hình dung hàng? 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA CHAN: Làm thế nào bạn sẽ hình dung hàng trong những loại đường? 1367 01:09:16,310 --> 01:09:21,796 Bạn đang nói về những hàng ở đây hoặc các hàng tr? 1368 01:09:21,796 --> 01:09:22,630 >> ĐỐI TƯỢNG: Các hàng. 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA CHAN: Các dòng này đây? 1370 01:09:25,229 --> 01:09:28,620 Tôi muốn hình dung này như Tôi thực hiện truy vấn của tôi. 1371 01:09:28,620 --> 01:09:38,729 Và nó nói, OK, tôi có thể từ 0 đến n số lượng hàng phù hợp với các tiêu chuẩn 1372 01:09:38,729 --> 01:09:40,510 mà bạn đã truy vấn. 1373 01:09:40,510 --> 01:09:43,740 Vì vậy, tôi có một số số hàng. 1374 01:09:43,740 --> 01:09:51,450 Vì vậy, các hàng, các hàng $, cửa hàng mỗi một trong những hàng trong một mảng. 1375 01:09:51,450 --> 01:09:58,110 Vì vậy, ngay cả khi nó chỉ là một trong số họ, đó là vẫn còn một mảng của hàng phù hợp với nó. 1376 01:09:58,110 --> 01:10:03,010 >> Vì vậy, sau đó, ví dụ, đây là tương tự như khi bạn lấy 1377 01:10:03,010 --> 01:10:05,390 bộ nhớ cache từ người sử dụng. 1378 01:10:05,390 --> 01:10:10,810 Và các tiêu chí có nơi ID bằng ID phiên. 1379 01:10:10,810 --> 01:10:14,250 Có thực sự chỉ là một trong hàng mà có thể phù hợp với điều đó. 1380 01:10:14,250 --> 01:10:18,960 Nhưng vẫn còn hàng vừa trở về một hàng. 1381 01:10:18,960 --> 01:10:22,620 Vì vậy, bạn sẽ phải đi đến các hàng, chỉ số 0, chỉ số bộ nhớ cache để 1382 01:10:22,620 --> 01:10:26,195 thực sự có thể bộ nhớ cache của bạn. 1383 01:10:26,195 --> 01:10:29,650 >> ĐỐI TƯỢNG: là chức năng in trong vang vọng điều tương tự? 1384 01:10:29,650 --> 01:10:30,670 >> ZAMYLA CHAN: Có. 1385 01:10:30,670 --> 01:10:31,190 Vâng. 1386 01:10:31,190 --> 01:10:33,304 In một tiếng vang trong cùng. 1387 01:10:33,304 --> 01:10:42,400 >> ĐỐI TƯỢNG: Liệu các vòng lặp foreach Cách duy nhất để chỉ mục vào hàng? 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA CHAN: là một vòng lặp foreach cách duy nhất mà bạn có thể 1389 01:10:46,110 --> 01:10:47,030 lặp lại qua hàng? 1390 01:10:47,030 --> 01:10:47,180 Không. 1391 01:10:47,180 --> 01:10:51,000 Bạn cũng có thể sử dụng một vòng lặp, cung cấp mà bạn biết chiều dài 1392 01:10:51,000 --> 01:10:53,024 của mảng của hàng. 1393 01:10:53,024 --> 01:10:58,500 >> ĐỐI TƯỢNG: bạn có thể truy cập vào nó sử dụng một hàng như [không nghe được]? 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA CHAN: Vì vậy, bạn không thể truy cập chỉ sử dụng hàng nếu bạn không có một 1395 01:11:01,640 --> 01:11:05,160 foreach vòng lặp với điều kiện bạn đã không tuyên bố liên tiếp. 1396 01:11:05,160 --> 01:11:08,150 1397 01:11:08,150 --> 01:11:09,660 Vâng. 1398 01:11:09,660 --> 01:11:10,810 Yeah, trong trắng. 1399 01:11:10,810 --> 01:11:13,990 >> ĐỐI TƯỢNG: Vậy điều gì làm tr và td làm gì? 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA CHAN: Vì vậy, tr và td là các thẻ HTML. 1401 01:11:16,790 --> 01:11:19,590 tr cho đầu của một dòng của bảng. 1402 01:11:19,590 --> 01:11:26,625 Và mỗi td chỉ ra một mới bảng cột dữ liệu. 1403 01:11:26,625 --> 01:11:32,275 >> ĐỐI TƯỢNG: Đối với một hình ảnh của những gì liên tiếp là như thế, chỉ cần tưởng tượng SQL, làm thế nào 1404 01:11:32,275 --> 01:11:33,510 họ có một hàng. 1405 01:11:33,510 --> 01:11:35,980 [Nghe được]. 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA CHAN: Vâng. 1407 01:11:36,390 --> 01:11:37,630 Đó là một điểm tuyệt vời. 1408 01:11:37,630 --> 01:11:41,510 Bạn có thể hình dung hàng như chỉ như trong một bảng Excel, chỉ 1409 01:11:41,510 --> 01:11:44,540 danh sách các hàng. 1410 01:11:44,540 --> 01:11:46,870 OK. 1411 01:11:46,870 --> 01:11:47,230 Được rồi. 1412 01:11:47,230 --> 01:11:50,740 Vì vậy, bây giờ mà chúng tôi đã đi qua lựa chọn, nếu không có bất kỳ câu hỏi nhiều hơn, chúng tôi sẽ 1413 01:11:50,740 --> 01:11:52,970 đi qua lên chèn. 1414 01:11:52,970 --> 01:11:58,220 Vì vậy, nếu tôi muốn chèn vào một số bảng và chèn cột nhất định 1415 01:11:58,220 --> 01:12:02,320 giá trị, tôi có thể chèn bản thân mình vào Ravenclaw trong năm 7. 1416 01:12:02,320 --> 01:12:07,245 Nhưng đôi khi có thể có trùng lặp giá trị, như chúng ta đã thấy trong pset7 khi chúng tôi 1417 01:12:07,245 --> 01:12:09,240 đã cập nhật danh mục đầu tư của chúng tôi. 1418 01:12:09,240 --> 01:12:15,610 >> Vì vậy, trong trường hợp này, chúng tôi muốn sử dụng ON SAO CHÉP KEY UPDATE, để chúng ta không 1419 01:12:15,610 --> 01:12:18,280 lưu trữ nhiều hàng với cùng giá mà là cập nhật nó. 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 Sau đó, chúng tôi thực sự có cập nhật, mà không phải là một chèn. 1422 01:12:25,560 --> 01:12:30,100 Nó chỉ là một bản cập nhật mà bạn cập nhật trong một bảng nào đó với một định 1423 01:12:30,100 --> 01:12:34,403 tiêu chuẩn, sau đó, cuối cùng, xóa, mà không một điều rất giống nhau. 1424 01:12:34,403 --> 01:12:40,200 >> ĐỐI TƯỢNG: Ông có thể một thời gian ngắn đi qua các khóa trùng lặp? 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA CHAN: Vâng. 1426 01:12:40,850 --> 01:12:48,340 Về cơ bản đây, tôi có INSERT INTO Gringotts, là, thuyền buồm, những giá trị này. 1427 01:12:48,340 --> 01:12:56,900 Nhưng ID, có lẽ, là một chìa khóa duy nhất giá trị thiết lập trong bảng MySQL. 1428 01:12:56,900 --> 01:13:06,750 Vì vậy, nếu tôi đã có ID thiết lập, sau đó tôi không thể chèn một hàng mới. 1429 01:13:06,750 --> 01:13:10,961 Vì vậy, nếu nó không tồn tại, sau đó tôi phải cập nhật nó. 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 Ở giữa trong trắng. 1432 01:13:17,722 --> 01:13:21,570 >> ĐỐI TƯỢNG: Vì vậy, chèn, cập nhật, xóa, và lựa chọn, là tất cả những người có sẵn 1433 01:13:21,570 --> 01:13:22,875 tại địa phương [không nghe được]? 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA CHAN: Vì vậy, chèn, cập nhật, xóa, và 1436 01:13:29,630 --> 01:13:31,120 chọn là tất cả các truy vấn SQL. 1437 01:13:31,120 --> 01:13:34,970 Vì vậy, bất cứ khi nào bạn đang sử dụng SQL, bạn sẽ có những người có sẵn. 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> ĐỐI TƯỢNG: Quay lại câu đố quá khứ - 1440 01:13:40,706 --> 01:13:44,178 có một câu hỏi mà bị xử lý nếu bạn đã có một bảng và muốn 1441 01:13:44,178 --> 01:13:52,610 chèn điểm kiểm tra trong một và bạn chèn Tên của bạn vì vậy nó sẽ không cho phép bạn 1442 01:13:52,610 --> 01:13:54,594 [Nghe được] kiểm tra điểm số của bạn của bạn. 1443 01:13:54,594 --> 01:13:59,060 Làm thế nào bạn sẽ làm điều đó với chèn? 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA CHAN: Vì vậy, các câu hỏi về một câu hỏi giữa kỳ trước. 1445 01:14:02,490 --> 01:14:04,320 Tôi không biết trong đó một trong đó là ngay bây giờ. 1446 01:14:04,320 --> 01:14:06,790 Như vậy có lẽ sau đó, nếu bạn muốn đi lên và chỉ cho tôi, sau đó tôi có thể 1447 01:14:06,790 --> 01:14:08,155 chắc chắn cung cấp cho bạn lời khuyên. 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 Nhưng nói về những thứ chèn, như tỉ số của một ai đó khi bạn 1450 01:14:15,460 --> 01:14:18,800 không nên, chúng ta hãy nói về Các cuộc tấn công SQL injection. 1451 01:14:18,800 --> 01:14:22,050 Vì vậy, một cuộc tấn công SQL injection cơ bản nơi một người nào đó có 1452 01:14:22,050 --> 01:14:27,680 lợi dụng việc bảo mật thấp của cách mà bạn đang dùng trong dữ liệu. 1453 01:14:27,680 --> 01:14:35,660 >> Vì vậy, ở đây, giống như trong tài chính CS50, khi chúng ta đăng nhập, chúng ta có thể nhập vào một 1454 01:14:35,660 --> 01:14:39,510 username trong biểu mẫu đăng nhập, hộp văn bản đầu tiên, và 1455 01:14:39,510 --> 01:14:41,570 sau đó nhập vào một mật khẩu. 1456 01:14:41,570 --> 01:14:45,610 Có lẽ mã PHP của chúng tôi có thể trông một cái gì đó như thế này, nơi $ username 1457 01:14:45,610 --> 01:14:51,410 là tên người dùng và mật khẩu sau dữ liệu là mật khẩu sau dữ liệu. 1458 01:14:51,410 --> 01:14:55,110 Và sau đó chúng tôi chỉ thực hiện truy vấn của chúng tôi, nói, OK, tốt, truy vấn của chúng tôi sẽ 1459 01:14:55,110 --> 01:14:57,990 chọn từ những người dùng của chúng tôi, nơi tên người dùng là 1460 01:14:57,990 --> 01:14:58,970 một trong đó họ gửi. 1461 01:14:58,970 --> 01:15:06,870 Và mật khẩu là mật khẩu, có nghĩa là các mật khẩu phù hợp. 1462 01:15:06,870 --> 01:15:12,670 >> Bây giờ, nếu thay vì thực sự gửi một mật khẩu thực tế, như 1463 01:15:12,670 --> 01:15:16,850 12345 và đoán tại prong nói Mật khẩu và cố gắng để hack của họ 1464 01:15:16,850 --> 01:15:21,460 tài khoản, nếu thay vì họ gửi này. 1465 01:15:21,460 --> 01:15:24,380 Họ có thể gõ vào có thể một đoán mật khẩu. 1466 01:15:24,380 --> 01:15:30,480 Và sau đó họ sẽ kết thúc quote sau đó gõ vào hoặc 1 = 1. 1467 01:15:30,480 --> 01:15:35,160 Điều đó sẽ được tốc độ của trực tiếp vào SQL truy vấn để tìm một cái gì đó như thế này. 1468 01:15:35,160 --> 01:15:38,200 Chọn từ những người dùng nơi tên người dùng = Ngạnh và mật khẩu 1469 01:15:38,200 --> 01:15:41,450 bằng lily hoặc 1 = 1. 1470 01:15:41,450 --> 01:15:45,450 >> Vì vậy, hoặc mật khẩu có là đúng hoặc 1 = 1, 1471 01:15:45,450 --> 01:15:47,870 mà luôn luôn là sự thật. 1472 01:15:47,870 --> 01:15:52,780 Vì vậy, trong trường hợp này, về cơ bản, người dùng có thể tận dụng điều này và chỉ cần đăng nhập 1473 01:15:52,780 --> 01:15:55,240 bản thân và thuê tài khoản của một ai đó. 1474 01:15:55,240 --> 01:15:58,950 Vì vậy, đó là lý do tại sao chúng tôi muốn tránh một ai đó có để làm điều này. 1475 01:15:58,950 --> 01:16:03,890 Nhưng may mắn thay, chức năng truy vấn bằng cách đi qua trong giữ chỗ sẽ 1476 01:16:03,890 --> 01:16:04,800 chăm sóc này cho bạn. 1477 01:16:04,800 --> 01:16:08,570 Ngoài ra, bạn sẽ thường không bao giờ muốn để thực sự gửi mật khẩu 1478 01:16:08,570 --> 01:16:09,310 mình. 1479 01:16:09,310 --> 01:16:14,115 Đó là lý do tại sao chúng tôi băm hoặc mã hóa họ về tài chính CS50. 1480 01:16:14,115 --> 01:16:17,553 >> ĐỐI TƯỢNG: Các bài kiểm tra qua nói chuyện về MySQL chuỗi thoát. 1481 01:16:17,553 --> 01:16:21,800 Chúng ta phải lo lắng về điều đó? 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA CHAN: Đó là một câu hỏi hay. 1483 01:16:22,670 --> 01:16:29,050 Dây thoát MySQL chắc chắn là một chức năng đã được sử dụng trong truy vấn của chúng tôi. 1484 01:16:29,050 --> 01:16:30,420 Nhưng chắc chắn nhìn vào đó. 1485 01:16:30,420 --> 01:16:32,950 Tôi muốn nói đó là trò chơi công bằng để biết mà bạn cần phải gọi đó là 1486 01:16:32,950 --> 01:16:34,370 hoạt động trên một chuỗi. 1487 01:16:34,370 --> 01:16:35,245 Yeah, Belinda? 1488 01:16:35,245 --> 01:16:38,606 >> ĐỐI TƯỢNG: Làm thế nào để bạn biết khi nó dấu nháy đơn hoặc dấu ngoặc kép? 1489 01:16:38,606 --> 01:16:43,516 Và cũng có thể, tôi cảm thấy như trong bài giảng bạn đề cập đến một cái gì đó về việc không có 1490 01:16:43,516 --> 01:16:48,426 các [nghe được] hoặc một cái gì đó hoặc nháy đơn thứ hai ở cuối. 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 Tôi nghĩ rằng ông đã chỉ ra trong bài giảng đó bạn đang nghĩa vụ phải có dấu nháy đơn 1 1493 01:17:00,825 --> 01:17:04,290 và sau đó không có dấu nháy hoặc một cái gì đó. 1494 01:17:04,290 --> 01:17:05,540 >> ĐỐI TƯỢNG: [nghe được]. 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> ĐỐI TƯỢNG: Vấn đề là đĩa đơn cuối cùng giá trong có trong hộp thứ hai 1497 01:17:18,657 --> 01:17:19,391 không nên có. 1498 01:17:19,391 --> 01:17:21,840 [Nghe được] 1499 01:17:21,840 --> 01:17:26,730 Bởi vì khi bạn đi mà đơn cuối cùng trích dẫn ra và phù hợp với các nội dung 1500 01:17:26,730 --> 01:17:30,522 nơi mật khẩu là, nếu bạn có truy vấn, có một giá duy nhất tại 1501 01:17:30,522 --> 01:17:31,340 kết thúc rồi. 1502 01:17:31,340 --> 01:17:36,580 Bạn muốn sử dụng dấu nháy đơn như một trong đó phải đối mặt với một trong những 1503 01:17:36,580 --> 01:17:37,574 [Nghe được]. 1504 01:17:37,574 --> 01:17:42,820 Vì vậy, những gì thực sự trong văn bản hộp không nên có. 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA CHAN: Tôi sẽ thay đổi điều đó. 1506 01:17:44,070 --> 01:17:56,490 1507 01:17:56,490 --> 01:17:56,880 OK. 1508 01:17:56,880 --> 01:18:00,435 Nếu không có bất kỳ câu hỏi, sau đó tôi sẽ vượt qua nó cho Joseph nói chuyện 1509 01:18:00,435 --> 01:18:04,332 về JavaScript, vân vân. 1510 01:18:04,332 --> 01:18:09,540 >> [Vỗ tay] 1511 01:18:09,540 --> 01:18:11,660 >> JOSEPH ONG: Vì vậy, chúng tôi đang chạy một chút phía sau. 1512 01:18:11,660 --> 01:18:13,280 Vì vậy, nếu bạn đã để lại, đó là OK. 1513 01:18:13,280 --> 01:18:16,540 Nhưng chúng tôi yêu cầu bạn giữ đầu của bạn xuống nếu bạn đang ở giữa, vì vậy bạn 1514 01:18:16,540 --> 01:18:19,560 không chặn máy ảnh và bạn sử dụng lối ra trở lại nếu bạn phải. 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 Tôi Joseph bằng cách này. 1517 01:18:26,306 --> 01:18:27,556 Hi. 1518 01:18:27,556 --> 01:18:37,910 1519 01:18:37,910 --> 01:18:38,630 Kiểm tra, kiểm tra. 1520 01:18:38,630 --> 01:18:39,630 Dan, là tốt? 1521 01:18:39,630 --> 01:18:40,880 Mát mẻ. 1522 01:18:40,880 --> 01:18:44,460 1523 01:18:44,460 --> 01:18:47,600 >> Vì vậy, các video cũng sẽ được đăng trực tuyến cho những người 1524 01:18:47,600 --> 01:18:48,850 phải rời khỏi đây. 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 Khó xử. 1527 01:18:52,600 --> 01:18:56,300 1528 01:18:56,300 --> 01:18:57,510 OK. 1529 01:18:57,510 --> 01:18:59,730 Vì vậy, xem xét lại bài kiểm tra. 1530 01:18:59,730 --> 01:19:00,980 Đây là một con mèo. 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 Bây giờ, JavaScript, đó là có thể không như aww cho một số các bạn. 1533 01:19:07,170 --> 01:19:07,370 OK. 1534 01:19:07,370 --> 01:19:09,280 Vì vậy, đó là lần đầu tiên, nhớ lại từ Zamyla. 1535 01:19:09,280 --> 01:19:11,270 Hãy nhớ rằng PHP là chạy trên máy chủ. 1536 01:19:11,270 --> 01:19:15,230 Và rất nhiều lần, các bạn đã viết các vòng lặp trong PHP để in ra HTML, phải không? 1537 01:19:15,230 --> 01:19:19,170 Vì vậy, một khi mã thực thi, mà Đầu ra HTML mà bạn in ra 1538 01:19:19,170 --> 01:19:20,500 được gửi đến người sử dụng. 1539 01:19:20,500 --> 01:19:25,960 Và một khi điều đó xảy ra, không có PHP hơn có thể được chạy, trừ khi bạn tải lại trang, của 1540 01:19:25,960 --> 01:19:27,660 Tất nhiên, đó reexecutes PHP. 1541 01:19:27,660 --> 01:19:30,080 Nhưng một khi bạn in ra HTML, bạn không thể đi bất cứ nơi nào. 1542 01:19:30,080 --> 01:19:33,580 >> Vì vậy, HTML được gửi qua cho người sử dụng, đó là trình duyệt ở đây, nơi 1543 01:19:33,580 --> 01:19:35,470 Milo đang sử dụng máy tính. 1544 01:19:35,470 --> 01:19:40,340 Và rất tốt, có nhiều điều khi chúng tôi gửi HTML cho người dùng. 1545 01:19:40,340 --> 01:19:43,350 Đôi khi chúng tôi muốn làm một cái gì đó như khi bạn click vào một cái gì đó, chúng tôi muốn 1546 01:19:43,350 --> 01:19:47,350 hộp cảnh báo bật lên, những loại tương tác, giống như khi bạn nhấn 1547 01:19:47,350 --> 01:19:50,740 quan trọng, khi bạn nhấp vào một cái gì đó trên trang, tôi muốn một cái gì đó xảy ra. 1548 01:19:50,740 --> 01:19:54,550 Vâng, bạn không thể reexecute PHP mã một lần HTML được thiết lập. 1549 01:19:54,550 --> 01:19:55,900 Vì vậy, làm thế nào để bạn làm điều này? 1550 01:19:55,900 --> 01:19:59,930 >> Chúng tôi giới thiệu một ngôn ngữ mới được gọi là JavaScript, chạy trong trình duyệt 1551 01:19:59,930 --> 01:20:02,890 cho phép bạn làm những điều HTML sau khi bạn nhận được 1552 01:20:02,890 --> 01:20:04,020 chúng từ máy chủ. 1553 01:20:04,020 --> 01:20:07,050 Và đây là lý do tại sao chúng tôi gọi nó là một phía máy khách ngôn ngữ lập trình. 1554 01:20:07,050 --> 01:20:09,110 Nó hoạt động trên máy tính của bạn - 1555 01:20:09,110 --> 01:20:11,400 khách hàng. 1556 01:20:11,400 --> 01:20:13,830 Bất kỳ câu hỏi về điều đó cho đến nay? 1557 01:20:13,830 --> 01:20:15,650 Mô hình có ý nghĩa cho người dân? 1558 01:20:15,650 --> 01:20:16,010 OK. 1559 01:20:16,010 --> 01:20:16,790 Tốt. 1560 01:20:16,790 --> 01:20:17,340 Được rồi. 1561 01:20:17,340 --> 01:20:20,850 Vì vậy, điều đầu tiên cần lưu ý là JavaScript không phải là PHP. 1562 01:20:20,850 --> 01:20:23,010 >> Họ có một số cú pháp khác nhau, mà chúng tôi sẽ đi vào. 1563 01:20:23,010 --> 01:20:24,530 Và họ đã sử dụng rất khác nhau. 1564 01:20:24,530 --> 01:20:26,640 JavaScript, một lần nữa, cho bạn trình duyệt, cho khách hàng. 1565 01:20:26,640 --> 01:20:30,640 Máy chủ chạy ở đâu đó trên người khác máy tính gửi thông tin 1566 01:20:30,640 --> 01:20:31,720 cho bạn, đúng không? 1567 01:20:31,720 --> 01:20:36,730 Vì vậy, nếu chúng tôi yêu cầu bạn viết mã PHP trên một câu hỏi thi, không viết 1568 01:20:36,730 --> 01:20:38,710 JavaScript và ngược lại. 1569 01:20:38,710 --> 01:20:41,710 Bạn sẽ chỉ mất điểm, và nó sẽ không đúng. 1570 01:20:41,710 --> 01:20:43,690 >> Vì vậy, hãy vào một số sự khác biệt cú pháp - 1571 01:20:43,690 --> 01:20:46,140 JavaScript trên bên trái và PHP trên bên phải. 1572 01:20:46,140 --> 01:20:48,670 Điều đầu tiên bạn sẽ nhận thấy với JavaScript, chúng ta khai báo các biến với 1573 01:20:48,670 --> 01:20:49,440 var từ khóa - 1574 01:20:49,440 --> 01:20:53,590 V-A-R. PHP sử dụng các ký hiệu đô la, như Zamyla thảo luận trước đó. 1575 01:20:53,590 --> 01:20:57,570 Nếu bạn muốn khai báo một liên kết mảng, chúng ta thấy cú pháp quen thuộc trên 1576 01:20:57,570 --> 01:20:59,030 phía bên phải với PHP. 1577 01:20:59,030 --> 01:21:01,630 Ở phía bên trái, thay vì bạn sử dụng dấu ngoặc nhọn. 1578 01:21:01,630 --> 01:21:03,280 Và sau đó là các phím của bạn ở bên trái. 1579 01:21:03,280 --> 01:21:04,670 Sau đó, bạn có một dấu hai chấm. 1580 01:21:04,670 --> 01:21:06,560 Và sau đó bạn có giá trị mà bạn muốn. 1581 01:21:06,560 --> 01:21:09,840 >> Vì vậy, đây là cách bạn sẽ làm điều đó trong PHP ở phía bên phải với thứ hai 1582 01:21:09,840 --> 01:21:10,955 dòng bắt đầu tại Milo. 1583 01:21:10,955 --> 01:21:14,540 Và đó là cách bạn sẽ làm điều đó trên bên còn lại trong JavaScript nếu bạn muốn 1584 01:21:14,540 --> 01:21:16,110 những gì chúng ta gọi là một đối tượng. 1585 01:21:16,110 --> 01:21:19,340 Và các đối tượng trong JavaScript chỉ mảng kết hợp. 1586 01:21:19,340 --> 01:21:23,710 Vì vậy, nếu bạn muốn truy cập các lĩnh vực, trong PHP bạn sử dụng cú pháp khung này. 1587 01:21:23,710 --> 01:21:27,170 Và cách này, bạn có thể gán lĩnh vực chủ sở hữu này Lauren. 1588 01:21:27,170 --> 01:21:30,150 >> Vâng, trong JavaScript, nếu muốn truy cập vào một lĩnh vực và thay đổi nó, bạn có thể 1589 01:21:30,150 --> 01:21:31,370 sử dụng cú pháp chấm. 1590 01:21:31,370 --> 01:21:33,860 Bạn cũng có thể sử dụng cú pháp khung. 1591 01:21:33,860 --> 01:21:35,550 Nhưng bạn không thể sử dụng chấm cú pháp trong PHP. 1592 01:21:35,550 --> 01:21:36,525 Điều đó sẽ không làm việc. 1593 01:21:36,525 --> 01:21:38,910 Nó chỉ hoạt động trong PHP. 1594 01:21:38,910 --> 01:21:42,060 Và cuối cùng, để in những thứ đến giao diện điều khiển, bạn sử dụng console.log, mà 1595 01:21:42,060 --> 01:21:43,720 các bạn sử dụng rất nhiều trong pset8. 1596 01:21:43,720 --> 01:21:45,260 Bạn có thể console.log đó. 1597 01:21:45,260 --> 01:21:50,030 >> Nếu bạn muốn in một mảng trong PHP, bạn phải sử dụng in r. 1598 01:21:50,030 --> 01:21:53,240 Và ở phía bên phải, bạn sẽ thấy tôi băm nối chuỗi ở đó. 1599 01:21:53,240 --> 01:21:54,070 Có người hỏi trước đó. 1600 01:21:54,070 --> 01:21:55,850 Tôi sử dụng một cộng trong JavaScript. 1601 01:21:55,850 --> 01:21:59,800 Nếu tôi muốn một cái gì đó để nối trong PHP, tôi sử dụng dấu chấm. 1602 01:21:59,800 --> 01:22:00,800 Đây là khác nhau. 1603 01:22:00,800 --> 01:22:03,420 Nếu bạn đang viết mã PHP, không sử dụng một cộng. 1604 01:22:03,420 --> 01:22:06,810 Nếu bạn đang viết JavaScript mã, không viết một dấu chấm. 1605 01:22:06,810 --> 01:22:08,230 Nó sẽ là sai lầm. 1606 01:22:08,230 --> 01:22:09,640 Và bạn sẽ buồn. 1607 01:22:09,640 --> 01:22:11,000 >> Vì vậy, sự khác biệt cú pháp. 1608 01:22:11,000 --> 01:22:14,710 Biết cú pháp của bạn, bởi vì nếu bạn phải viết một câu hỏi và bạn sử dụng cú pháp 1609 01:22:14,710 --> 01:22:16,890 từ ngôn ngữ sai, nó sẽ không làm việc. 1610 01:22:16,890 --> 01:22:19,520 Và nó sẽ là sai lầm. 1611 01:22:19,520 --> 01:22:22,420 Vì vậy, chúng ta hãy nói về một số kiểm soát dòng chảy khác nhau, làm thế nào bạn sử dụng 1612 01:22:22,420 --> 01:22:24,040 vòng trong mỗi người. 1613 01:22:24,040 --> 01:22:26,610 Zamyla đã đi qua phía bên phải. 1614 01:22:26,610 --> 01:22:27,780 Công cụ trên bên phải nên quen thuộc. 1615 01:22:27,780 --> 01:22:29,670 Hãy nhìn vào phía bên trái. 1616 01:22:29,670 --> 01:22:34,830 >> Khi bạn sử dụng cho n vòng lặp trong JavaScript, biến vòng lặp của bạn, var i ở đó, 1617 01:22:34,830 --> 01:22:37,210 vòng lặp trên các phím của mảng. 1618 01:22:37,210 --> 01:22:39,150 Vì vậy, bạn thấy tên, nhà, và vai trò. 1619 01:22:39,150 --> 01:22:42,440 Nếu tôi console.log tôi, tôi nhận được tên, nhà, và vai trò. 1620 01:22:42,440 --> 01:22:44,720 Đó là các phím. 1621 01:22:44,720 --> 01:22:50,080 Trong JavaScript, một vòng lặp foreach đi qua các giá trị của mảng này. 1622 01:22:50,080 --> 01:22:52,040 Vì vậy, bạn nhận thấy họ cả tôi. 1623 01:22:52,040 --> 01:22:56,000 Nhưng ở đây ở phía bên PHP, nó in Milo ra, CS50, và Mascot. 1624 01:22:56,000 --> 01:22:57,390 Đó là những giá trị trong PHP. 1625 01:22:57,390 --> 01:23:00,180 >> Vì vậy, đây là cách hai là khác nhau trong các ngôn ngữ khác nhau. 1626 01:23:00,180 --> 01:23:02,970 Vì vậy, nếu bạn đang sử dụng một foreach vòng lặp, không giả định rằng nó 1627 01:23:02,970 --> 01:23:03,760 cung cấp cho bạn các phím. 1628 01:23:03,760 --> 01:23:08,010 Và nếu bạn đang sử dụng một vòng lặp cho n, không giả sử nó cung cấp cho bạn các giá trị. 1629 01:23:08,010 --> 01:23:10,420 Điều này có ý nghĩa cho đến nay? 1630 01:23:10,420 --> 01:23:13,630 Slide tiếp theo sẽ hiển thị cho bạn làm thế nào bạn có thể truy cập ngược lại 1631 01:23:13,630 --> 01:23:15,160 mỗi người. 1632 01:23:15,160 --> 01:23:18,550 >> Vâng, nếu bạn có chìa khóa trong JavaScript và bạn muốn giá trị ra, 1633 01:23:18,550 --> 01:23:20,440 bạn chỉ cần chỉ số vào mảng với điều đó. 1634 01:23:20,440 --> 01:23:23,640 Vì vậy, Milo của tôi sẽ giúp bạn có được những gì bạn muốn - các giá trị. 1635 01:23:23,640 --> 01:23:25,260 Có cú pháp khác nhau này trong PHP. 1636 01:23:25,260 --> 01:23:28,140 Nếu bạn thực sự muốn biết điều đó, tôi không nghĩ rằng chúng tôi đã đưa cho bạn được nêu ra. 1637 01:23:28,140 --> 01:23:31,740 Nhưng nếu bạn quan tâm, bạn có thể sử dụng cú pháp bổ sung này ở bên phải 1638 01:23:31,740 --> 01:23:35,130 bên đó thực sự sẽ cho phép bạn nhận được phím trong PHP khi bạn đang sử dụng 1639 01:23:35,130 --> 01:23:35,880 foreach vòng lặp. 1640 01:23:35,880 --> 01:23:39,640 Vì vậy chỉ cần một chút đố nếu bạn quan tâm. 1641 01:23:39,640 --> 01:23:42,630 >> Vì vậy, đó chỉ là để chứng minh sự khác nhau giữa hai tuyến này. 1642 01:23:42,630 --> 01:23:47,060 Không pha trộn chúng khi bạn lập trình một câu hỏi. 1643 01:23:47,060 --> 01:23:49,774 Thắc mắc về điều đó. 1644 01:23:49,774 --> 01:23:50,770 Mát mẻ. 1645 01:23:50,770 --> 01:23:51,310 Được rồi. 1646 01:23:51,310 --> 01:23:52,250 JavaScript đối tượng. 1647 01:23:52,250 --> 01:23:53,040 Tôi đã nói chuyện về chúng. 1648 01:23:53,040 --> 01:23:54,650 Họ giống như các mảng kết hợp. 1649 01:23:54,650 --> 01:23:57,730 Một trong những điều tôi muốn bạn cần lưu ý đây là một giá trị trong một liên kết 1650 01:23:57,730 --> 01:23:59,540 mảng có thể là bất cứ điều gì trong JavaScript. 1651 01:23:59,540 --> 01:24:02,240 >> Nó thậm chí có thể là một chức năng, như ở đó. 1652 01:24:02,240 --> 01:24:04,600 Tôi có một chức năng mà là một giá trị của một phím. 1653 01:24:04,600 --> 01:24:07,030 Và nếu tôi muốn gọi là chức năng, Tôi chỉ cần truy cập vỏ cây. 1654 01:24:07,030 --> 01:24:08,490 Và sau đó tôi đặt các dấu ngoặc đơn sau đó. 1655 01:24:08,490 --> 01:24:09,790 Và làm việc. 1656 01:24:09,790 --> 01:24:15,570 Vì vậy, bất kỳ câu hỏi? 1657 01:24:15,570 --> 01:24:16,370 Không? 1658 01:24:16,370 --> 01:24:16,650 OK. 1659 01:24:16,650 --> 01:24:18,190 Tốt. 1660 01:24:18,190 --> 01:24:20,130 JavaScript, như PHP, là lỏng lẻo. 1661 01:24:20,130 --> 01:24:20,970 Điều đó có nghĩa gì? 1662 01:24:20,970 --> 01:24:22,380 >> Nó có các loại. 1663 01:24:22,380 --> 01:24:24,800 Nhưng khi bạn khai báo một JavaScript biến, bạn nói var i. 1664 01:24:24,800 --> 01:24:25,850 Bạn không nói ra. 1665 01:24:25,850 --> 01:24:26,460 Đó không phải là một điều. 1666 01:24:26,460 --> 01:24:28,000 Bạn chỉ nói đó là một biến. 1667 01:24:28,000 --> 01:24:31,590 Và sau đó JavaScript sẽ xử lý loại dưới mui xe cho bạn. 1668 01:24:31,590 --> 01:24:34,390 Chúng tôi có thể tự do chuyển đổi giữa loại vì điều này. 1669 01:24:34,390 --> 01:24:37,360 Vì vậy, tôi bắt đầu ra như là một số trong trường hợp này. 1670 01:24:37,360 --> 01:24:38,790 Và sau đó tôi có một chuỗi. 1671 01:24:38,790 --> 01:24:39,710 Và tôi thêm tôi với nó. 1672 01:24:39,710 --> 01:24:41,810 Và tôi phân công lại nó trở lại vào tôi. 1673 01:24:41,810 --> 01:24:43,640 >> Vì vậy, trên dòng đầu tiên, i là số. 1674 01:24:43,640 --> 01:24:47,310 Trên dòng thứ hai, bây giờ tôi sẽ trở thành một chuỗi sau khi tôi làm tái chỉ định. 1675 01:24:47,310 --> 01:24:52,820 Và ở đây, tôi chỉ cần ghép con số vào chuỗi. 1676 01:24:52,820 --> 01:24:56,210 Vì vậy, bạn thấy rằng mặc dù tôi là một số nguyên trong phần đầu tiên, đó là loại 1677 01:24:56,210 --> 01:24:58,500 giống như được chuyển đổi sang một chuỗi và sau đó được bổ sung 1678 01:24:58,500 --> 01:25:00,510 lên rằng chuỗi hello. 1679 01:25:00,510 --> 01:25:02,340 Và đó là những gì tôi có nghĩa là do đánh máy lỏng lẻo. 1680 01:25:02,340 --> 01:25:04,760 Đó là bạn chuyển đổi giữa loại rất dễ dàng. 1681 01:25:04,760 --> 01:25:08,840 Và nó không ném cảnh báo tại bạn thích C không. 1682 01:25:08,840 --> 01:25:12,420 >> Vì vậy, bây giờ tôi có chào 123 vào chuỗi. 1683 01:25:12,420 --> 01:25:13,270 Tiếp theo. 1684 01:25:13,270 --> 01:25:15,610 Chúng tôi cũng có thể tự do so sánh giữa các loại. 1685 01:25:15,610 --> 01:25:19,310 Vì vậy, nếu bạn chỉ cần sử dụng ==, rất nhiều như trong PHP, JavaScript 1686 01:25:19,310 --> 01:25:20,480 làm một điều tương tự. 1687 01:25:20,480 --> 01:25:24,780 Chuỗi 123 là giống như số 123 khi bạn sử dụng bình đẳng đôi. 1688 01:25:24,780 --> 01:25:27,820 Khi sử dụng bình đẳng ba, nó cũng muốn đảm bảo rằng 1689 01:25:27,820 --> 01:25:29,240 loại là như nhau. 1690 01:25:29,240 --> 01:25:31,960 Vì vậy, bởi vì đó là một chuỗi và đó là một số, mặc dù họ đang cả hai 1691 01:25:31,960 --> 01:25:35,280 123, khi bạn sử dụng ba bằng, bạn sẽ có được sai. 1692 01:25:35,280 --> 01:25:39,330 Trong đôi bằng trường hợp, bạn sẽ có được sự thật, vì bình đẳng đôi không 1693 01:25:39,330 --> 01:25:40,020 quan tâm đến loại. 1694 01:25:40,020 --> 01:25:42,500 Bình đẳng ba không quan tâm đến loại. 1695 01:25:42,500 --> 01:25:43,750 Câu hỏi? 1696 01:25:43,750 --> 01:25:45,790 1697 01:25:45,790 --> 01:25:48,390 OK. 1698 01:25:48,390 --> 01:25:52,870 >> Và một điều về JavaScript phạm vi toàn cầu là loại trừ khi bạn 1699 01:25:52,870 --> 01:25:53,460 trong một hàm. 1700 01:25:53,460 --> 01:25:55,660 Và nó hoạt động tương tự cách trong PHP thực sự. 1701 01:25:55,660 --> 01:25:57,500 Vì vậy, hãy đi qua ví dụ này. 1702 01:25:57,500 --> 01:25:59,110 Tôi đặt tôi đến 999. 1703 01:25:59,110 --> 01:26:00,900 Và sau đó tôi đi vào việc này cho vòng lặp. 1704 01:26:00,900 --> 01:26:06,110 Vì vậy, nếu tôi in ra tôi trong này vòng lặp, tôi hy vọng 0, 1, 2, 3, 4. 1705 01:26:06,110 --> 01:26:07,390 Tôi nhận được để i = 4. 1706 01:26:07,390 --> 01:26:10,770 Nó increments tôi bây giờ đến 5 tại kết thúc vòng lặp cho. 1707 01:26:10,770 --> 01:26:13,300 Và sau đó nó phá vỡ ra khỏi vòng lặp, bởi vì nó không thực hiện 1708 01:26:13,300 --> 01:26:14,550 điều kiện nữa. 1709 01:26:14,550 --> 01:26:16,650 >> Làm những gì bạn nghĩ tới console.log in ra? 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 Vì vậy, đó là những gì nó sẽ làm gì trong C. Trong C, bởi vì nếu bạn có như var i bên ngoài 1712 01:26:24,790 --> 01:26:28,855 và bạn có var i bên trong một vòng lặp, như một cho vòng lặp, sau đó nó làm cho nó như vậy mà 1713 01:26:28,855 --> 01:26:30,690 nó scoped rằng hai tôi lại khác. 1714 01:26:30,690 --> 01:26:34,630 Trong JavaScript, nó sẽ chỉ đối xử với nó như i cùng. 1715 01:26:34,630 --> 01:26:37,870 Tôi nhận được 5, bởi vì đó là giá trị sau khi nó đã thoát ra khỏi vòng lặp. 1716 01:26:37,870 --> 01:26:39,120 Vì vậy, những của tôi là tôi cùng. 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 Điều đó có ý nghĩa? 1719 01:26:44,130 --> 01:26:45,720 >> Vâng, nó có ý nghĩa từ một quan điểm JavaScript. 1720 01:26:45,720 --> 01:26:49,510 Nhưng mô hình tương tự không mang sang C. Họ có 1721 01:26:49,510 --> 01:26:50,310 Phạm vi quy tắc khác nhau. 1722 01:26:50,310 --> 01:26:50,630 Vâng. 1723 01:26:50,630 --> 01:26:52,566 >> ĐỐI TƯỢNG: [nghe được] 1724 01:26:52,566 --> 01:26:54,990 ngoài chức năng [nghe được]? 1725 01:26:54,990 --> 01:26:58,340 >> JOSEPH ONG: Vì vậy, bên ngoài có chức năng? 1726 01:26:58,340 --> 01:27:00,810 Vì vậy, tôi sẽ nhận được rằng chỉ trong một giây. 1727 01:27:00,810 --> 01:27:02,580 Vì vậy, chúng ta gọi foo (i). 1728 01:27:02,580 --> 01:27:06,920 Này đi tôi vào foo, gia tăng nó, và sau đó đăng nhập nó. 1729 01:27:06,920 --> 01:27:07,750 Vì vậy, nó là 5. 1730 01:27:07,750 --> 01:27:09,210 Vì vậy, nó sẽ trở thành 6. 1731 01:27:09,210 --> 01:27:11,670 Nhưng những gì tôi đang nói về là mà tôi trong chức năng đó. 1732 01:27:11,670 --> 01:27:14,430 Bởi vì đó là một tham số, nó scoped để chức năng đó. 1733 01:27:14,430 --> 01:27:17,800 Vì vậy, khi tôi thực sự nhận ra rằng chức năng, nó bây giờ sẽ đi 1734 01:27:17,800 --> 01:27:19,860 trở về tôi cũ. 1735 01:27:19,860 --> 01:27:23,000 Tôi mà chỉ vì scoped nó trong một hàm. 1736 01:27:23,000 --> 01:27:24,200 Và chúng tôi có phạm vi và chức năng. 1737 01:27:24,200 --> 01:27:29,080 Nhưng chúng tôi không có phạm vi bên ngoài các chức năng trong JavaScript. 1738 01:27:29,080 --> 01:27:31,170 Điều đó có ý nghĩa? 1739 01:27:31,170 --> 01:27:31,320 Vâng. 1740 01:27:31,320 --> 01:27:31,660 Câu hỏi. 1741 01:27:31,660 --> 01:27:34,030 >> ĐỐI TƯỢNG: Cùng [nghe được]? 1742 01:27:34,030 --> 01:27:34,500 >> JOSEPH ONG: Vì vậy, yeah. 1743 01:27:34,500 --> 01:27:36,260 Trong PHP, đó là cùng một loại điều. 1744 01:27:36,260 --> 01:27:37,680 Có một sự tinh tế nhẹ thực sự. 1745 01:27:37,680 --> 01:27:40,130 Nhưng bạn có thể hỏi tôi về sau khi xem xét. 1746 01:27:40,130 --> 01:27:43,930 Bạn không thực sự cần phải biết mà tinh tế cho bài kiểm tra. 1747 01:27:43,930 --> 01:27:47,600 Đối với tất cả các tính năng, như biến, toàn cầu và PHP, trừ khi 1748 01:27:47,600 --> 01:27:49,150 họ đang ở trong một chức năng, cùng điều trong JavaScript. 1749 01:27:49,150 --> 01:27:49,480 Vâng. 1750 01:27:49,480 --> 01:27:52,890 >> ĐỐI TƯỢNG: Tại sao điều này được cho phép trong JavaScript và không có nơi nào khác? 1751 01:27:52,890 --> 01:27:55,010 >> JOSEPH ONG: Vậy tại sao nó cho phép trong JavaScript và không có trong C? 1752 01:27:55,010 --> 01:27:58,180 Nó chỉ là bất cứ ai đến với JavaScript quyết định rằng đây là OK trong 1753 01:27:58,180 --> 01:27:59,510 JavaScript. 1754 01:27:59,510 --> 01:28:02,430 Vì vậy, nó giống như một ngôn ngữ lập trình ước như chúng tôi sẽ nói. 1755 01:28:02,430 --> 01:28:02,580 Vâng. 1756 01:28:02,580 --> 01:28:04,480 >> ĐỐI TƯỢNG: Vậy tại sao nó đi 6-5? 1757 01:28:04,480 --> 01:28:08,280 >> JOSEPH ONG: Vì vậy, nó đã đi 6-5, bởi vì khi tôi đi ngang qua tôi vào foo, mà 1758 01:28:08,280 --> 01:28:13,420 tôi bên trong của foo bây giờ là scoped để foo, bởi vì phạm vi tồn tại trong các chức năng trong 1759 01:28:13,420 --> 01:28:15,050 JavaScript. 1760 01:28:15,050 --> 01:28:18,720 Nhưng một khi tôi ra khỏi đây, bởi vì nó được scoped đến chức năng, tôi chỉ 1761 01:28:18,720 --> 01:28:24,300 bằng cách sử dụng i thường xuyên đó là bên trong phần còn lại của các dòng điều khiển. 1762 01:28:24,300 --> 01:28:25,210 Có ý nghĩa? 1763 01:28:25,210 --> 01:28:26,910 Tôi có thể di chuyển trên? 1764 01:28:26,910 --> 01:28:27,320 Được rồi. 1765 01:28:27,320 --> 01:28:29,180 Mát mẻ. 1766 01:28:29,180 --> 01:28:31,890 >> Việc chấp nhận này là đối tượng được thông qua tham khảo. 1767 01:28:31,890 --> 01:28:33,990 Bạn biết làm thế nào khi bạn vượt qua một mảng vào C bạn có thể 1768 01:28:33,990 --> 01:28:35,810 thực sự sửa đổi các mảng? 1769 01:28:35,810 --> 01:28:37,350 Đó là điều tương tự trong JavaScript. 1770 01:28:37,350 --> 01:28:42,960 Nếu tôi vượt qua một đối tượng, trong trường hợp này, tôi thông qua Milo vào chức năng catify này. 1771 01:28:42,960 --> 01:28:44,490 Milo bắt đầu ra. 1772 01:28:44,490 --> 01:28:46,310 Tên của ông là Milo chuối. 1773 01:28:46,310 --> 01:28:51,670 Tôi vượt qua đối tượng đó vào một chức năng bởi vì nó là một đối tượng, một liên kết 1774 01:28:51,670 --> 01:28:53,730 mảng trong JavaScript. 1775 01:28:53,730 --> 01:28:57,110 >> Khi tôi thực hiện một hoạt động trong chức năng, nó sẽ 1776 01:28:57,110 --> 01:28:58,560 thực sự thay đổi đối tượng. 1777 01:28:58,560 --> 01:29:01,720 Vì vậy, điều này sẽ chỉ xảy ra cho các đối tượng trong JavaScript, giống như nó xảy ra 1778 01:29:01,720 --> 01:29:09,230 cho mảng bên trong của tên C. Vì vậy, Milo sẽ thực sự trở thành con mèo bây giờ. 1779 01:29:09,230 --> 01:29:10,090 Điều đó có ý nghĩa? 1780 01:29:10,090 --> 01:29:11,840 Vì vậy, điều này chỉ làm cho các đối tượng. 1781 01:29:11,840 --> 01:29:13,090 Đối tượng được thông qua tham khảo. 1782 01:29:13,090 --> 01:29:13,400 Vâng. 1783 01:29:13,400 --> 01:29:16,850 >> ĐỐI TƯỢNG: Vì vậy, bạn đang nói rằng trái ngược với tôi biến. 1784 01:29:16,850 --> 01:29:17,240 >> JOSEPH ONG: Vâng. 1785 01:29:17,240 --> 01:29:20,330 Mà biến tôi đã được chỉ một số, phải không? 1786 01:29:20,330 --> 01:29:25,280 Nó giống như trong C khi bạn vượt qua một số nguyên một, nó làm cho một bản sao. 1787 01:29:25,280 --> 01:29:28,130 Và khi bạn vượt qua một mảng, nó thực sự thay đổi các mảng thực tế 1788 01:29:28,130 --> 01:29:32,870 C. Điều tương tự cũng xảy ra với JavaScript trong trường hợp này. 1789 01:29:32,870 --> 01:29:34,070 Được rồi. 1790 01:29:34,070 --> 01:29:38,134 Và tiếp theo, Milo là buồn bởi vì ông bây giờ là một con mèo. 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 Đó là thực sự sau khi Milo một số chuyến đi đến bác sĩ thú y. 1793 01:29:45,060 --> 01:29:46,860 >> Vì vậy, làm thế nào để chúng tôi sử dụng JavaScript trong một trang web? 1794 01:29:46,860 --> 01:29:47,790 Chúng ta có thể bao gồm nó. 1795 01:29:47,790 --> 01:29:50,090 Đây là mã HTML với các thẻ dải. 1796 01:29:50,090 --> 01:29:51,300 Vì vậy, tôi có thẻ dải đó. 1797 01:29:51,300 --> 01:29:54,820 Và sau đó tôi đặt một số mã JavaScript mã trong thẻ script. 1798 01:29:54,820 --> 01:29:56,390 Và sau đó nó thực hiện điều này. 1799 01:29:56,390 --> 01:29:58,830 Khi tôi chỉ làm điều đó như thế này, đó là gọi là JavaScript nội tuyến. 1800 01:29:58,830 --> 01:30:02,400 Đó là loại lộn xộn, bởi vì JavaScript là thực sự trong HTML. 1801 01:30:02,400 --> 01:30:07,010 >> Một cách tốt hơn để làm điều này, rất đẹp, là viết JavaScript trong một 1802 01:30:07,010 --> 01:30:10,920 tập tin bên ngoài và sau đó cung cấp thẻ script với một nguồn. 1803 01:30:10,920 --> 01:30:14,920 Và điều này sẽ đi đến tập tin JavaScript và đọc mã JavaScript từ 1804 01:30:14,920 --> 01:30:15,960 mà nộp thay. 1805 01:30:15,960 --> 01:30:18,820 Và theo cách này, bạn không có nhiều JavaScript vào đầu của bạn 1806 01:30:18,820 --> 01:30:20,760 Tập tin HTML, mà làm cho nó thực sự lộn xộn. 1807 01:30:20,760 --> 01:30:21,860 Bạn chỉ cần đặt nó ở một nơi khác. 1808 01:30:21,860 --> 01:30:24,310 Và sau đó nó sẽ đọc nó từ đó. 1809 01:30:24,310 --> 01:30:25,560 Đã làm điều đó làm cho tinh thần? 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> Vấn đề vị trí. 1812 01:30:29,640 --> 01:30:32,620 Trong trường hợp cụ thể này, kịch bản là trước khi cơ thể. 1813 01:30:32,620 --> 01:30:36,090 Vì vậy, khi tôi thực hiện điều đó, có không có gì trong cơ thể được nêu ra. 1814 01:30:36,090 --> 01:30:39,920 Có lẽ điều này sẽ làm cho nhiều hơn một chút cảm nhận khi tôi thấy phần tiếp theo này. 1815 01:30:39,920 --> 01:30:43,210 Trong trường hợp này, kịch bản ra sau khi div. 1816 01:30:43,210 --> 01:30:46,620 Vì vậy, các div thực sự xuất hiện trên trang đầu tiên. 1817 01:30:46,620 --> 01:30:49,470 Ngay tại đây trong vòng tròn này ít màu đỏ, bạn thấy văn bản xuất hiện. 1818 01:30:49,470 --> 01:30:51,810 Và sau đó là cảnh báo xuất hiện. 1819 01:30:51,810 --> 01:30:54,890 >> Trong trường hợp đầu tiên, bởi vì kịch bản đã được trước khi div, các 1820 01:30:54,890 --> 01:30:56,170 cảnh báo hiện lên trước tiên. 1821 01:30:56,170 --> 01:30:59,250 Và sau đó là div xuất hiện sau khi bạn bỏ hộp. 1822 01:30:59,250 --> 01:31:01,330 Vì vậy, việc thực hiện vấn đề. 1823 01:31:01,330 --> 01:31:02,290 Vì vậy, chúng tôi sẽ ghi nhớ điều này. 1824 01:31:02,290 --> 01:31:03,640 Đây sẽ là quan trọng trong một chút. 1825 01:31:03,640 --> 01:31:08,730 1826 01:31:08,730 --> 01:31:09,540 OK. 1827 01:31:09,540 --> 01:31:12,750 Rất tốt, làm thế nào để bạn chờ đợi cho đến khi toàn bộ trang được nạp sau đó trước khi bạn 1828 01:31:12,750 --> 01:31:13,580 thực hiện một số mã? 1829 01:31:13,580 --> 01:31:15,540 Chúng tôi sẽ nhận được vào này một chút bit sau quá. 1830 01:31:15,540 --> 01:31:19,016 Nhưng chỉ cần giữ vị trí này các vấn đề trong tâm trí khi chúng tôi 1831 01:31:19,016 --> 01:31:20,570 đến trượt khác. 1832 01:31:20,570 --> 01:31:22,030 >> Vì vậy, chúng tôi nhận được DOM bây giờ. 1833 01:31:22,030 --> 01:31:23,550 Và DOM là gì? 1834 01:31:23,550 --> 01:31:26,830 Vì vậy, nếu bạn nhìn vào mã HTML, nó chỉ một loạt các văn bản trên màn hình. 1835 01:31:26,830 --> 01:31:30,560 Vì vậy, làm thế nào để biết rằng JavaScript đây là một phần tử HTML? 1836 01:31:30,560 --> 01:31:33,410 Vì vậy, chúng ta phải có một số bộ nhớ đại diện này 1837 01:31:33,410 --> 01:31:34,930 cấu trúc mà chúng ta có. 1838 01:31:34,930 --> 01:31:40,240 Và bất cứ khi nào chúng tôi có điều này trong bộ nhớ đại diện trong JavaScript, chúng ta gọi 1839 01:31:40,240 --> 01:31:41,750 mà DOM. 1840 01:31:41,750 --> 01:31:45,130 Và nó chỉ là một cách mà mọi người quyết định rằng chúng ta nên đại diện này 1841 01:31:45,130 --> 01:31:46,400 Cấu trúc HTML như. 1842 01:31:46,400 --> 01:31:47,940 >> Và những gì DOM này như thế nào? 1843 01:31:47,940 --> 01:31:50,460 Vâng, trong đại diện bộ nhớ, chúng tôi có văn bản này. 1844 01:31:50,460 --> 01:31:52,870 Và chúng tôi biến nó thành bộ nhớ đại diện. 1845 01:31:52,870 --> 01:31:54,400 Vì vậy đây là HTML. 1846 01:31:54,400 --> 01:31:58,090 Vì vậy, đầu tiên chúng tôi tìm ra rằng mỗi Cây DOM có một tài liệu. 1847 01:31:58,090 --> 01:31:59,400 Nó trông giống như một cái cây. 1848 01:31:59,400 --> 01:32:03,550 Và các tài liệu có chứa mã HTML tag, trên thực tế tất cả mọi thứ 1849 01:32:03,550 --> 01:32:05,150 bên trong này ngay bây giờ. 1850 01:32:05,150 --> 01:32:06,970 Các thẻ HTML có hai trẻ em. 1851 01:32:06,970 --> 01:32:08,630 Nó có một cái đầu. 1852 01:32:08,630 --> 01:32:12,380 Đầu đó, nếu bạn nhìn vào thụt đầu dòng ở đó như thế nào nó có cấu trúc 1853 01:32:12,380 --> 01:32:14,960 giữa các thẻ gần, đầu có một đứa trẻ. 1854 01:32:14,960 --> 01:32:17,130 Đứa trẻ là tiêu đề. 1855 01:32:17,130 --> 01:32:18,370 Chính xác. 1856 01:32:18,370 --> 01:32:21,000 >> Bây giờ, chúng tôi có một đứa trẻ cơ thể. 1857 01:32:21,000 --> 01:32:24,870 Và sau đó cơ thể có một con gọi là gia đình. 1858 01:32:24,870 --> 01:32:27,950 Và gia đình có ba người con - 1859 01:32:27,950 --> 01:32:29,550 lâu đời nhất, trung bình, và trẻ nhất. 1860 01:32:29,550 --> 01:32:31,960 Vì vậy, bạn nên biết làm thế nào để vẽ một sơ đồ như thế này khi chúng tôi yêu cầu bạn làm thế nào 1861 01:32:31,960 --> 01:32:34,270 để vẽ một sơ đồ khi chúng tôi cung cấp bạn HTML bên trái. 1862 01:32:34,270 --> 01:32:36,350 Biết làm thế nào để sản xuất cây DOM. 1863 01:32:36,350 --> 01:32:38,930 Và bên trong của những điều này, có chỉ một số văn bản, mà tôi đã đại diện 1864 01:32:38,930 --> 01:32:40,180 hộp càng ít. 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> Không cấu trúc cây DOM này làm cho ý nghĩa và những gì DOM? 1867 01:32:47,980 --> 01:32:49,300 Vì vậy, những gì hiện các p đứng cho? 1868 01:32:49,300 --> 01:32:51,850 Ở đây, p ở đó trong thẻ đại diện cho một 1869 01:32:51,850 --> 01:32:54,510 tag đoạn trong HTML. 1870 01:32:54,510 --> 01:32:57,080 Vì vậy, bạn có thể nhìn nó lên. 1871 01:32:57,080 --> 01:32:59,290 Nhưng nó chỉ có nghĩa đó là một số không gian cho một số văn bản. 1872 01:32:59,290 --> 01:33:02,910 Và nó có một số kiểu dáng CSS mặc định, bởi vì đó là một thẻ đoạn. 1873 01:33:02,910 --> 01:33:05,130 Nhưng không thực sự lo lắng về phần đó quá nhiều. 1874 01:33:05,130 --> 01:33:07,510 Chỉ biết đó là một giữ chỗ đối với một số văn bản. 1875 01:33:07,510 --> 01:33:08,480 Vâng. 1876 01:33:08,480 --> 01:33:10,200 Câu hỏi? 1877 01:33:10,200 --> 01:33:11,021 Vâng. 1878 01:33:11,021 --> 01:33:12,374 >> ĐỐI TƯỢNG: Bạn chỉ đề cập đến CSS. 1879 01:33:12,374 --> 01:33:15,492 Gia đình băm và băm tất cả những thứ về cơ bản là 1880 01:33:15,492 --> 01:33:17,400 đại diện cho ID trong CSS? 1881 01:33:17,400 --> 01:33:18,440 >> JOSEPH ONG: Vâng, chính xác. 1882 01:33:18,440 --> 01:33:20,380 Tôi sẽ nhận được những gì các băm có nghĩa là trong một giây. 1883 01:33:20,380 --> 01:33:23,480 Khi Angela đã đi qua CSS, cô nói về bộ chọn CSS. 1884 01:33:23,480 --> 01:33:26,770 Đây là những bộ chọn CSS cô ấy đang nói về. 1885 01:33:26,770 --> 01:33:28,268 Có, Rob? 1886 01:33:28,268 --> 01:33:32,060 >> ROB Bowden: Tôi cũng sẽ bình luận mà DOM bên trong thẻ tiêu đề 1887 01:33:32,060 --> 01:33:35,385 cũng là một nút văn bản. 1888 01:33:35,385 --> 01:33:36,070 >> JOSEPH ONG: Đúng vậy. 1889 01:33:36,070 --> 01:33:38,370 Vì vậy, bên trong các thẻ tiêu đề, Tôi có một số văn bản DOM. 1890 01:33:38,370 --> 01:33:42,730 Vì vậy, thực sự, tiêu đề này cần phải có như một hộp nhỏ sắp tắt của nó là tốt. 1891 01:33:42,730 --> 01:33:45,740 Nhưng nó không thực sự quan trọng quá nhiều trong trường hợp này. 1892 01:33:45,740 --> 01:33:49,620 Chúng tôi không thực sự quan tâm đến các nút văn bản, khi chúng tôi gọi cho họ, quá nhiều. 1893 01:33:49,620 --> 01:33:50,270 OK, chúng tôi làm. 1894 01:33:50,270 --> 01:33:51,520 Rõ ràng, chúng tôi làm. 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 Và tôi sẽ khắc phục điều đó khi Tôi tải nó lên một lần nữa. 1897 01:33:57,100 --> 01:33:59,830 Điều đó có ý nghĩa? 1898 01:33:59,830 --> 01:34:01,160 >> Vì vậy, làm thế nào để chúng tôi làm việc với DOM? 1899 01:34:01,160 --> 01:34:03,790 Bất cứ khi nào bạn đối phó với DOM trong JavaScript, có hai bước. 1900 01:34:03,790 --> 01:34:05,030 Bạn chọn một phần tử DOM. 1901 01:34:05,030 --> 01:34:06,580 Và sau đó bạn làm việc với nó. 1902 01:34:06,580 --> 01:34:11,480 Vì vậy, trong trường hợp này, trừu tượng, tôi đã lựa chọn các yếu tố trung. 1903 01:34:11,480 --> 01:34:14,530 Và sau đó là một ví dụ về làm công cụ nó sẽ được thay đổi văn bản. 1904 01:34:14,530 --> 01:34:16,020 Được sử dụng để được Bob. 1905 01:34:16,020 --> 01:34:19,930 Bây giờ, những gì tôi đã làm với nó là tôi đã thay đổi Bob Milo trong trường hợp này. 1906 01:34:19,930 --> 01:34:22,130 >> Vì vậy, làm thế nào để chúng tôi thực sự làm được điều này? 1907 01:34:22,130 --> 01:34:23,440 Làm thế nào để chúng tôi làm lựa chọn? 1908 01:34:23,440 --> 01:34:26,560 Và làm thế nào để chúng tôi làm các công cụ để điều khi chúng tôi đã thực hiện nó? 1909 01:34:26,560 --> 01:34:30,470 Vâng, con đường các bạn đã học được nó trong lớp này là bằng cách sử dụng một cái gì đó chúng tôi 1910 01:34:30,470 --> 01:34:32,420 gọi là jQuery. 1911 01:34:32,420 --> 01:34:33,910 Vì vậy, jQuery là gì? 1912 01:34:33,910 --> 01:34:37,220 jQuery là một thư viện mà làm cho JavaScript dễ dàng hơn để viết. 1913 01:34:37,220 --> 01:34:39,500 Vì vậy, một người nào đó đã dành thời gian và đã viết jQuery. 1914 01:34:39,500 --> 01:34:41,530 >> jQuery thực sự được viết trong JavaScript. 1915 01:34:41,530 --> 01:34:44,550 Và sau đó bởi vì họ đã làm điều này, chúng ta có một bó toàn bộ các chức năng mà 1916 01:34:44,550 --> 01:34:46,020 chúng ta có thể sử dụng mà làm cho chúng tôi sống thực sự dễ dàng. 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 Vì vậy, một số là gì điều đó không? 1919 01:34:50,030 --> 01:34:51,650 Nó làm cho việc lựa chọn các yếu tố dễ dàng hơn. 1920 01:34:51,650 --> 01:34:54,020 Nó làm thay đổi HTML, thêm các lớp học dễ dàng hơn. 1921 01:34:54,020 --> 01:34:55,360 Nó làm cho Ajax dễ dàng hơn. 1922 01:34:55,360 --> 01:34:58,230 Chúng tôi sẽ nhận được rằng trong một giây. 1923 01:34:58,230 --> 01:35:00,630 >> Và nó cũng tương tự như các thư viện C. 1924 01:35:00,630 --> 01:35:03,090 Vì vậy, bạn bao gồm string.h, bạn nhận được strlen. 1925 01:35:03,090 --> 01:35:04,680 Bạn nhận được strcpy, tất cả những điều này. 1926 01:35:04,680 --> 01:35:09,650 Khi bạn bao gồm jQuery, bạn có được tốt đẹp cách để lựa chọn các yếu tố để thay đổi 1927 01:35:09,650 --> 01:35:10,390 điều, vân vân. 1928 01:35:10,390 --> 01:35:12,990 Bạn sẽ có được chức năng thêm rằng JavaScript không cung cấp cho bạn. 1929 01:35:12,990 --> 01:35:15,310 Vì vậy, jQuery không phải là JavaScript. 1930 01:35:15,310 --> 01:35:18,660 jQuery là một thư viện mà được viết bằng JavaScript mà làm cho JavaScript 1931 01:35:18,660 --> 01:35:20,440 dễ dàng hơn để viết. 1932 01:35:20,440 --> 01:35:23,170 >> Vì vậy, jQuery không phải là một lập trình ngôn ngữ. 1933 01:35:23,170 --> 01:35:24,540 Nhưng JavaScript là. 1934 01:35:24,540 --> 01:35:27,420 1935 01:35:27,420 --> 01:35:27,590 thực hiện. 1936 01:35:27,590 --> 01:35:30,420 Chắc chắn bạn sẽ có được các thuật ngữ của bạn ngay. 1937 01:35:30,420 --> 01:35:32,490 Bất kỳ câu hỏi? 1938 01:35:32,490 --> 01:35:33,882 Vâng. 1939 01:35:33,882 --> 01:35:35,132 Là một câu hỏi? 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 Được rồi. 1942 01:35:38,350 --> 01:35:40,080 Vì vậy, làm thế nào để bạn sử dụng jQuery? 1943 01:35:40,080 --> 01:35:42,390 Vâng, khi bạn đang viết một số Mã JavaScript và bạn bao gồm một 1944 01:35:42,390 --> 01:35:45,570 jQuery ở trên cùng của tập tin của bạn như một tập tin kịch bản, bạn sử dụng các ký hiệu đô la 1945 01:35:45,570 --> 01:35:47,310 bây giờ để có được quyền truy cập vào jQuery. 1946 01:35:47,310 --> 01:35:49,860 Và điều này là khác nhau từ ký hiệu đô la trong PHP. 1947 01:35:49,860 --> 01:35:51,590 >> Đó là biểu tượng cùng bạn gõ trên bàn phím của bạn. 1948 01:35:51,590 --> 01:35:52,780 Nhưng họ có ý nghĩa rất khác nhau. 1949 01:35:52,780 --> 01:35:56,090 Ký hiệu đô la trong PHP có nghĩa này là làm thế nào tôi khai báo một biến. 1950 01:35:56,090 --> 01:35:59,120 Trong JavaScript, khi bạn đã bao gồm jQuery, nó là viết tắt của jQuery. 1951 01:35:59,120 --> 01:36:01,280 Vì vậy, giữ cho rằng trong tâm trí. 1952 01:36:01,280 --> 01:36:03,420 Vậy làm thế nào chúng ta có thể chọn các yếu tố DOM? 1953 01:36:03,420 --> 01:36:06,500 Vâng, khi bạn làm điều đó JavaScript xấu xí cách, bạn truy cập vào 1954 01:36:06,500 --> 01:36:08,240 tài liệu biến toàn cầu. 1955 01:36:08,240 --> 01:36:11,170 Và sau đó bạn sẽ có được yếu tố gia đình ID. 1956 01:36:11,170 --> 01:36:15,270 Điều này thực sự lâu dài và dài dòng và không phải là rất tốt đẹp. 1957 01:36:15,270 --> 01:36:18,190 >> Hoặc bạn có thể nhận được tất cả các yếu tố mà là một thẻ p. 1958 01:36:18,190 --> 01:36:20,080 Điều đó làm việc quá trong JavaScript. 1959 01:36:20,080 --> 01:36:22,470 Nhưng chúng tôi không bao giờ thực sự thấy bạn cú pháp quá nhiều. 1960 01:36:22,470 --> 01:36:24,620 Những gì chúng tôi cho thấy bạn là jQuery. 1961 01:36:24,620 --> 01:36:28,720 Vì vậy, toàn bộ chọn lên đó mà được thể hiện trong JavaScript chỉ được 1962 01:36:28,720 --> 01:36:33,320 ngưng tụ với đồng đô la rất tốt đẹp đăng ký gia đình hashtag. 1963 01:36:33,320 --> 01:36:38,480 Và $ p, chỉ cần nơi đó là như thế. 1964 01:36:38,480 --> 01:36:41,690 Nếu bạn muốn chọn tất cả các thẻ p trong một gia đình, chúng tôi đặt một không gian 1965 01:36:41,690 --> 01:36:42,890 giữa hai người. 1966 01:36:42,890 --> 01:36:44,815 Và bây giờ, chúng tôi nhận được tất cả các p thẻ trong một gia đình. 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> Và tìm kiếm quen thuộc? 1969 01:36:50,380 --> 01:36:52,880 Vâng, Angela nói về CSS Selectors. 1970 01:36:52,880 --> 01:36:54,200 Hãy cho tôi một giây. 1971 01:36:54,200 --> 01:36:57,230 Và do đó, để chọn một phần tử, bạn chỉ cần sử dụng những điều tương tự như bạn 1972 01:36:57,230 --> 01:36:58,530 sẽ làm gì với một chọn CSS. 1973 01:36:58,530 --> 01:37:00,910 Nếu bạn đặt một băm trước của nó, nó chọn bởi ID. 1974 01:37:00,910 --> 01:37:02,220 Một dấu chấm chọn của các lớp học. 1975 01:37:02,220 --> 01:37:06,230 Nếu bạn chỉ có điều không có băm hoặc dấu chấm, nó chọn những thẻ. 1976 01:37:06,230 --> 01:37:07,140 Câu hỏi. 1977 01:37:07,140 --> 01:37:07,470 Có? 1978 01:37:07,470 --> 01:37:11,510 >> ĐỐI TƯỢNG: Khi chúng ta sử dụng dấu chấm trong của chúng tôi HTML, là không jQuery? 1979 01:37:11,510 --> 01:37:13,520 >> JOSEPH ONG: Dot trong HTML của chúng tôi là một điều JavaScript. 1980 01:37:13,520 --> 01:37:14,750 Nó không phải là một điều jQuery. 1981 01:37:14,750 --> 01:37:17,620 Cách các bạn đã học nó với jQuery là sử dụng html.. 1982 01:37:17,620 --> 01:37:21,510 Và sau đó bạn thông qua nó bất cứ điều gì HTML là có được. 1983 01:37:21,510 --> 01:37:23,480 Vì vậy, tôi sẽ nhận được rằng chỉ trong một thứ hai thực sự. 1984 01:37:23,480 --> 01:37:27,800 Vì vậy, làm thế nào để chúng tôi làm công cụ để yếu tố một khi chúng ta đã chọn nó? 1985 01:37:27,800 --> 01:37:30,130 Vì vậy, đó là một ví dụ về lựa chọn một phần tử. 1986 01:37:30,130 --> 01:37:32,280 Vì vậy, bây giờ, chúng tôi muốn làm công cụ để nó. 1987 01:37:32,280 --> 01:37:35,730 >> Vì vậy, trong trường hợp này, hãy để tôi quay trở lại lại slide trước đó. 1988 01:37:35,730 --> 01:37:37,360 Đó là Bob trước. 1989 01:37:37,360 --> 01:37:40,660 Và tôi muốn thay đổi điều đó trong HTML để Milo. 1990 01:37:40,660 --> 01:37:43,240 Vì vậy, tôi gọi hàm HTML từ các yếu tố. 1991 01:37:43,240 --> 01:37:45,580 Đó là chức năng HTML một phương pháp phần tử. 1992 01:37:45,580 --> 01:37:47,430 Và sau đó tôi cung cấp cho nó những gì Tôi muốn các HTML được. 1993 01:37:47,430 --> 01:37:50,560 Và nó chỉ thay thế những gì bên trong của mà thẻ với bất cứ điều gì tôi cho nó. 1994 01:37:50,560 --> 01:37:50,830 Vâng. 1995 01:37:50,830 --> 01:37:51,170 Câu hỏi? 1996 01:37:51,170 --> 01:37:57,397 >> ĐỐI TƯỢNG: Các hashtag được sử dụng chỉ jQuery. 1997 01:37:57,397 --> 01:37:59,313 [Nghe được] 1998 01:37:59,313 --> 01:38:01,230 chúng tôi sẽ không sử dụng đó. 1999 01:38:01,230 --> 01:38:01,960 >> JOSEPH ONG: Vâng, chính xác. 2000 01:38:01,960 --> 01:38:03,750 Nhưng đừng lo lắng quá nhiều JavaScript về tinh khiết. 2001 01:38:03,750 --> 01:38:06,670 Tôi chỉ muốn các bạn tập trung vào cách bạn sẽ làm điều đó với jQuery, vì 2002 01:38:06,670 --> 01:38:10,020 đó sẽ là quan trọng phần trên các bài kiểm tra. 2003 01:38:10,020 --> 01:38:10,400 Đúng. 2004 01:38:10,400 --> 01:38:10,880 Chính xác. 2005 01:38:10,880 --> 01:38:16,025 Vì vậy, bạn thấy hashtag đó, để tương ứng để lựa chọn các phần tử với 2006 01:38:16,025 --> 01:38:18,310 giữa ID vì hashtag đó. 2007 01:38:18,310 --> 01:38:19,670 Hashtag có nghĩa là ID. 2008 01:38:19,670 --> 01:38:22,870 Và yếu tố này có một ID của trung. 2009 01:38:22,870 --> 01:38:24,366 Vì vậy, đó là yếu tố chúng tôi lựa chọn. 2010 01:38:24,366 --> 01:38:27,160 >> ĐỐI TƯỢNG: [nghe được]. 2011 01:38:27,160 --> 01:38:31,090 ký hiệu đô la hashtag [nghe được]? 2012 01:38:31,090 --> 01:38:31,710 >> JOSEPH ONG: Vì vậy, không có. 2013 01:38:31,710 --> 01:38:33,280 Câu hỏi đặt ra là bạn có thể sử dụng. Giá trị. 2014 01:38:33,280 --> 01:38:36,445 Và giá trị. Chỉ hoạt động trên các yếu tố đó là đầu vào. 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 Trong jQuery, nó sẽ là . Val, không giá trị.. 2017 01:38:45,495 --> 01:38:49,080 Vì vậy, tôi sẽ nhận được một ví dụ nhỏ thể hiện tất cả điều này kết hợp 2018 01:38:49,080 --> 01:38:49,850 trong một giây. 2019 01:38:49,850 --> 01:38:53,130 Nhưng tôi nghĩ rằng điều này phục vụ một chút đoạn có ý nghĩa với mọi người cho đến nay. 2020 01:38:53,130 --> 01:38:55,450 Muốn thay đổi HTML, gọi phương thức HTML. 2021 01:38:55,450 --> 01:38:56,432 Vâng. 2022 01:38:56,432 --> 01:38:58,200 >> ĐỐI TƯỢNG: bạn có thể giải thích phương pháp một lần nữa? 2023 01:38:58,200 --> 01:39:01,900 >> JOSEPH ONG: Vì vậy, một phương pháp chỉ là một chức năng mà thuộc về một, trong này 2024 01:39:01,900 --> 01:39:04,590 trường hợp, một trong những yếu tố DOM, bởi vì bạn thấy tôi 2025 01:39:04,590 --> 01:39:05,940 chọn phần tử đầu tiên. 2026 01:39:05,940 --> 01:39:07,320 Trên thực tế, hãy để tôi sử dụng chuột. 2027 01:39:07,320 --> 01:39:09,330 Tôi chọn phần tử đầu tiên. 2028 01:39:09,330 --> 01:39:12,310 Và sau đó tôi gọi là HTML này chức năng mà nó có. 2029 01:39:12,310 --> 01:39:15,710 Và bởi vì chức năng này thuộc về điều này, chúng tôi gọi nó là một phương pháp. 2030 01:39:15,710 --> 01:39:19,480 Đó chỉ là một tên ưa thích cho nó. 2031 01:39:19,480 --> 01:39:20,730 Nói rằng một lần nữa. 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 Vì vậy, hãy nhớ rằng, chúng tôi đã chọn các yếu tố bây giờ. 2034 01:39:25,170 --> 01:39:27,810 Và chúng tôi đã đặt nó bên trong biến yếu tố. 2035 01:39:27,810 --> 01:39:28,600 Đúng không? 2036 01:39:28,600 --> 01:39:34,380 >> Vì vậy, khi chúng ta muốn thay đổi HTML trên bên trong, bởi vì nó là Bob trước, bạn 2037 01:39:34,380 --> 01:39:36,420 muốn thay đổi văn bản để Milo. 2038 01:39:36,420 --> 01:39:37,920 Vì vậy, chúng ta gọi là HTML. 2039 01:39:37,920 --> 01:39:41,610 Và chúng tôi nói với nó những gì HTML bên trong yếu tố đó phải được bây giờ. 2040 01:39:41,610 --> 01:39:44,107 Và do đó, nó thay đổi nó để Milo, bởi vì tôi đã cho nó Milo. 2041 01:39:44,107 --> 01:39:46,542 >> ĐỐI TƯỢNG: Vì vậy, họ đang làm việc với nhau. 2042 01:39:46,542 --> 01:39:47,030 [Nghe được] 2043 01:39:47,030 --> 01:39:47,390 >> JOSEPH ONG: Vâng, vâng. 2044 01:39:47,390 --> 01:39:48,180 Họ đang làm việc với nhau. 2045 01:39:48,180 --> 01:39:50,210 Vì vậy, một trong số họ lựa chọn các yếu tố đầu tiên. 2046 01:39:50,210 --> 01:39:52,863 Và điều thứ hai không một cái gì đó cho nó. 2047 01:39:52,863 --> 01:39:53,790 Vâng. 2048 01:39:53,790 --> 01:39:56,168 >> ĐỐI TƯỢNG: [nghe được]. 2049 01:39:56,168 --> 01:40:01,280 Nếu phương pháp này là khác nhau từ trong HTML bạn có phương pháp bằng thực tế. 2050 01:40:01,280 --> 01:40:01,560 >> JOSEPH ONG: Vâng. 2051 01:40:01,560 --> 01:40:03,370 Đó là một phương pháp khác nhau. 2052 01:40:03,370 --> 01:40:04,670 Đó là một phương pháp khác nhau. 2053 01:40:04,670 --> 01:40:07,860 Và chúng ta có thể nói về điều này chỉ trong một giây khi chúng tôi nhận được một ví dụ. 2054 01:40:07,860 --> 01:40:12,000 Tôi muốn chắc chắn rằng chúng ta tăng tốc độ bởi vì chúng ta đang sắp hết thời gian. 2055 01:40:12,000 --> 01:40:15,360 Nhưng chúng tôi đã chạy cách qua thời gian bây giờ. 2056 01:40:15,360 --> 01:40:15,490 OK. 2057 01:40:15,490 --> 01:40:16,430 Mát mẻ. 2058 01:40:16,430 --> 01:40:20,130 Vì vậy, nếu bạn muốn thêm vào một lớp học, có cũng là một phương thức add lớp. 2059 01:40:20,130 --> 01:40:24,300 Đây chỉ là một ví dụ về những gì bạn có thể làm với jQuery. 2060 01:40:24,300 --> 01:40:25,950 Mà chỉ cần thêm một lớp. 2061 01:40:25,950 --> 01:40:28,660 >> Nếu bạn muốn loại bỏ nó, bạn có thể gọi loại bỏ. 2062 01:40:28,660 --> 01:40:32,280 Đó chỉ là một điều bạn có thể làm. 2063 01:40:32,280 --> 01:40:35,680 Vì vậy, nhiều ví dụ về những điều bạn có thể làm. 2064 01:40:35,680 --> 01:40:37,510 Vì vậy, có thể tôi chỉ cần đặt nó ở đầu như thế này? 2065 01:40:37,510 --> 01:40:38,760 Loại bỏ nhỏ nhất. 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 Nếu tôi chỉ cần thực hiện JavaScript tại đầu tập tin của tôi, mà sẽ làm việc? 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 Đúng. 2070 01:40:48,920 --> 01:40:50,530 Vì giữa không tồn tại được nêu ra. 2071 01:40:50,530 --> 01:40:51,840 Vì vậy, đây không phải là đi để làm việc. 2072 01:40:51,840 --> 01:40:52,800 Để thực hiện. 2073 01:40:52,800 --> 01:40:55,040 Nó đi đến đỉnh đầu tiên. 2074 01:40:55,040 --> 01:40:55,540 Những gì? 2075 01:40:55,540 --> 01:40:57,450 >> ĐỐI TƯỢNG: nhỏ nhất không tồn tại chưa? 2076 01:40:57,450 --> 01:40:57,810 >> JOSEPH ONG: Vâng. 2077 01:40:57,810 --> 01:40:58,710 Trẻ không tồn tại được nêu ra. 2078 01:40:58,710 --> 01:40:59,600 Chính xác. 2079 01:40:59,600 --> 01:41:01,320 >> ĐỐI TƯỢNG: Bạn nói trung. 2080 01:41:01,320 --> 01:41:01,510 >> JOSEPH ONG: Xin lỗi. 2081 01:41:01,510 --> 01:41:02,720 Trẻ không tồn tại được nêu ra. 2082 01:41:02,720 --> 01:41:04,510 Và điều khác là tôi đã không bao gồm jQuery 2083 01:41:04,510 --> 01:41:06,580 nộp yêu cầu kịch bản src. 2084 01:41:06,580 --> 01:41:07,960 Vì vậy, đó không phải đi làm việc. 2085 01:41:07,960 --> 01:41:09,580 Trên thực tế, tôi đã không làm điều đó trong slide tiếp theo, đó là 2086 01:41:09,580 --> 01:41:10,700 phải khắc phục điều đó một trong hai. 2087 01:41:10,700 --> 01:41:14,120 Nhưng cách chúng ta làm điều này là JavaScript là sự kiện hướng. 2088 01:41:14,120 --> 01:41:17,410 Vì vậy, những gì chúng tôi làm là chúng tôi sử dụng một sự kiện xử lý để thực hiện điều này. 2089 01:41:17,410 --> 01:41:19,510 Và vì vậy tôi chọn tài liệu thiết lập đầu tiên. 2090 01:41:19,510 --> 01:41:23,810 Tôi nói, OK, khi tài liệu sẵn sàng, hãy để tôi chạy một chức năng. 2091 01:41:23,810 --> 01:41:25,470 Vì vậy, đó là tất cả những phương tiện cú pháp. 2092 01:41:25,470 --> 01:41:27,100 >> Tôi lựa chọn tài liệu. 2093 01:41:27,100 --> 01:41:29,530 Bây giờ, khi tài liệu sẵn sàng, chạy chức năng. 2094 01:41:29,530 --> 01:41:32,970 Và vì vậy ở đây khi tài liệu sẵn sàng, có nghĩa là tất cả các HTML có 2095 01:41:32,970 --> 01:41:36,140 nạp, sau đó tôi chạy chức năng loại bỏ yếu tố đó. 2096 01:41:36,140 --> 01:41:40,270 Và vì vậy bây giờ, khi tôi chạy chức năng này mà tôi thông qua thành sẵn sàng, tôi 2097 01:41:40,270 --> 01:41:43,780 đảm bảo rằng tất cả các HTML trên trang sẽ tồn tại đầu tiên. 2098 01:41:43,780 --> 01:41:44,100 Vâng. 2099 01:41:44,100 --> 01:41:44,425 Câu hỏi? 2100 01:41:44,425 --> 01:41:48,200 >> ĐỐI TƯỢNG: các từ khóa sự kiện là gì trong chức năng? 2101 01:41:48,200 --> 01:41:51,750 >> JOSEPH ONG: Vì vậy, từ khóa sự kiện trong chức năng chỉ là một tham số 2102 01:41:51,750 --> 01:41:53,490 được thông qua với chức năng cho bất kỳ sự kiện. 2103 01:41:53,490 --> 01:41:55,470 Nó chỉ là một cái gì đó bạn nhận được miễn phí. 2104 01:41:55,470 --> 01:41:59,320 Khi bạn đang sử dụng bộ xử lý quan trọng trong pset8, sự kiện đó có thể cho bạn, cho 2105 01:41:59,320 --> 01:42:01,350 Ví dụ, mà chính bạn nhấn vào. 2106 01:42:01,350 --> 01:42:05,540 Trong trường hợp này, một sự kiện đã sẵn sàng, nó thực sự không phải là siêu hữu ích. 2107 01:42:05,540 --> 01:42:08,640 Nhưng đối với một sự kiện phím, nó nhiều hơn hữu ích, vì bạn có thể biết được 2108 01:42:08,640 --> 01:42:12,330 chính bạn nhấn bằng cách truy cập chính đang ra rằng đối tượng sự kiện. 2109 01:42:12,330 --> 01:42:13,530 Đúng không? 2110 01:42:13,530 --> 01:42:15,160 Điều đó có ý nghĩa? 2111 01:42:15,160 --> 01:42:16,280 OK. 2112 01:42:16,280 --> 01:42:16,580 Vâng. 2113 01:42:16,580 --> 01:42:17,150 Câu hỏi? 2114 01:42:17,150 --> 01:42:19,290 >> ĐỐI TƯỢNG: Vì vậy, bạn có thể đặt thẻ script xuống thấp hơn? 2115 01:42:19,290 --> 01:42:19,940 >> JOSEPH ONG: Vì vậy, yeah. 2116 01:42:19,940 --> 01:42:21,500 Bạn có thể đặt kịch bản thẻ xuống thấp hơn. 2117 01:42:21,500 --> 01:42:23,090 Nhưng sau đó nó chỉ thực sự trở nên lộn xộn. 2118 01:42:23,090 --> 01:42:26,590 Và chúng tôi muốn tập trung tất cả mã của chúng tôi ở một nơi. 2119 01:42:26,590 --> 01:42:28,290 Và điều này sẽ cho phép chúng ta làm điều đó. 2120 01:42:28,290 --> 01:42:32,010 Nhớ trước đó tôi đã nói có một đẹp hơn cách để đảm bảo rằng yếu tố này 2121 01:42:32,010 --> 01:42:33,880 trên trang trước khi bạn thực thi mã? 2122 01:42:33,880 --> 01:42:36,079 Và đây chỉ là một cách tốt đẹp bạn sẽ thực hiện điều đó. 2123 01:42:36,079 --> 01:42:37,329 >> ĐỐI TƯỢNG: [nghe được]. 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> JOSEPH ONG: Vâng. 2126 01:42:42,230 --> 01:42:43,460 Bạn vẫn sẽ có, phải không? 2127 01:42:43,460 --> 01:42:46,930 Vì nhớ, bạn đã bao gồm các nộp ở đầu trang. 2128 01:42:46,930 --> 01:42:49,890 Vì vậy, nó sẽ thực hiện đầu tiên trước khi bạn nhận được để dưới cùng của trang. 2129 01:42:49,890 --> 01:42:54,600 2130 01:42:54,600 --> 01:42:55,180 OK. 2131 01:42:55,180 --> 01:42:59,210 Vì vậy, bạn cũng có thể thêm một khác nhau loại xử lý sự kiện. 2132 01:42:59,210 --> 01:43:00,640 Điều này chỉ xử lý nhấp chuột. 2133 01:43:00,640 --> 01:43:03,910 Khi tôi bấm vào trẻ, sau đó nó sẽ bật lên với một cảnh báo. 2134 01:43:03,910 --> 01:43:05,440 Đây chỉ là một khác nhau loại sự kiện. 2135 01:43:05,440 --> 01:43:08,840 Như trái ngược với các sự kiện đã sẵn sàng, bây giờ bạn sử dụng sự kiện click khi bạn nhận được 2136 01:43:08,840 --> 01:43:10,190 nhấp chuột vào một phần tử. 2137 01:43:10,190 --> 01:43:13,860 >> Và do đó trong trường hợp này, hãy nhớ, nhấp chuột xử lý được gắn liền với trẻ. 2138 01:43:13,860 --> 01:43:16,080 Vì vậy, nó chỉ xảy ra khi Tôi bấm vào trẻ. 2139 01:43:16,080 --> 01:43:19,510 Và trong một trong những khác, các sự kiện sẵn sàng đã được gắn liền với tài liệu. 2140 01:43:19,510 --> 01:43:23,750 Vì vậy, nó đợi cho tài liệu sẵn sàng. 2141 01:43:23,750 --> 01:43:25,120 Có ý nghĩa? 2142 01:43:25,120 --> 01:43:26,190 Tôi nghĩ rằng tôi có thể di chuyển trên. 2143 01:43:26,190 --> 01:43:26,610 Vâng. 2144 01:43:26,610 --> 01:43:26,980 Câu hỏi? 2145 01:43:26,980 --> 01:43:28,230 >> ĐỐI TƯỢNG: [nghe được]. 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 trong trường hợp này bạn sử dụng [không nghe được]. 2148 01:43:33,620 --> 01:43:36,650 >> JOSEPH ONG: Oh, yeah, bởi vì trong này trường hợp, tôi phải đợi cho trẻ 2149 01:43:36,650 --> 01:43:40,740 yếu tố để xuất hiện trên màn hình đầu tiên trước khi tôi có thể đính kèm một nhấp chuột để xử lý 2150 01:43:40,740 --> 01:43:43,062 nó, đó là lý do tại sao tôi đặt nó bên trong của một tài liệu đã sẵn sàng. 2151 01:43:43,062 --> 01:43:45,780 2152 01:43:45,780 --> 01:43:46,840 OK. 2153 01:43:46,840 --> 01:43:52,390 Và tiếp theo, vì vậy đây là một ví dụ lớn làm thế nào bạn sẽ kết hợp tất cả mọi thứ. 2154 01:43:52,390 --> 01:43:55,930 Đây chỉ là một ví dụ xác nhận hình thức bạn đã thấy trong bài giảng. 2155 01:43:55,930 --> 01:43:58,410 Vì vậy, mang nó từng bước như bạn đi qua này. 2156 01:43:58,410 --> 01:43:59,590 Và nó sẽ được hoàn toàn OK. 2157 01:43:59,590 --> 01:44:01,400 Chỉ cần đọc nó từ trên xuống dưới. 2158 01:44:01,400 --> 01:44:03,030 >> Tôi có một hình thức ở phía dưới. 2159 01:44:03,030 --> 01:44:07,590 Khi tài liệu đã sẵn sàng, tôi đính kèm một trình xử lý mẫu, như vậy mà 2160 01:44:07,590 --> 01:44:12,910 khi tôi nộp đơn, tôi nhận được các giá trị mỗi bên trong những yếu tố đầu vào. 2161 01:44:12,910 --> 01:44:14,560 Và tôi kiểm tra xem nó là trống. 2162 01:44:14,560 --> 01:44:17,090 Nếu nó trống, tôi trở lại sai, bởi vì Tôi không muốn gửi biểu mẫu, 2163 01:44:17,090 --> 01:44:18,950 bởi vì hình thức là sai. 2164 01:44:18,950 --> 01:44:22,040 Nếu mật khẩu là trống hoặc nó ít hơn tám ký tự, tôi không nộp 2165 01:44:22,040 --> 01:44:24,470 hình thức, bởi vì đó cũng là sai. 2166 01:44:24,470 --> 01:44:28,150 Và sai trở lại chỉ ngăn chặn hình thức nộp và 2167 01:44:28,150 --> 01:44:30,150 đi đến một trang mới. 2168 01:44:30,150 --> 01:44:31,310 >> Và hy vọng, điều này có ý nghĩa. 2169 01:44:31,310 --> 01:44:34,650 Tôi nghĩ các bạn nên đi bộ qua đang từng bước một mình. 2170 01:44:34,650 --> 01:44:38,350 Và một khi bạn hiểu những gì các lựa chọn các yếu tố và làm công cụ để nó 2171 01:44:38,350 --> 01:44:40,520 thực sự đòi hỏi, điều này sẽ làm rất nhiều ý nghĩa với bạn. 2172 01:44:40,520 --> 01:44:41,295 Có? 2173 01:44:41,295 --> 01:44:44,150 >> ĐỐI TƯỢNG: làm gì tên = tên người dùng nghĩa là gì? 2174 01:44:44,150 --> 01:44:48,530 >> JOSEPH ONG: Vì vậy, các tên = tên người dùng và name = mật khẩu chỉ có nghĩa là nhìn vào 2175 01:44:48,530 --> 01:44:50,730 thuộc tính của bất cứ điều gì bạn đang lựa chọn. 2176 01:44:50,730 --> 01:44:51,790 Và sau đó có để phù hợp. 2177 01:44:51,790 --> 01:44:53,870 Vì vậy, chúng tôi đi vào đăng ký. 2178 01:44:53,870 --> 01:44:56,240 Và sau đó chúng ta nhìn vào tất cả các yếu tố đầu vào và đăng ký. 2179 01:44:56,240 --> 01:44:59,990 Và sau đó chúng tôi chọn một trong những nơi mà tên thuộc tính bằng tên người dùng. 2180 01:44:59,990 --> 01:45:04,040 Để chọn đầu tiên chỉ selects đầu vào tên người dùng. 2181 01:45:04,040 --> 01:45:08,220 Và chọn thứ hai chỉ chọn mật khẩu một, bởi vì những người có 2182 01:45:08,220 --> 01:45:12,240 thuộc tính tên của họ thiết lập như những gì họ đang coi được. 2183 01:45:12,240 --> 01:45:12,575 Câu hỏi? 2184 01:45:12,575 --> 01:45:17,030 >> ĐỐI TƯỢNG: Mở trình, làm thế nào phần dưới cùng giải quyết phần trên? 2185 01:45:17,030 --> 01:45:19,350 >> JOSEPH ONG: Vì vậy, đó là bởi vì của xử lý sự kiện. 2186 01:45:19,350 --> 01:45:23,000 Vì vậy, chúng tôi đang chờ đợi một sự kiện trình mà bị sa thải từ hình thức. 2187 01:45:23,000 --> 01:45:24,730 Và đó là tất cả những gì trình. 2188 01:45:24,730 --> 01:45:26,080 Tại sao tôi gọi trình trên đó? 2189 01:45:26,080 --> 01:45:28,870 Nó nói, khi biểu mẫu được gửi, Tôi nhận được một sự kiện trình. 2190 01:45:28,870 --> 01:45:33,480 Vì vậy, hãy để tôi chỉ đánh chặn đó và sau đó chạy mã này để thay thế. 2191 01:45:33,480 --> 01:45:33,823 Có? 2192 01:45:33,823 --> 01:45:35,866 >> ĐỐI TƯỢNG: Tại sao bạn phải có chức năng sự kiện? 2193 01:45:35,866 --> 01:45:38,580 Tại sao không có thể bạn chỉ cần [nghe được]? 2194 01:45:38,580 --> 01:45:41,140 >> JOSEPH ONG: Bởi vì trong JavaScript, bạn phải khai báo các chức năng. 2195 01:45:41,140 --> 01:45:42,910 Đó chỉ là cách nó hoạt động trong JavaScript. 2196 01:45:42,910 --> 01:45:44,800 Bạn có thể nói nó sẽ để chạy một chức năng. 2197 01:45:44,800 --> 01:45:47,290 Vì vậy, bạn đang nói với nó rằng bạn mong đợi một chức năng ở đây thay vì 2198 01:45:47,290 --> 01:45:48,260 chỉ dấu ngoặc nhọn. 2199 01:45:48,260 --> 01:45:50,460 >> ĐỐI TƯỢNG: Và chức năng là bất cứ điều gì sau? 2200 01:45:50,460 --> 01:45:50,650 >> JOSEPH ONG: Vâng. 2201 01:45:50,650 --> 01:45:52,790 Chức năng là bất cứ điều gì là bên trong các dấu ngoặc nhọn sau 2202 01:45:52,790 --> 01:45:53,630 mà chức năng từ khóa. 2203 01:45:53,630 --> 01:45:54,045 Có? 2204 01:45:54,045 --> 01:45:55,295 >> ĐỐI TƯỢNG: [nghe được]. 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> JOSEPH ONG: Đối với trình? 2207 01:46:00,660 --> 01:46:03,520 >> ĐỐI TƯỢNG: Không, vì chức năng mà không có sự kiện này. 2208 01:46:03,520 --> 01:46:03,770 >> JOSEPH ONG: Vâng. 2209 01:46:03,770 --> 01:46:05,610 Vì vậy, không có sự kiện này, bạn có thể có điều đó. 2210 01:46:05,610 --> 01:46:08,480 Nếu bạn không cần sự kiện này, sau đó bạn chỉ có thể bỏ qua nó. 2211 01:46:08,480 --> 01:46:12,220 Nhưng nếu bạn làm, sau đó bạn chỉ cần đặt nó ở đó. 2212 01:46:12,220 --> 01:46:12,520 Vâng. 2213 01:46:12,520 --> 01:46:13,190 Câu hỏi nhanh chóng? 2214 01:46:13,190 --> 01:46:14,440 >> ĐỐI TƯỢNG: [nghe được]. 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> JOSEPH ONG: Vâng. 2217 01:46:21,440 --> 01:46:24,550 Bởi vì những gì bạn cần phải làm, document.ready chỉ nói chờ đợi cho tất cả 2218 01:46:24,550 --> 01:46:26,540 HTML trên trang để tải đầu tiên. 2219 01:46:26,540 --> 01:46:30,510 Và thông thường, bạn muốn các yếu tố của bạn trước khi bạn chạy mã bất kỳ. 2220 01:46:30,510 --> 01:46:31,030 Được rồi. 2221 01:46:31,030 --> 01:46:32,180 Chúng tôi có để có được Ajax. 2222 01:46:32,180 --> 01:46:33,110 Chúng tôi không có nhiều thời gian. 2223 01:46:33,110 --> 01:46:35,170 Vì vậy, ưu và nhược điểm. 2224 01:46:35,170 --> 01:46:37,450 JavaScript là thử dễ dàng hơn viết với jQuery. 2225 01:46:37,450 --> 01:46:38,930 Nhưng jQuery là loại chậm. 2226 01:46:38,930 --> 01:46:42,290 >> Nó giống như PHP là chậm hơn so với C, bởi vì nó giải thích. 2227 01:46:42,290 --> 01:46:45,690 Và jQuery là một chút chậm hơn so với JavaScript, bởi vì nó rất nhiều 2228 01:46:45,690 --> 01:46:46,630 thứ dưới mui xe. 2229 01:46:46,630 --> 01:46:48,660 Và do đó, nếu bạn đang sử dụng jQuery, nó chỉ cần một chút chậm hơn so với 2230 01:46:48,660 --> 01:46:51,630 JavaScript, mặc dù nó cung cấp cho bạn đẹp sang trọng. 2231 01:46:51,630 --> 01:46:53,970 Và cuối cùng, Ajax. 2232 01:46:53,970 --> 01:46:59,170 Cho đến nay với Ajax, bạn không nhìn thấy Ajax về pset7 chưa, bởi vì 2233 01:46:59,170 --> 01:47:01,150 khi bạn làm, bạn gửi một hình thức để báo giá. 2234 01:47:01,150 --> 01:47:02,350 Nó tải một trang mới. 2235 01:47:02,350 --> 01:47:04,440 Vì vậy, bạn sẽ có được flash lớn màu trắng trên trang trong khi đó 2236 01:47:04,440 --> 01:47:06,820 tải trang thứ hai, đúng không? 2237 01:47:06,820 --> 01:47:08,780 >> Nó sẽ thực sự tốt đẹp nếu bạn không có đèn flash này. 2238 01:47:08,780 --> 01:47:11,600 Như Facebook, nếu bạn chỉ cần di chuyển đến phía dưới, nó cho biết thêm nội dung mới 2239 01:47:11,600 --> 01:47:13,490 mà không làm mới toàn bộ trang. 2240 01:47:13,490 --> 01:47:15,420 Vì vậy, một cái gì đó như thế này sẽ được tốt đẹp. 2241 01:47:15,420 --> 01:47:17,370 Đây là mã JavaScript ở phía bên trái. 2242 01:47:17,370 --> 01:47:19,390 Bạn sẽ có được những gì bên trong của đầu vào. 2243 01:47:19,390 --> 01:47:21,340 Bạn sẽ có được các thông tin chứng khoán từ Yahoo! 2244 01:47:21,340 --> 01:47:27,440 Và sau đó bạn thực hiện một chuỗi lớn nói, OK, đây là thông điệp mà tôi muốn 2245 01:47:27,440 --> 01:47:28,400 hiển thị trên màn hình. 2246 01:47:28,400 --> 01:47:32,280 Và sau đó bạn đưa tin rằng bên trong của một số phần tử HTML mà được 2247 01:47:32,280 --> 01:47:33,970 hiển thị trên màn hình. 2248 01:47:33,970 --> 01:47:35,540 >> Vì vậy, đó là tất cả những gì xảy ra ở đây. 2249 01:47:35,540 --> 01:47:39,410 Vì vậy, về cơ bản, bởi vì đây là tất cả JavaScript và bạn không cần phải chạy 2250 01:47:39,410 --> 01:47:42,980 nữa PHP, điều này sẽ đảm bảo rằng trang này không làm mới. 2251 01:47:42,980 --> 01:47:47,470 Vì vậy, đây chỉ là một ý tưởng trừu tượng mà tôi đang nói ở đây bây giờ. 2252 01:47:47,470 --> 01:47:50,630 Ý tưởng trừu tượng là nếu bạn làm điều đó tất cả trong JavaScript, bạn không có một 2253 01:47:50,630 --> 01:47:52,330 làm mới trang. 2254 01:47:52,330 --> 01:47:53,800 Nhưng làm thế nào để bạn thực sự làm được điều này? 2255 01:47:53,800 --> 01:47:56,230 >> Vâng, thực sự, chúng ta hãy nói về một vấn đề với điều này đầu tiên. 2256 01:47:56,230 --> 01:47:59,340 Một vấn đề là trong JavaScript, thực hiện được đồng bộ. 2257 01:47:59,340 --> 01:48:02,000 Vì vậy, bạn phải chờ đợi cho một dòng để kết thúc trước khi bạn 2258 01:48:02,000 --> 01:48:03,370 thực thi các dòng tiếp theo. 2259 01:48:03,370 --> 01:48:06,130 Và những gì nếu tôi đi qua Yahoo!, và các máy chủ của họ là rất chậm, và 2260 01:48:06,130 --> 01:48:08,790 nó đưa họ ba giây để cho tôi trở lại những thông tin chứng khoán? 2261 01:48:08,790 --> 01:48:12,620 Khi tôi nhấn mà đường giá, nếu thực hiện đồng bộ, vì nó là bằng 2262 01:48:12,620 --> 01:48:15,390 Mặc định, những gì nó chỉ cần đi làm là trình duyệt của bạn sẽ đứng cho 2263 01:48:15,390 --> 01:48:15,930 ba giây. 2264 01:48:15,930 --> 01:48:18,900 Và bạn sẽ không có khả năng làm bất cứ điều gì trong khi nó được dữ liệu đó. 2265 01:48:18,900 --> 01:48:20,010 Nó sẽ bị đóng băng. 2266 01:48:20,010 --> 01:48:20,800 >> Và đó là xấu. 2267 01:48:20,800 --> 01:48:23,390 Bạn không muốn người dùng có một trang web đông lạnh. 2268 01:48:23,390 --> 01:48:24,170 Đúng không? 2269 01:48:24,170 --> 01:48:25,480 Đó chỉ là xấu. 2270 01:48:25,480 --> 01:48:26,770 Tất cả mọi người đồng ý? 2271 01:48:26,770 --> 01:48:29,270 Nếu bạn đang duyệt Facebook và nó đóng băng và bạn không thể làm bất cứ điều gì, bạn 2272 01:48:29,270 --> 01:48:31,920 nhận được thực sự thất vọng. 2273 01:48:31,920 --> 01:48:34,960 Vì vậy, giải pháp là chúng ta làm một cái gì đó không đồng bộ thay thế. 2274 01:48:34,960 --> 01:48:38,910 Vì vậy, tất cả điều này không đồng bộ nói được, tôi sẽ yêu cầu này 2275 01:48:38,910 --> 01:48:40,280 URL cho một số dữ liệu. 2276 01:48:40,280 --> 01:48:41,610 Và sau đó tôi sẽ tiếp tục đi. 2277 01:48:41,610 --> 01:48:45,330 Tôi chỉ cần đi để tiếp tục thực hiện bất cứ điều gì mã là sau đó. 2278 01:48:45,330 --> 01:48:49,290 >> Và sau đó bất cứ khi nào dữ liệu đã sẵn sàng, sau đó tôi sẽ xử lý nó. 2279 01:48:49,290 --> 01:48:50,540 Đó là tất cả nó nói. 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> ĐỐI TƯỢNG: Ajax chỉ làm cho mã không đồng bộ? 2282 01:48:56,710 --> 01:48:58,560 >> JOSEPH ONG: Đây là một không đồng bộ cách dữ liệu quyến rũ. 2283 01:48:58,560 --> 01:49:01,230 Vì vậy, điều đầu tiên về Ajax là nó cho phép tôi có được dữ liệu 2284 01:49:01,230 --> 01:49:03,170 từ một trang web bên ngoài. 2285 01:49:03,170 --> 01:49:07,045 Và điều thứ hai là nó đảm bảo mà trang của tôi không đứng trong khi tôi đang 2286 01:49:07,045 --> 01:49:07,970 lấy dữ liệu đó. 2287 01:49:07,970 --> 01:49:09,600 Đó là một phần không đồng bộ của nó. 2288 01:49:09,600 --> 01:49:13,040 Bởi vì nó sẽ tắt ở một nơi khác, bởi vì tôi nói rằng tôi tiếp tục đi vào trong khi 2289 01:49:13,040 --> 01:49:14,900 nó lấy dữ liệu đó, mà làm cho nó không đồng bộ. 2290 01:49:14,900 --> 01:49:17,170 Tôi tiếp tục thực hiện. 2291 01:49:17,170 --> 01:49:18,960 >> Vì vậy, giữ không đồng bộ mà ý tưởng trong tâm trí. 2292 01:49:18,960 --> 01:49:22,010 Và tôi sẽ chỉ cho bạn những gì sự khác biệt là. 2293 01:49:22,010 --> 01:49:23,920 Phiên bản đồng bộ là ở phía bên trái. 2294 01:49:23,920 --> 01:49:26,240 Phiên bản không đồng bộ là ở phía bên phải. 2295 01:49:26,240 --> 01:49:29,170 Nhìn vào các con số để xem bước tương ứng với những gì 2296 01:49:29,170 --> 01:49:30,610 thực hiện ở mỗi dòng. 2297 01:49:30,610 --> 01:49:32,730 Ở đó, cảnh báo hiện lên trước tiên. 2298 01:49:32,730 --> 01:49:34,590 Vì nhận được thông tin chứng khoán từ Yahoo! 2299 01:49:34,590 --> 01:49:37,250 mất ba giây, nó quầy hàng trong ba giây. 2300 01:49:37,250 --> 01:49:39,880 Và sau đó nó cảnh báo giá sau ba giây. 2301 01:49:39,880 --> 01:49:43,690 >> Vì vậy, bây giờ, đó cảnh báo chương trình tại thời điểm đó - 2302 01:49:43,690 --> 01:49:44,610 ba giây in 2303 01:49:44,610 --> 01:49:47,670 Và sau đó nó cảnh báo bằng cách sau đó. 2304 01:49:47,670 --> 01:49:48,930 Vì vậy, nó chỉ đi từng bước. 2305 01:49:48,930 --> 01:49:51,200 Nó giống như những gì các bạn sẽ chấp nhận, đúng không? 2306 01:49:51,200 --> 01:49:54,170 Với thực hiện không đồng bộ, bạn cảnh báo đầu tiên. 2307 01:49:54,170 --> 01:49:57,410 Sau đó, bạn đi ra đến URL này. 2308 01:49:57,410 --> 01:49:59,530 Và bạn nói, tôi sẽ chỉ cần hỏi cho dữ liệu. 2309 01:49:59,530 --> 01:50:01,170 Và sau đó tôi sẽ xử lý nó sau này. 2310 01:50:01,170 --> 01:50:04,230 Vì vậy, nó ngay lập tức thực hiện các dòng tiếp theo sau khi tôi làm cho điều đó 2311 01:50:04,230 --> 01:50:05,710 yêu cầu không đồng bộ. 2312 01:50:05,710 --> 01:50:08,920 >> Vì vậy, một 0,001 giây, bạn sẽ thấy cảnh báo hi. 2313 01:50:08,920 --> 01:50:10,960 Thực hiện chức năng đó, tạm biệt cảnh báo. 2314 01:50:10,960 --> 01:50:14,240 Và bởi vì tôi đã hứa rằng tôi sẽ xử lý dữ liệu sau đó, những gì 2315 01:50:14,240 --> 01:50:17,920 xảy ra là khi dữ liệu trở lại ba giây sau, sau đó tôi chạy mà 2316 01:50:17,920 --> 01:50:21,380 chức năng mà tôi có ở đó. 2317 01:50:21,380 --> 01:50:21,870 Có? 2318 01:50:21,870 --> 01:50:25,750 >> ĐỐI TƯỢNG: bạn có thể chỉ định hoặc làm rõ những gì Ajax có nghĩa là? 2319 01:50:25,750 --> 01:50:30,460 >> JOSEPH ONG: Vậy Ajax là một cách mà nếu tôi cần dữ liệu khi tôi đang trên một trang web và tôi 2320 01:50:30,460 --> 01:50:34,690 không muốn làm mới trang, sau đó Tôi sử dụng công nghệ này được gọi là Ajax. 2321 01:50:34,690 --> 01:50:40,630 Mà thực chất chỉ có nghĩa là, đi lấy dữ liệu từ một trang web khác. 2322 01:50:40,630 --> 01:50:43,724 Và làm điều đó trong một cách mà chỉ không đứng trang web của tôi. 2323 01:50:43,724 --> 01:50:46,650 >> ĐỐI TƯỢNG: Vì vậy, là một cố hữu một phần của JavaScript hoặc jQuery? 2324 01:50:46,650 --> 01:50:50,590 >> JOSEPH ONG: Vì vậy, ai đó đã viết một cách để làm này trong JavaScript một thời gian dài trước đây. 2325 01:50:50,590 --> 01:50:52,050 Tại một thời điểm, nó không tồn tại. 2326 01:50:52,050 --> 01:50:56,630 Và do đó người phát minh ra kỹ thuật này cho phép mọi người để yêu cầu dữ liệu này 2327 01:50:56,630 --> 01:50:57,680 trong thời trang này. 2328 01:50:57,680 --> 01:50:59,550 Và họ đã viết một số công cụ để làm điều đó cho bạn. 2329 01:50:59,550 --> 01:51:01,605 Và jQuery chỉ cung cấp cho bạn này cách rất tốt đẹp để làm điều đó 2330 01:51:01,605 --> 01:51:03,112 với $ này. có chức năng. 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 câu hỏi? 2333 01:51:09,480 --> 01:51:11,560 Tôi có thể trả lời các câu hỏi về Ajax sau đó quá. 2334 01:51:11,560 --> 01:51:13,870 Tôi sẽ ở đây. 2335 01:51:13,870 --> 01:51:16,390 >> Vì vậy, nó cho phép của chúng tôi lấy dữ liệu mà không cần làm mới trang. 2336 01:51:16,390 --> 01:51:18,200 Và nó cho phép của chúng tôi làm điều này trong một cách không đồng bộ mà 2337 01:51:18,200 --> 01:51:19,450 không đóng băng trang. 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 Quá dài, không đọc nếu đó giải thích quá dài cho bạn. 2340 01:51:27,310 --> 01:51:29,430 Vì vậy, cuối cùng, cross-site tấn công kịch bản. 2341 01:51:29,430 --> 01:51:30,910 Chúng ta đã thấy điều này với Zamyla. 2342 01:51:30,910 --> 01:51:34,285 Nếu trong cơ sở dữ liệu của tôi một người nào đó có tên này, đó là thẻ này kịch bản, và tôi 2343 01:51:34,285 --> 01:51:38,280 có một số mã trên trang của mình rằng bản in ra tên của người dân trong một hàng, hoặc tôi có 2344 01:51:38,280 --> 01:51:43,310 một số mã JavaScript mà chèn tên này vào trang, 2345 01:51:43,310 --> 01:51:45,680 những gì HTML được sản xuất? 2346 01:51:45,680 --> 01:51:47,290 Vâng, tôi in ra các thẻ HTML. 2347 01:51:47,290 --> 01:51:48,390 Tôi in ra tất cả các thẻ. 2348 01:51:48,390 --> 01:51:50,740 >> Tôi nhận được để một phần nơi tôi in bạn bè. 2349 01:51:50,740 --> 01:51:52,980 Tôi in Lauren ra. 2350 01:51:52,980 --> 01:51:54,200 Nó in Milo ra. 2351 01:51:54,200 --> 01:51:56,810 Và sau đó tên của tôi trong cơ sở dữ liệu là kịch bản bài 2352 01:51:56,810 --> 01:51:58,060 không tốt tình trạng Facebook. 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 Bởi vì tôi chèn này vào trang bởi vì nó trông giống như JavaScript, khi 2355 01:52:04,330 --> 01:52:07,930 Trang này được gửi đến người sử dụng, nó được thực hiện như JavaScript. 2356 01:52:07,930 --> 01:52:10,800 Và vì vậy đây là những gì chúng ta gọi là tấn công cross-site scripting. 2357 01:52:10,800 --> 01:52:14,570 Ai đó đặt thông tin độc hại trong cơ sở dữ liệu của bạn có thể tương ứng với 2358 01:52:14,570 --> 01:52:17,080 một số chuỗi bổ sung hoặc một số chuỗi JavaScript. 2359 01:52:17,080 --> 01:52:20,130 >> Và khi nó được in ra với trang trong thời trang này, sau đó những gì 2360 01:52:20,130 --> 01:52:22,580 xảy ra là mã xấu được thi hành mà tôi không có ý định 2361 01:52:22,580 --> 01:52:25,110 cho nó để được thực thi. 2362 01:52:25,110 --> 01:52:28,230 Và đó là tất cả một cross-site tấn công kịch bản là. 2363 01:52:28,230 --> 01:52:31,790 Và cách bạn có được xung quanh đây là như Zamyla nói. 2364 01:52:31,790 --> 01:52:34,340 Bạn chỉ cần quấn những thứ trong HTML ký tự đặc biệt. 2365 01:52:34,340 --> 01:52:39,460 Và điều này HTML ký tự đặc biệt là một PHP chức năng mà sẽ ngăn chặn loại này 2366 01:52:39,460 --> 01:52:42,000 điều này xảy ra với bạn nếu bạn có một độc hại 2367 01:52:42,000 --> 01:52:43,830 chuỗi trong cơ sở dữ liệu của bạn. 2368 01:52:43,830 --> 01:52:47,650 Nó chỉ cần thoát nó, để nó không được hiểu là HTML. 2369 01:52:47,650 --> 01:52:50,960 Nó thay thế các dấu ngoặc nhỏ với những gì chúng ta gọi là các thực thể. 2370 01:52:50,960 --> 01:52:52,250 Và chúng tôi đã giới này trong bài giảng quá. 2371 01:52:52,250 --> 01:52:55,800 Vì vậy, tôi nghĩ các bạn nên có một nắm bắt tốt về điều đó. 2372 01:52:55,800 --> 01:52:57,420 Câu hỏi? 2373 01:52:57,420 --> 01:52:57,820 Vâng. 2374 01:52:57,820 --> 01:53:00,860 >> ĐỐI TƯỢNG: Vậy làm thế nào sẽ các [nghe được]? 2375 01:53:00,860 --> 01:53:01,555 >> JOSEPH ONG: Nói rằng một lần nữa. 2376 01:53:01,555 --> 01:53:02,500 >> ĐỐI TƯỢNG: Làm thế nào sẽ giám sát - 2377 01:53:02,500 --> 01:53:02,860 >> JOSEPH ONG: Đúng vậy. 2378 01:53:02,860 --> 01:53:06,080 Vì vậy, bạn có cái gì mà nói, khi Tôi đăng ký, nhập vào tên của tôi. 2379 01:53:06,080 --> 01:53:09,390 Tôi chỉ cần gõ trong lĩnh vực đó, tên của tôi là stript bài không tốt Facebook 2380 01:53:09,390 --> 01:53:11,570 tình trạng thẻ script gần. 2381 01:53:11,570 --> 01:53:15,690 Và chỉ được đưa vào cơ sở dữ liệu, bởi vì tôi không thể nói một người nào đó 2382 01:53:15,690 --> 01:53:18,260 trên thế giới không có tên với một mũi tên trái trong nó hoặc 2383 01:53:18,260 --> 01:53:19,036 kịch bản từ trong đó. 2384 01:53:19,036 --> 01:53:21,330 Điều đó không thực sự có ý nghĩa. 2385 01:53:21,330 --> 01:53:24,560 Vì vậy, tôi chỉ cần phải chắc chắn rằng tôi vệ sinh những thứ trước khi tôi in 2386 01:53:24,560 --> 01:53:25,420 ra trang. 2387 01:53:25,420 --> 01:53:27,140 >> ĐỐI TƯỢNG: Vì vậy, các thẻ HTML đặc biệt ngăn chặn các thẻ script? 2388 01:53:27,140 --> 01:53:28,710 >> JOSEPH ONG: Vâng. 2389 01:53:28,710 --> 01:53:29,960 Vì vậy, nó không ngăn cản các thẻ script. 2390 01:53:29,960 --> 01:53:32,320 Nó chỉ làm cho chắc chắn rằng các thẻ script không nhận được 2391 01:53:32,320 --> 01:53:35,120 giải thích như HTML hoặc - 2392 01:53:35,120 --> 01:53:35,400 yeah. 2393 01:53:35,400 --> 01:53:38,470 Nó chỉ đi lên như những gì nó thực sự là. 2394 01:53:38,470 --> 01:53:39,220 Được rồi. 2395 01:53:39,220 --> 01:53:40,930 Vì vậy, đó là xem xét lại bài kiểm tra. 2396 01:53:40,930 --> 01:53:41,830 Mát mẻ. 2397 01:53:41,830 --> 01:53:45,088 >> [Vỗ tay]