1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID Malan: Được rồi. 3 00:00:12,360 --> 00:00:15,970 Đây là CS50, và đây là cuối tuần chín. 4 00:00:15,970 --> 00:00:18,560 Đó là một cơn lốc trên trong vài ngày qua. 5 00:00:18,560 --> 00:00:21,580 Và vấn đề thiết lập bảy, nếu bạn đầu gối sâu vào nó, nhận ra có khá 6 00:00:21,580 --> 00:00:23,340 bit mới ở trong đó. 7 00:00:23,340 --> 00:00:26,660 Nhưng chúng ta hãy xem nếu chúng ta không thể mảnh tất cả mọi thứ với nhau ở đây một thời gian ngắn 8 00:00:26,660 --> 00:00:29,230 trước sau đó lại chuyển hướng ra trong chưa một hướng và nhìn thấy 9 00:00:29,230 --> 00:00:30,510 nơi nào khác chúng ta có thể đi. 10 00:00:30,510 --> 00:00:32,630 >> Vì vậy, cho đến nay, chúng tôi đã nói chuyện về HTML. 11 00:00:32,630 --> 00:00:33,740 Chúng tôi đã nói chuyện về CSS. 12 00:00:33,740 --> 00:00:34,705 Chúng tôi đã nói chuyện về PHP. 13 00:00:34,705 --> 00:00:36,520 Bạn đã bắt đầu trải nghiệm SQL. 14 00:00:36,520 --> 00:00:38,360 Hôm nay, chúng tôi sẽ nói một chút về JavaScript. 15 00:00:38,360 --> 00:00:41,230 Nhưng làm thế nào để tất cả các khác nhau ngôn ngữ phù hợp với nhau? 16 00:00:41,230 --> 00:00:44,970 >> Vì vậy, chúng tôi nói chuyện tuần trước về khái niệm của việc có một máy chủ. 17 00:00:44,970 --> 00:00:48,470 Vì vậy, chúng ta hãy chỉ vẽ hình chữ nhật này như một máy chủ web đây. 18 00:00:48,470 --> 00:00:52,200 Và một máy chủ web phục vụ chắc chắn tập tin. 19 00:00:52,200 --> 00:00:54,640 Và một số các tập tin có thể được các tập tin HTML. 20 00:00:54,640 --> 00:00:58,270 Vì vậy, một trong những điều mà một máy chủ web có thể nhổ ra có thể là một tập tin 21 00:00:58,270 --> 00:01:01,290 chúng tôi sẽ chỉ vẽ như thế này có chứa một số HTML. 22 00:01:01,290 --> 00:01:04,786 Vì vậy, trong điều khoản của layman, những gì HTML không cho phép bạn làm gì? 23 00:01:04,786 --> 00:01:06,036 >> ĐỐI TƯỢNG: Trang nhìn đẹp. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID Malan: OK, làm cho một trang nhìn đẹp, mặc dù tôi nghĩ rằng tôi đã được chứng minh 26 00:01:12,310 --> 00:01:13,370 mà nếu không. 27 00:01:13,370 --> 00:01:18,250 Vì vậy, HTML không cho phép bạn đặt ra các trang cấu trúc, và nó cho phép bạn 28 00:01:18,250 --> 00:01:22,410 loại thẩm mỹ đánh dấu một trang, đánh dấu nội dung tĩnh, vì vậy mà bạn 29 00:01:22,410 --> 00:01:23,640 sau đó có thể xem nó với một trình duyệt web. 30 00:01:23,640 --> 00:01:24,690 >> Nhưng đó là chìa khóa. 31 00:01:24,690 --> 00:01:26,130 Đó là nội dung tĩnh. 32 00:01:26,130 --> 00:01:28,590 Bạn viết nó, bạn lưu nó, và sau đó bạn gửi nó. 33 00:01:28,590 --> 00:01:31,130 Và máy chủ web sau đó phục vụ nó lên đến truy cập của bạn. 34 00:01:31,130 --> 00:01:35,700 >> Nhưng chúng tôi phong cách hóa việc sử dụng một khác nhau ngôn ngữ hoàn toàn. 35 00:01:35,700 --> 00:01:40,150 Chúng tôi bắt đầu sử dụng một thuộc tính phong cách trên thẻ nhất định. 36 00:01:40,150 --> 00:01:43,400 Và các thuộc tính phong cách để chúng tôi thiết lập những thứ như kích thước phông chữ và màu sắc. 37 00:01:43,400 --> 00:01:46,460 Và bạn đã có thể bắt đầu để khám phá, hoặc bạn sẽ sớm cho trận chung kết 38 00:01:46,460 --> 00:01:50,160 các dự án có khả năng, nhưng khác tài sản mà bạn có thể sử dụng trong CSS. 39 00:01:50,160 --> 00:01:54,710 Và do đó, về hiểu là những gì thực sự thì không CSS làm gì? 40 00:01:54,710 --> 00:01:57,810 Những chỉ là ví dụ của nó. 41 00:01:57,810 --> 00:02:00,730 Nó những gì cho phép bạn làm điều đó HTML dường như không từ những gì 42 00:02:00,730 --> 00:02:02,606 chúng ta đã thấy cho đến nay? 43 00:02:02,606 --> 00:02:04,850 >> ĐỐI TƯỢNG: Xác định phong cách của chính mình. 44 00:02:04,850 --> 00:02:06,700 >> DAVID Malan: Xác định phong cách của chính mình. 45 00:02:06,700 --> 00:02:10,280 Vì vậy, xác định những điều như các lớp học như bạn có thể gặp phải, hoặc duy nhất 46 00:02:10,280 --> 00:02:13,800 xác định các nút trong một tài liệu để mà bạn có thể phong cách hóa chúng. 47 00:02:13,800 --> 00:02:16,890 Nhưng đặc biệt hơn, tôi muốn nói rằng CSS thực sự cho phép bạn chụp những việc 48 00:02:16,890 --> 00:02:20,790 dặm cuối cùng và cho phép bạn xác định nhiều chính xác hơn là tính thẩm mỹ, 49 00:02:20,790 --> 00:02:24,340 trong khi HTML cho hầu hết các phần cho phép bạn cấu trúc trang của bạn. 50 00:02:24,340 --> 00:02:27,310 >> Và mặc dù có một số mặc định, như chúng ta đã thấy các từ khóa cho 51 00:02:27,310 --> 00:02:30,690 một thẻ tiêu đề, trong đó khoảng nói thực hiện những điều lớn và táo bạo. 52 00:02:30,690 --> 00:02:34,250 Đó là một định nghĩa khá chung chung của thẻ - lớn và táo bạo. 53 00:02:34,250 --> 00:02:35,260 Những gì kích thước phông chữ là? 54 00:02:35,260 --> 00:02:36,080 Màu sắc đó là những gì? 55 00:02:36,080 --> 00:02:36,890 Làm thế nào táo bạo như vậy? 56 00:02:36,890 --> 00:02:39,830 Và CSS cho phép bạn tinh tế hơn điều chỉnh như thế. 57 00:02:39,830 --> 00:02:42,150 Cũng như bố trí, như một số bạn đã thấy. 58 00:02:42,150 --> 00:02:45,180 >> Và thẳng thắn, CSS là một chút của một ngôn ngữ lộn xộn. 59 00:02:45,180 --> 00:02:48,370 Nó rất mạnh mẽ trong đó bạn có thể làm nghĩa là bất kỳ trang web mà bạn đã 60 00:02:48,370 --> 00:02:51,880 nhìn thấy trên các trang web ngày hôm nay với nó, nhưng nó là loại một cơn đau ở cổ. 61 00:02:51,880 --> 00:02:54,440 Và một số bạn đã đập đầu của bạn chống lại các bức tường đã được chỉ để làm 62 00:02:54,440 --> 00:02:58,560 một cái gì đó ngu ngốc như trung tâm một menu trên vấn đề thiết lập bảy nếu bạn đã nhận được để 63 00:02:58,560 --> 00:02:59,470 điểm đó đã. 64 00:02:59,470 --> 00:03:01,530 >> Nhưng nhận ra, những điều được dễ dàng hơn theo thời gian. 65 00:03:01,530 --> 00:03:02,820 Bạn bắt đầu nhận thấy mô hình. 66 00:03:02,820 --> 00:03:06,020 Và một lần nữa, Google sẽ là bạn của bạn cho các cách khác nhau mà bạn có thể 67 00:03:06,020 --> 00:03:07,220 giải quyết những vấn đề này. 68 00:03:07,220 --> 00:03:11,520 >> Và tôi dám nói với CSS, và HTML hơn Thông thường, bạn có thể giải quyết vấn đề trong 69 00:03:11,520 --> 00:03:15,910 nhiều cách khác nhau, tất cả trong đó có thể rất cũng đúng, hơn bạn có thể 70 00:03:15,910 --> 00:03:18,900 trong một cái gì đó như C, thậm chí bây giờ PHP, hoặc JavaScript. 71 00:03:18,900 --> 00:03:21,080 Có rất nhiều chỉ khác nhau cách đặt những điều trên. 72 00:03:21,080 --> 00:03:22,570 >> Nhưng điều này bắt đầu để có được lộn xộn, chúng tôi đã nói. 73 00:03:22,570 --> 00:03:26,480 Chỉ cần loại trộn lẫn HTML của bạn và CSS của bạn với các thuộc tính phong cách là 74 00:03:26,480 --> 00:03:27,590 một chút cẩu thả. 75 00:03:27,590 --> 00:03:31,460 Và vì vậy chúng tôi thay vì nói, loại trừu tượng nói, mà bạn nên 76 00:03:31,460 --> 00:03:34,050 ít nhất là bắt đầu yếu tố ra CSS của bạn có thể. 77 00:03:34,050 --> 00:03:37,430 Không thuộc tính phong cách của bạn, nhưng ít nhất sử dụng các từ khóa phong cách trong những gì 78 00:03:37,430 --> 00:03:38,840 một phần của trang web? 79 00:03:38,840 --> 00:03:39,560 >> ĐỐI TƯỢNG: Trưởng. 80 00:03:39,560 --> 00:03:40,120 >> DAVID Malan: Trong phần đầu. 81 00:03:40,120 --> 00:03:43,270 Cho đến bây giờ, chúng tôi chỉ có tiêu đề ra ở đó, nhưng bạn cũng có thể thêm một phong cách 82 00:03:43,270 --> 00:03:47,230 thẻ, và bạn có thể đặt CSS của bạn khoảng nói phía trên của trang. 83 00:03:47,230 --> 00:03:52,550 Nhưng sau đó chúng tôi đã thêm một bước nữa và chúng tôi yếu tố đó hiểu thêm 84 00:03:52,550 --> 00:03:54,130 vào một tập tin riêng biệt. 85 00:03:54,130 --> 00:03:57,240 >> Và do đó hai tập tin đã bằng cách nào đó tại liên kết. 86 00:03:57,240 --> 00:03:59,550 Và thực sự nó là tag đó đã làm điều đó. 87 00:03:59,550 --> 00:04:02,920 Và những gì là một trong những bao quát động lực cho bao thanh toán ra CSS của chúng tôi 88 00:04:02,920 --> 00:04:04,057 hơn nữa? 89 00:04:04,057 --> 00:04:05,280 >> ĐỐI TƯỢNG: Có thể dùng lại. 90 00:04:05,280 --> 00:04:05,785 >> DAVID Malan: Có thể dùng lại. 91 00:04:05,785 --> 00:04:06,150 Phải không? 92 00:04:06,150 --> 00:04:09,470 Bạn có thể đã thấy trong p-bộ bảy đã mà rất nhiều các trang, 93 00:04:09,470 --> 00:04:12,260 mua trang, các trang bán hàng, trang danh mục đầu tư, có lẽ 94 00:04:12,260 --> 00:04:13,550 cấu trúc phần nào tương tự. 95 00:04:13,550 --> 00:04:17,579 Có logo tài chính CS50 ở đầu trừ khi bạn đã quyết định thay đổi nó. 96 00:04:17,579 --> 00:04:19,839 Có một chân ở dưới cùng của trang. 97 00:04:19,839 --> 00:04:24,315 Và CSS cho phép bạn sau đó đến yếu tố đó ra nó vào một tập tin riêng biệt để nếu 98 00:04:24,315 --> 00:04:27,780 bạn muốn thay đổi một cái gì đó trên toàn cầu trên toàn bộ trang web của bạn, bạn có thể thực sự 99 00:04:27,780 --> 00:04:29,390 chỉ cần thay đổi nó ở một nơi. 100 00:04:29,390 --> 00:04:32,750 >> Nhưng có một cái giá bạn phải trả có khả năng bởi có yếu tố ra 101 00:04:32,750 --> 00:04:38,380 CSS từ tập tin HTML của tôi vào một riêng biệt nộp tham chiếu nó với các 102 00:04:38,380 --> 00:04:40,650 thẻ, mà chúng ta đã thấy hôm thứ Hai. 103 00:04:40,650 --> 00:04:43,850 Những gì có thể được nhược điểm này? 104 00:04:43,850 --> 00:04:48,830 Nghĩ lại cách đây một tuần để khi chúng ta nói về HTTP và giao thức TCP / IP và làm thế nào 105 00:04:48,830 --> 00:04:52,070 Internet hoạt động. 106 00:04:52,070 --> 00:04:53,530 Một cái gì đó ở đây? 107 00:04:53,530 --> 00:04:54,730 >> ĐỐI TƯỢNG: Phải mất nhiều thời gian hơn. 108 00:04:54,730 --> 00:04:55,470 >> DAVID Malan: Phải mất nhiều thời gian hơn. 109 00:04:55,470 --> 00:04:56,750 Tại sao? 110 00:04:56,750 --> 00:04:59,450 >> ĐỐI TƯỢNG: [nghe được]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID Malan: Vâng. 112 00:04:59,750 --> 00:05:01,240 Vì vậy, nó cho là cần có thời gian nhiều hơn một chút. 113 00:05:01,240 --> 00:05:04,290 Bởi vì một, CSS là rõ ràng không trong cùng một tập tin. 114 00:05:04,290 --> 00:05:06,920 Vì vậy, bây giờ bạn có để làm cho không một mà là hai yêu cầu. 115 00:05:06,920 --> 00:05:11,230 Và mỗi người yêu cầu như chúng ta đã thấy trong Chrome trong cái gọi là Thanh tra, 116 00:05:11,230 --> 00:05:15,740 và chúng ta nhìn vào tab mạng, mỗi của các tập tin đòi hỏi một HTTP 117 00:05:15,740 --> 00:05:18,360 yêu cầu, mà chúng ta đã thấy có một số lượng thời gian. 118 00:05:18,360 --> 00:05:19,290 Bây giờ, có lẽ nó không phải là một rất nhiều. 119 00:05:19,290 --> 00:05:20,670 Có lẽ nó chỉ 20 phần nghìn giây. 120 00:05:20,670 --> 00:05:22,260 Có lẽ đó là 200 mili giây. 121 00:05:22,260 --> 00:05:25,530 >> Nhưng suy nghĩ về một trang như Facebook, hoặc CNN, hay Google, trong đó có nhiều 122 00:05:25,530 --> 00:05:28,060 lớn hơn các ví dụ chúng tôi đã nhìn cho đến nay. 123 00:05:28,060 --> 00:05:32,070 Các trang có thể có hàng chục tác phẩm, mỗi trong số đó có thể yêu cầu một 124 00:05:32,070 --> 00:05:33,550 tải về một tập tin. 125 00:05:33,550 --> 00:05:35,800 Vì vậy, điều có thể có khả năng bắt đầu chậm lại. 126 00:05:35,800 --> 00:05:39,280 >> Và đặc biệt là những ngày này, tất cả chúng ta có điện thoại di động trong túi của chúng tôi và 127 00:05:39,280 --> 00:05:43,010 kết nối Internet chậm hơn, phải đợi thêm một vài mili giây, một vài 128 00:05:43,010 --> 00:05:46,110 hơn mili giây để biết thêm tập tin thực sự có thể được làm chậm. 129 00:05:46,110 --> 00:05:50,430 Độ trễ là từ mô tả loại chờ đợi mà bạn có mà bạn 130 00:05:50,430 --> 00:05:53,110 kinh nghiệm khi chờ đợi một số phần của thông tin. 131 00:05:53,110 --> 00:05:54,430 >> Nhưng có một tăng. 132 00:05:54,430 --> 00:05:56,600 Vì vậy, nó không phải tất cả các loại của một - 133 00:05:56,600 --> 00:05:58,170 nó thực sự là một chút của một bập bênh đây. 134 00:05:58,170 --> 00:06:02,970 Nhược điểm bây giờ, nhưng những gì các trình duyệt có thể làm nếu họ thông minh để tránh 135 00:06:02,970 --> 00:06:08,870 có yêu cầu styles.css cùng nộp lại có thể làm những gì? 136 00:06:08,870 --> 00:06:09,390 >> Bộ nhớ cache nó. 137 00:06:09,390 --> 00:06:10,370 Vì vậy, bộ nhớ đệm - 138 00:06:10,370 --> 00:06:11,690 C-A-C-H-E - 139 00:06:11,690 --> 00:06:15,810 thường có nghĩa là ở đây chỉ để tiết kiệm tập tin mà bạn yêu cầu lần đầu tiên, và 140 00:06:15,810 --> 00:06:17,440 sau đó kiểm tra bộ nhớ cache của bạn cho nó. 141 00:06:17,440 --> 00:06:20,400 Kiểm tra bạn loại container lưu trữ, và nếu bạn đã có một 142 00:06:20,400 --> 00:06:24,520 bản sao của styles.css, ngay cả khi một số khác trang trong trang thiết lập, hoặc bất kỳ trang web, 143 00:06:24,520 --> 00:06:28,560 yêu cầu nó một lần nữa, chỉ để cung cấp cho các người sử dụng cùng một bản sao cache. 144 00:06:28,560 --> 00:06:30,140 Không bận tâm yêu cầu nó. 145 00:06:30,140 --> 00:06:32,560 >> Nhược điểm đó, mặc dù, như một số bạn đã vấp trong p-bộ. 146 00:06:32,560 --> 00:06:35,870 Nếu bạn thực hiện một sự thay đổi trên máy chủ và bạn quay trở lại trình duyệt và bạn 147 00:06:35,870 --> 00:06:39,250 tải lại, đôi khi trình duyệt không bạn một ưu và không làm phiền 148 00:06:39,250 --> 00:06:43,660 tái tải tập tin styles.css của bạn bởi vì, thôi nào, tỷ lệ cược là gì 149 00:06:43,660 --> 00:06:47,620 những phong cách mà Facebook sử dụng sẽ thay đổi giờ này sang giờ hoặc 150 00:06:47,620 --> 00:06:48,140 ngày này qua ngày? 151 00:06:48,140 --> 00:06:48,800 Nó khá thấp. 152 00:06:48,800 --> 00:06:52,260 Họ có thể thay đổi theo thời gian, nhưng không từng phút hoặc theo giờ. 153 00:06:52,260 --> 00:06:55,810 >> Vì vậy, một mẹo, chỉ cần FYI khi làm web phát triển, thường được giữ 154 00:06:55,810 --> 00:06:59,500 thay đổi quan trọng ví dụ và sau đó nhấp vào tải lại trong trình duyệt của bạn, và điều đó sẽ 155 00:06:59,500 --> 00:07:03,280 thường cho tải lại trình duyệt tất cả mọi thứ, ngay cả khi bạn đã có 156 00:07:03,280 --> 00:07:04,180 nó trong bộ nhớ cache. 157 00:07:04,180 --> 00:07:06,630 Vì vậy, một lần nữa, mặt tích cực và nhược điểm, nhưng tất cả chúng 158 00:07:06,630 --> 00:07:08,260 cuối cùng quyết định thiết kế. 159 00:07:08,260 --> 00:07:11,520 >> Vì vậy, bây giờ, chúng tôi đã làm không chỉ kết thúc câu chuyện ở đây. 160 00:07:11,520 --> 00:07:15,790 Nếu bây giờ tôi quay trở lại và trở lại và trở lại và trở lại, chúng tôi bắt đầu giới thiệu không chỉ 161 00:07:15,790 --> 00:07:18,060 HTML, nhưng PHP. 162 00:07:18,060 --> 00:07:20,786 Vì vậy, trong điều khoản của layman, những gì không PHP để chúng tôi làm gì? 163 00:07:20,786 --> 00:07:22,770 >> ĐỐI TƯỢNG: [nghe được]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID Malan: đó là gì? 165 00:07:24,258 --> 00:07:25,250 >> ĐỐI TƯỢNG: Giới thiệu lý vào mã. 166 00:07:25,250 --> 00:07:26,620 >> DAVID Malan: Vâng, giới thiệu logic vào mã của bạn. 167 00:07:26,620 --> 00:07:29,570 Vì vậy, nó là một ngôn ngữ lập trình đúng với các vòng, và các biến, và 168 00:07:29,570 --> 00:07:32,620 chức năng, và điều kiện, và tất cả các những điều chúng ta đã sử dụng con đường trở lại 169 00:07:32,620 --> 00:07:33,780 khi kể từ đầu. 170 00:07:33,780 --> 00:07:36,780 Và PHP, chúng ta đã thấy, có thể được sử dụng hoặc là ở dòng lệnh - nó 171 00:07:36,780 --> 00:07:39,190 không cần phải có bất cứ điều gì để làm với các trang web, ngay cả khi đó là 172 00:07:39,190 --> 00:07:43,150 thực sự nguồn gốc của nó và những gì nó có xu hướng là tốt và có lợi cho - 173 00:07:43,150 --> 00:07:47,130 nhưng bạn có thể sử dụng PHP chỉ bằng cách tự nhiên thực tế là nó có một bản in () 174 00:07:47,130 --> 00:07:49,660 chức năng, và printf () chức năng, hoặc echo () chức năng. 175 00:07:49,660 --> 00:07:52,440 Có chùm cách bạn có thể in văn bản với PHP. 176 00:07:52,440 --> 00:07:56,540 >> Vì vậy, bạn có thể sử dụng chương trình này ngôn ngữ đầu ra chính xác 177 00:07:56,540 --> 00:07:58,460 những gì chúng ta đã nói về trước. 178 00:07:58,460 --> 00:08:01,360 Bạn có thể tự động tạo ra HTML của bạn. 179 00:08:01,360 --> 00:08:02,300 Có lẽ không phải tất cả của nó. 180 00:08:02,300 --> 00:08:06,460 Có thể bạn điều khó code, như tiêu đề và chân trang, và các biểu tượng, 181 00:08:06,460 --> 00:08:07,950 và phong cách của bạn, và tất cả điều đó. 182 00:08:07,950 --> 00:08:11,190 Nhưng đối với một cái gì đó giống như p-thiết lập bảy, nơi bạn đang thao tác và cổ phiếu 183 00:08:11,190 --> 00:08:14,690 thấy danh mục đầu tư của người dùng, đó là sẽ thay đổi tự động, bạn có thể 184 00:08:14,690 --> 00:08:18,960 chắc chắn sử dụng PHP và logic nó mang lại cho bạn như là một ngôn ngữ lập trình 185 00:08:18,960 --> 00:08:22,320 đầu ra tự động tập hợp con của trang. 186 00:08:22,320 --> 00:08:25,900 >> Vì vậy, khi bạn nói về các trang web động, hoặc lập trình web, đó là 187 00:08:25,900 --> 00:08:27,200 những gì bạn đang thực sự nói về. 188 00:08:27,200 --> 00:08:31,450 Sử dụng một ngôn ngữ như PHP, hoặc điều gọi là Python, hoặc Ruby, Java, hoặc 189 00:08:31,450 --> 00:08:35,900 nhưng các ngôn ngữ khác, để truy vấn cơ sở dữ liệu thường, hoặc máy chủ khác, và 190 00:08:35,900 --> 00:08:38,580 sau đó tự động nhổ ra HTML. 191 00:08:38,580 --> 00:08:42,470 >> Bây giờ kết quả cuối cùng, như một sang một bên, là rằng HTML của hầu hết các trang web, 192 00:08:42,470 --> 00:08:45,970 bao gồm p-thiết lập bảy của bạn, có lẽ sẽ là một mớ hỗn độn lớn nếu 193 00:08:45,970 --> 00:08:48,060 bạn nhìn vào mã nguồn mã trong một trình duyệt. 194 00:08:48,060 --> 00:08:49,010 Đó không phải là một việc lớn. 195 00:08:49,010 --> 00:08:51,550 Tại thời điểm này, khi chúng tôi quan tâm phong cách, chúng tôi quan tâm đến 196 00:08:51,550 --> 00:08:52,740 công cụ mà bạn viết. 197 00:08:52,740 --> 00:08:56,240 Chúng tôi sẽ không quan tâm đến những thứ rằng những gì kết quả đầu ra mã của bạn. 198 00:08:56,240 --> 00:08:59,520 Vì vậy, đừng lo lắng về thụt đầu dòng ở đây nếu nó PHP đó là 199 00:08:59,520 --> 00:09:01,190 thực sự xuất công cụ. 200 00:09:01,190 --> 00:09:04,430 Sau khi tất cả, trình duyệt sẽ không quan tâm, và một con người sẽ không được tìm kiếm 201 00:09:04,430 --> 00:09:05,400 tại nguồn anyway. 202 00:09:05,400 --> 00:09:09,000 Chúng tôi, những nhân viên, ví dụ, sẽ được xem xét PHP của bạn. 203 00:09:09,000 --> 00:09:13,440 >> Vì vậy, hãy để tôi đưa ra một ví dụ nhanh chóng tại lý do tại sao khác này có thể có ích. 204 00:09:13,440 --> 00:09:18,620 Vì vậy, thẳng thắn, tôi không thể nhớ cuối cùng thời gian tôi sử dụng C để giải quyết một vấn đề trong 205 00:09:18,620 --> 00:09:19,620 thế giới thực. 206 00:09:19,620 --> 00:09:22,330 Nó có thể là trong trường đại học khi Tôi cần thiết để sử dụng một ngôn ngữ 207 00:09:22,330 --> 00:09:26,710 là mức khá thấp và đã cho tôi cơ hội để làm một cái gì đó rất cao 208 00:09:26,710 --> 00:09:30,720 thực hiện để thực sự tiết kiệm như nhiều CPU chu kỳ như tôi có thể, trong phần lớn 209 00:09:30,720 --> 00:09:33,990 bởi vì tôi đã sử dụng bộ dữ liệu khổng lồ, và mỗi chu kỳ CPU tính. 210 00:09:33,990 --> 00:09:37,750 Và thẳng thắn, thậm chí trong những thứ như điện thoại những ngày này và các thiết bị khác 211 00:09:37,750 --> 00:09:39,910 nơi bạn không hoàn toàn có nhiều bộ nhớ và bạn hoàn toàn không có như 212 00:09:39,910 --> 00:09:44,160 nhiều CPU, sử dụng ngôn ngữ nhanh hơn vẫn còn hấp dẫn. 213 00:09:44,160 --> 00:09:47,290 >> Nhưng trong thế giới thực, khi bạn chỉ muốn ném một số chương trình với nhau để 214 00:09:47,290 --> 00:09:50,340 phân tích một số dữ liệu, hoặc bạn đã thu thập một bó toàn bộ đăng ký cho 215 00:09:50,340 --> 00:09:53,330 một số nhóm sinh viên và bạn muốn rất nhanh chóng tự động gửi email 216 00:09:53,330 --> 00:09:56,240 từng người một để mỗi một trong những đăng ký, bạn sẽ tiếp cận với 217 00:09:56,240 --> 00:09:59,240 một ngôn ngữ cấp cao hơn hơn so với C vậy để nói chuyện. 218 00:09:59,240 --> 00:10:04,060 Một cái gì đó như PHP hay Python, hoặc Ruby, hoặc một nửa tá những người khác tồn tại 219 00:10:04,060 --> 00:10:04,550 những ngày này. 220 00:10:04,550 --> 00:10:07,200 Nhưng ba có lẽ hợp thời trang nhất hiện nay. 221 00:10:07,200 --> 00:10:10,840 >> Và điều này có nghĩa là bạn có thể mở lên một trình soạn thảo văn bản như gedit hoặc 222 00:10:10,840 --> 00:10:14,030 hầu hết bất cứ điều gì khác và sau đó chỉ bắt đầu viết mã mà không cần phải lo lắng 223 00:10:14,030 --> 00:10:17,800 về biên soạn, mà không cần phải thực sự lo lắng về quản lý bộ nhớ, 224 00:10:17,800 --> 00:10:20,820 giữ trong tâm trí rằng mặc dù một chút luộm thuộm cuối cùng sẽ trở lại 225 00:10:20,820 --> 00:10:24,790 cắn bạn nếu tập dữ liệu được lớn hơn hoặc vấn đề trở nên trầm trọng. 226 00:10:24,790 --> 00:10:27,230 Nhưng điều này có nghĩa cho chúng tôi là như sau. 227 00:10:27,230 --> 00:10:29,860 >> Hãy để tôi đi trước và chạy Speller từ vấn đề thiết lập sáu. 228 00:10:29,860 --> 00:10:33,480 Vì vậy, đây là việc thực hiện Trie của tôi dựa trên mà tôi sử dụng trên lớn 229 00:10:33,480 --> 00:10:35,500 hội đồng quản trị mà tôi thực hiện không tốt lắm. 230 00:10:35,500 --> 00:10:38,720 Chúng tôi sẽ trở lại trong thời gian một tuần và xem lại những người đã kết thúc lên trên đỉnh 231 00:10:38,720 --> 00:10:40,430 bảng lớn tại bài giảng cuối cùng của chúng tôi. 232 00:10:40,430 --> 00:10:44,520 Nhưng bây giờ, hãy để tôi đi trước và chỉ chạy giải pháp của tôi trong văn bản, và chúng tôi sẽ làm 233 00:10:44,520 --> 00:10:48,460 King James Bible, và ở đây chúng tôi đi. 234 00:10:48,460 --> 00:10:51,080 >> Vì vậy, đó là tất cả của cho là từ sai chính tả ra khỏi 235 00:10:51,080 --> 00:10:52,240 King James Bible. 236 00:10:52,240 --> 00:10:55,560 Và thực hiện của tôi mất một nửa trong tổng số. 237 00:10:55,560 --> 00:10:58,270 Vì vậy, không quá xấu này máy tính cụ thể. 238 00:10:58,270 --> 00:11:01,540 Nhưng suy nghĩ của bao nhiêu mã tôi đã phải viết. 239 00:11:01,540 --> 00:11:02,880 Nghĩ rằng bao nhiêu mã bạn đã phải viết. 240 00:11:02,880 --> 00:11:06,170 Nghĩ rằng bao nhiêu giờ bạn chi tiêu trong D-hội trường hoặc ký túc xá của bạn hoặc bất cứ nơi nào 241 00:11:06,170 --> 00:11:07,890 thực sự mã hóa lên giải pháp đó. 242 00:11:07,890 --> 00:11:11,850 >> Vâng, nếu tôi thực sự có một mức độ cao hơn ngôn ngữ như PHP, lưu ý 243 00:11:11,850 --> 00:11:13,350 những gì tôi có thể làm ở đây. 244 00:11:13,350 --> 00:11:16,410 Đầu tiên, giả sử rằng đây là thay vì đang phân phối của bạn. 245 00:11:16,410 --> 00:11:17,790 Đây là một tập tin gọi là Speller. 246 00:11:17,790 --> 00:11:20,220 Nó có sẵn như là một phần của ngày hôm nay đang phân phối. 247 00:11:20,220 --> 00:11:22,670 Và tôi sẽ vẫy tay nhiều nhất các chi tiết, nhưng điều này thực sự 248 00:11:22,670 --> 00:11:25,500 một ví dụ thú vị về cách Bạn có thể cổng một ngôn ngữ 249 00:11:25,500 --> 00:11:28,870 như C trên PHP. 250 00:11:28,870 --> 00:11:33,420 Tôi nghĩa là mở hai cửa sổ văn bản, một với phiên bản C của tôi speller.c, 251 00:11:33,420 --> 00:11:36,960 và tôi chỉ mới bắt đầu dịch nó trong tôi đi đến PHP và gõ nó bằng cách sử dụng 252 00:11:36,960 --> 00:11:38,840 các chức năng tương đương gần nhất. 253 00:11:38,840 --> 00:11:40,100 >> Vì vậy, một số những điều này là khác nhau. 254 00:11:40,100 --> 00:11:43,730 Chúng ta đã thấy lần cuối cùng mà PHP không sử dụng bao gồm trong cách khá giống nhau. 255 00:11:43,730 --> 00:11:47,050 Nó sử dụng yêu cầu thông thường, mặc dù bao gồm không tồn tại. 256 00:11:47,050 --> 00:11:50,330 Xác định là một chút khác nhau từ # Define trong C, nhưng đó là 257 00:11:50,330 --> 00:11:51,890 cách chúng ta làm cho một hằng số. 258 00:11:51,890 --> 00:11:55,860 $ Argc nó quay ra tồn tại trong PHP, vì vậy chúng tôi đã nhìn thấy rằng trước. 259 00:11:55,860 --> 00:11:58,650 Đây chỉ là các biến, tất cả các mà bắt đầu có dấu hiệu đồng đô la. 260 00:11:58,650 --> 00:12:00,590 Nhớ lại những chỉ là một bó điểm nổi. 261 00:12:00,590 --> 00:12:03,970 >> Vì vậy, câu chuyện dài ngắn, bạn đang chào đón để lướt qua này nếu tò mò, đây là 262 00:12:03,970 --> 00:12:10,010 gần như một dòng-cho-dòng chuyển đổi của C phiên bản của speller.c vào PHP. 263 00:12:10,010 --> 00:12:12,630 Và bạn có thể làm điều này một lần nữa cho một nửa tá ngôn ngữ khác. 264 00:12:12,630 --> 00:12:14,910 >> Nhưng điều thú vị này là. 265 00:12:14,910 --> 00:12:16,910 Hoặc những gì thẳng thắn nản là thế này. 266 00:12:16,910 --> 00:12:20,790 Hãy để tôi đi trước và gõ about dictionary.php, và tuyên bố rằng tôi 267 00:12:20,790 --> 00:12:23,670 sẽ đi trước và tái thực hiện vấn đề thiết lập sáu ở đây. 268 00:12:23,670 --> 00:12:27,530 >> Vì vậy, hãy đề nghị đầu tiên mà trong này tập tin, mà sẽ được thực hiện trong 269 00:12:27,530 --> 00:12:30,550 PHP, vì vậy hãy để tôi mở thẻ của tôi như thế. 270 00:12:30,550 --> 00:12:34,780 Hãy để tôi cung cấp cho bản thân mình một toàn cầu biến, $ kích thước được không. 271 00:12:34,780 --> 00:12:36,710 Và tôi sẽ cung cấp cho bản thân mình một bảng băm. 272 00:12:36,710 --> 00:12:38,110 Tôi sẽ sử dụng một bảng băm cho điều này. 273 00:12:38,110 --> 00:12:42,070 Làm thế nào để khai báo một bảng băm trong PHP? 274 00:12:42,070 --> 00:12:42,990 Thực hiện. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Vì vậy, mở khung khung gần đại diện những gì trong PHP, như chúng ta đã nhìn thấy? 277 00:12:48,870 --> 00:12:51,850 Một mảng, nhưng một mảng có thể là một mảng kết hợp. 278 00:12:51,850 --> 00:12:54,320 Một mảng kết hợp là một cấu trúc dữ liệu 279 00:12:54,320 --> 00:12:55,860 liên phím với các giá trị. 280 00:12:55,860 --> 00:12:59,430 >> Bây giờ trong số lượng đơn giản nhất được lập chỉ mục mảng, các phím là gì? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Bằng không, một, hai, ba, phải không? 283 00:13:03,960 --> 00:13:08,780 Tuổi học nhồi nhét trở lại từ C. Tuy nhiên, nó có thể cũng được chuỗi như foo và bar, 284 00:13:08,780 --> 00:13:12,210 hoặc Maxwell, hoặc bất kỳ chuỗi như vậy. 285 00:13:12,210 --> 00:13:14,240 Vì vậy, tôi có thể tận dụng mà chỉ trong một thời điểm. 286 00:13:14,240 --> 00:13:17,550 >> Hãy để tôi đi trước và tuyên bố một chức năng như - 287 00:13:17,550 --> 00:13:19,020 chúng ta hãy làm load () đầu tiên. 288 00:13:19,020 --> 00:13:20,690 Vì vậy, chức năng tải (). 289 00:13:20,690 --> 00:13:23,440 Và PHP là một chút khác nhau trong đó bạn có nghĩa là loại chức năng, nhưng bạn 290 00:13:23,440 --> 00:13:24,930 không gõ một kiểu trả về. 291 00:13:24,930 --> 00:13:28,760 Tôi sẽ đi trước và nói rằng load () chức năng nên có trong 292 00:13:28,760 --> 00:13:31,000 tham số $ từ điển, chỉ như phiên bản C đã làm. 293 00:13:31,000 --> 00:13:32,510 Tôi làm điều đó từ bộ nhớ. 294 00:13:32,510 --> 00:13:34,910 >> Và tôi đề nghị tôi sẽ làm điều này. 295 00:13:34,910 --> 00:13:37,080 Tôi chỉ đơn giản sẽ làm foreach. 296 00:13:37,080 --> 00:13:40,710 Tôi sẽ gọi một chức năng được gọi là nộp (), đi qua trong tên của 297 00:13:40,710 --> 00:13:44,990 tập tin, đó là biến $ $ Điển như từ. 298 00:13:44,990 --> 00:13:49,410 Và sau đó bên trong của tôi cho vòng lặp ở đây, tôi sẽ đi trước và lưu trữ trong của tôi 299 00:13:49,410 --> 00:13:57,440 $ $ Bảng từ được sự thật. 300 00:13:57,440 --> 00:13:57,918 Thực hiện. 301 00:13:57,918 --> 00:14:01,264 Oh, chờ đợi. 302 00:14:01,264 --> 00:14:02,422 Thực hiện. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> Đó là chức năng tải trọng () nói trong PHP. 305 00:14:04,970 --> 00:14:05,865 Bây giờ, lý do tại sao mà làm việc? 306 00:14:05,865 --> 00:14:07,010 Và tôi là loại gian lận ở đây. 307 00:14:07,010 --> 00:14:09,980 >> Vì vậy, một, foreach chúng ta đã thấy một thời gian ngắn thời gian qua. 308 00:14:09,980 --> 00:14:13,680 Nó chỉ có nghĩa là bạn có thể duyệt qua một mảng mà không làm phiền với tôi 309 00:14:13,680 --> 00:14:16,150 và n và cộng cộng, và tất cả điều đó. 310 00:14:16,150 --> 00:14:21,350 Từ điển của khóa học là tên tập tin, một cái gì đó như lớn hay nhỏ, hai 311 00:14:21,350 --> 00:14:22,830 từ điển chúng ta sử dụng thời gian qua. 312 00:14:22,830 --> 00:14:26,715 Tập tin là một chức năng mà mở ra văn bản tập tin, đọc nó trong từng dòng một, và 313 00:14:26,715 --> 00:14:29,840 tay bạn trở lại một mảng lớn, mỗi yếu tố mà là một 314 00:14:29,840 --> 00:14:31,340 dòng từ tập tin đó. 315 00:14:31,340 --> 00:14:36,040 Vì vậy, đó là sự kết hợp của fopen, và fread, và trong khi vòng lặp, và fclose, 316 00:14:36,040 --> 00:14:37,080 và tất cả điều đó. 317 00:14:37,080 --> 00:14:40,150 Cuối cùng, như từ chỉ có nghĩa là đó là biến tôi sẽ có thể truy cập 318 00:14:40,150 --> 00:14:41,890 trên mỗi lần lặp trong vòng lặp này. 319 00:14:41,890 --> 00:14:46,910 >> Vì vậy, trong ngắn hạn, một lót này ở đây có nghĩa mở tập tin có tên trong 320 00:14:46,910 --> 00:14:50,750 từ điển, biến, lặp đi lặp lại hơn từng dòng một, và mỗi lần bạn nhận được 321 00:14:50,750 --> 00:14:54,290 một dòng, lưu trữ trong một biến gọi là từ, và sau đó làm một cái gì đó với từ. 322 00:14:54,290 --> 00:14:55,280 Tôi phải làm gì muốn làm gì? 323 00:14:55,280 --> 00:14:58,110 Tôi muốn đặt từ vào bảng băm của tôi. 324 00:14:58,110 --> 00:15:00,860 >> Vâng, tôi có thể đặt một cái gì đó trong tôi bảng băm giống như trong C 325 00:15:00,860 --> 00:15:02,140 sử dụng dấu ngoặc vuông. 326 00:15:02,140 --> 00:15:03,660 Đây là tên cho bảng băm của tôi. 327 00:15:03,660 --> 00:15:07,180 Tôi sẽ chỉ vào mà băm bảng ở vị trí này. 328 00:15:07,180 --> 00:15:08,920 Vì vậy, không khung bằng không, không một khung. 329 00:15:08,920 --> 00:15:11,990 Khung quote unquote một cái gì đó, bất cứ điều gì từ đó là. 330 00:15:11,990 --> 00:15:15,200 Và cũng giống như bạn có thể có trong của bạn bàn làm việc băm Trie, bạn chỉ cần lưu trữ 331 00:15:15,200 --> 00:15:17,650 hiệu quả một Boolean, ngầm hoặc một cách rõ ràng. 332 00:15:17,650 --> 00:15:18,260 Thực hiện. 333 00:15:18,260 --> 00:15:20,000 Tôi đang lưu trữ các giá trị thực sự. 334 00:15:20,000 --> 00:15:23,150 >> Bây giờ có một vài điều Tôi cắt góc trên đây. 335 00:15:23,150 --> 00:15:27,720 Về mặt kỹ thuật, đó sẽ là một dòng mới gây phiền nhiễu, / n, vào cuối 336 00:15:27,720 --> 00:15:28,820 mỗi từ. 337 00:15:28,820 --> 00:15:31,770 Vì vậy, tôi có lẽ nên gọi một chức năng PHP gọi là chop (), mà sẽ 338 00:15:31,770 --> 00:15:33,460 theo đúng nghĩa đen chặt đó. 339 00:15:33,460 --> 00:15:35,020 Và tôi thực sự cần phải làm một việc khác. 340 00:15:35,020 --> 00:15:38,380 Tôi có lẽ nên tăng kích thước trên mỗi lặp đi lặp lại, vì vậy tôi đang theo dõi 341 00:15:38,380 --> 00:15:39,560 trên toàn cầu của nó là gì. 342 00:15:39,560 --> 00:15:43,180 Và thẳng thắn, và điều này là một trong những mặt ngu ngốc của PHP, nếu bạn 343 00:15:43,180 --> 00:15:46,950 sử dụng một biến toàn cầu, bạn cần một cách rõ ràng nói rằng bạn đang có. 344 00:15:46,950 --> 00:15:51,670 Vì vậy, tôi sẽ thực sự gõ trong toàn cầu $ Kích thước, $ bảng toàn cầu, và bây giờ 345 00:15:51,670 --> 00:15:52,690 chức năng của tôi được hoàn tất. 346 00:15:52,690 --> 00:15:57,475 >> Vì vậy, không đơn giản như trước, nhưng có thể mất ít thời gian hơn so với C 347 00:15:57,475 --> 00:15:58,220 phiên bản, có thể? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Vì vậy, bây giờ chúng ta hãy làm việc kiểm tra () chức năng. 350 00:16:00,390 --> 00:16:04,300 Chúng ta hãy xem nếu điều này ít nhất đã ngày giờ kết thúc mà chúng tôi đã mất trong C. Vì vậy, 351 00:16:04,300 --> 00:16:06,500 hãy để tôi đi trước và tuyên bố kiểm tra như một chức năng. 352 00:16:06,500 --> 00:16:09,070 Có trong tranh luận từ, mà là sẽ đến từ Speller. 353 00:16:09,070 --> 00:16:13,410 Và tôi chỉ cần đi để kiểm tra xem sau biến isset, bảng 354 00:16:13,410 --> 00:16:18,400 khung strtolower của từ - 355 00:16:18,400 --> 00:16:20,590 hãy cân bằng tất cả các dấu ngoặc đơn của tôi - 356 00:16:20,590 --> 00:16:24,275 sau đó trở thành sự thật. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Khác - 359 00:16:28,460 --> 00:16:30,330 đó là thực sự khó khăn một phần của chương trình này. 360 00:16:30,330 --> 00:16:31,940 Khác, trả về false. 361 00:16:31,940 --> 00:16:32,630 Thực hiện. 362 00:16:32,630 --> 00:16:33,460 Đó là kiểm tra (). 363 00:16:33,460 --> 00:16:34,520 >> Bây giờ, tại sao không làm việc này? 364 00:16:34,520 --> 00:16:37,040 Vâng, một tôi đã thông qua trong một từ, đó là một chuỗi. 365 00:16:37,040 --> 00:16:41,400 Hai, tôi đang kiểm tra bên trong của bảng băm bảng, người được gọi là $ bảng. 366 00:16:41,400 --> 00:16:45,470 Tôi buộc nó thành chữ thường bằng cách gọi một chức năng khá tương tự ToLower () trong 367 00:16:45,470 --> 00:16:48,580 C, nhưng điều này không từ toàn bộ, không phải là một nhân vật duy nhất. 368 00:16:48,580 --> 00:16:52,680 Và nếu được thiết lập, nói cách khác có là một tập hợp giá trị, nói cách khác, 369 00:16:52,680 --> 00:16:54,880 nếu đó là sự thật, sau đó có, đây là một từ. 370 00:16:54,880 --> 00:16:56,530 Bởi vì tôi đặt nó ở đó có tải trọng (). 371 00:16:56,530 --> 00:16:59,100 Và nếu không, tôi sẽ trả về false. 372 00:16:59,100 --> 00:17:00,090 >> Bây giờ những người khác dễ dàng. 373 00:17:00,090 --> 00:17:03,570 Kích thước chức năng (), làm thế nào để tôi làm điều này? 374 00:17:03,570 --> 00:17:05,230 Tôi về cơ bản không trả lại $ kích thước. 375 00:17:05,230 --> 00:17:07,770 Nhưng về mặt kỹ thuật tôi cần phải làm điều này gây phiền nhiễu. 376 00:17:07,770 --> 00:17:10,640 Và thực sự lên nghe, tôi đã được cắt một góc quá nhiều. 377 00:17:10,640 --> 00:17:12,920 Tôi thực sự cần phải làm $ bảng toàn cầu. 378 00:17:12,920 --> 00:17:16,260 >> Nhưng điều đó đang được nói, dỡ bỏ). 379 00:17:16,260 --> 00:17:17,380 Dỡ bỏ () là tuyệt vời. 380 00:17:17,380 --> 00:17:20,500 Chức năng dỡ bỏ (). 381 00:17:20,500 --> 00:17:23,990 Làm thế nào để tôi muốn thực hiện dỡ bỏ ()? 382 00:17:23,990 --> 00:17:25,079 Thực hiện. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Vì vậy, dỡ bỏ (), quản lý bộ nhớ chăm sóc hoàn toàn chụp cho bạn trong 385 00:17:28,900 --> 00:17:31,800 một cái gì đó như PHP và rất nhiều của ngôn ngữ bậc cao. 386 00:17:31,800 --> 00:17:32,600 Vì vậy, đây là tuyệt vời. 387 00:17:32,600 --> 00:17:36,080 Thích lý do tại sao quái nào chúng tôi đã dành quá khứ tám tuần cộng với trên C bằng văn bản 388 00:17:36,080 --> 00:17:41,030 dường như rất chậm, thực sự thời gian vấn đề tiêu thụ với hàng chục giờ 389 00:17:41,030 --> 00:17:42,530 làm việc dưới thắt lưng của chúng tôi? 390 00:17:42,530 --> 00:17:46,110 >> Vâng, cho một điều, điều này có thể làm việc tốt cho các chương trình nhỏ. 391 00:17:46,110 --> 00:17:47,840 Chắc chắn nó tăng tốc của tôi thời gian phát triển. 392 00:17:47,840 --> 00:17:49,790 Nhưng hãy xem những gì sẽ xảy ra trong thế giới thực. 393 00:17:49,790 --> 00:17:52,370 >> Hãy để tôi đi vào thư mục này trong một cửa sổ thiết bị đầu cuối. 394 00:17:52,370 --> 00:17:53,370 Có Speller. 395 00:17:53,370 --> 00:17:56,570 Và nhận thấy như một sang một bên, và bạn có thể đã gặp phải điều này trong bộ vấn đề 396 00:17:56,570 --> 00:17:58,190 sáu hoặc bảy vấn đề thiết lập. 397 00:17:58,190 --> 00:18:01,610 Bạn không đúng phải kết thúc các file PHP với. php. 398 00:18:01,610 --> 00:18:05,250 Nếu bạn đặt một dòng như thế đầu tiên tại phần trên, đó là một dòng đặc biệt 399 00:18:05,250 --> 00:18:10,980 cú pháp mà chủ yếu là tìm chương trình được gọi là PHP và sử dụng nó để 400 00:18:10,980 --> 00:18:12,270 giải thích tập tin này. 401 00:18:12,270 --> 00:18:15,410 Vì vậy, bây giờ không có ai thực sự biết rằng Tôi đang chạy một chương trình PHP. 402 00:18:15,410 --> 00:18:19,860 Tôi có thể chạy nó chỉ như thể nó được biên soạn một cái gì đó trong C. 403 00:18:19,860 --> 00:18:20,650 >> Nhưng đây là vấn đề. 404 00:18:20,650 --> 00:18:21,600 Trên thực tế, chúng ta hãy làm điều này một lần nữa. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Có Speller. 407 00:18:25,390 --> 00:18:26,720 OK, 0,44 giây. 408 00:18:26,720 --> 00:18:28,080 Nó đã nhanh hơn thời gian này. 409 00:18:28,080 --> 00:18:29,745 >> Bây giờ chúng ta hãy đi vào trong phiên bản PHP. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Tốt đẹp liên lạc. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Nhưng chỉ nghĩ rằng bao nhiêu thời gian Tôi lưu tại giờ làm việc. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK. 416 00:18:57,790 --> 00:19:01,020 >> Vì vậy, 3.59 giây, mà thực sự không có âm thanh chính xác một trong hai. 417 00:19:01,020 --> 00:19:03,710 Nhưng đó là bởi vì câu chuyện dài ngắn, khi bạn in ra một số lượng lớn 418 00:19:03,710 --> 00:19:06,840 công cụ để màn hình, mà tự làm chậm xuống. 419 00:19:06,840 --> 00:19:11,260 Những gì nó thực sự đã CPU trong thiết bị là 3,59 giây, trong 420 00:19:11,260 --> 00:19:15,260 Trái ngược với C, mất 0.44 giây gần đây nhất. 421 00:19:15,260 --> 00:19:17,620 Đó là thực sự là một thứ tự cường độ khác nhau. 422 00:19:17,620 --> 00:19:20,280 >> Vì vậy, nơi được giá đó đến từ đâu? 423 00:19:20,280 --> 00:19:21,790 Tại sao nó lại chậm hơn nhiều? 424 00:19:21,790 --> 00:19:24,220 Tại sao PHP thực hiện quá nghèo nàn? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> ĐỐI TƯỢNG: Bạn đã không thực sự sử dụng một bảng băm. 427 00:19:26,550 --> 00:19:27,710 >> DAVID Malan: Tôi đã không thực sự sử dụng một bảng băm. 428 00:19:27,710 --> 00:19:28,760 Vì vậy, tôi loại đã làm. 429 00:19:28,760 --> 00:19:29,870 Vì vậy, nó là một mảng kết hợp. 430 00:19:29,870 --> 00:19:33,650 Nhiều khả năng nếu người dân ở PHP thực sự thông minh, họ đã sử dụng bên dưới 431 00:19:33,650 --> 00:19:39,520 mui xe một bảng băm thực tế thực hiện trong một cái gì đó như C hoặc C + +. 432 00:19:39,520 --> 00:19:41,290 Nhưng. 433 00:19:41,290 --> 00:19:42,760 Vâng. 434 00:19:42,760 --> 00:19:44,010 >> ĐỐI TƯỢNG: [nghe được]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVID Malan: Vâng. 437 00:19:47,080 --> 00:19:50,780 Vì vậy, mỗi người trong số các chức năng tôi đã viết ngay bây giờ - trên thực tế, bạn có thể nói rằng một lần nữa một 438 00:19:50,780 --> 00:19:51,480 ít to hơn? 439 00:19:51,480 --> 00:19:54,509 >> ĐỐI TƯỢNG: Mỗi phòng trong số chức năng mà bạn đã bao gồm có rất nhiều đầy đủ hơn 440 00:19:54,509 --> 00:19:56,610 công suất hơn - 441 00:19:56,610 --> 00:19:57,550 >> DAVID Malan: Vì vậy, đó là rất đúng. 442 00:19:57,550 --> 00:20:01,490 Có rất nhiều chi phí hơn là chúng tôi không thực sự nhìn thấy bằng cách chỉ tập trung vào 443 00:20:01,490 --> 00:20:03,730 dictionary.php, mà tôi chỉ viết. 444 00:20:03,730 --> 00:20:08,020 Ngược lại, có cả một thông dịch viên sẽ ở chế độ nền. 445 00:20:08,020 --> 00:20:12,040 Thật vậy, khi tôi chạy chương trình này, nó không chạy số không biên soạn và những người thân 446 00:20:12,040 --> 00:20:14,290 thiết kế cho CPU Intel của tôi. 447 00:20:14,290 --> 00:20:19,270 Thay vào đó, nó đã được chạy từng dòng Mã PHP trông giống hệt 448 00:20:19,270 --> 00:20:20,350 như chúng tôi gõ chữ. 449 00:20:20,350 --> 00:20:22,475 Và bất cứ khi nào bạn sử dụng một ngôn ngữ giải thích, bạn 450 00:20:22,475 --> 00:20:23,850 thực sự làm trả giá này. 451 00:20:23,850 --> 00:20:27,010 Nó sẽ mất một thời gian để đọc đầu tập tin của bạn xuống dưới, từ trái sang 452 00:20:27,010 --> 00:20:30,740 phải, và sau đó thực hiện mỗi xếp hàng một lần nữa và một lần nữa. 453 00:20:30,740 --> 00:20:34,250 >> Bây giờ trong thực tế, đặc biệt là trên các trang web, bạn thực sự có thể đẩy nhanh quá trình này 454 00:20:34,250 --> 00:20:38,660 của bộ nhớ đệm kết quả Mã PHP được giải thích. 455 00:20:38,660 --> 00:20:41,640 Và có ý nghĩa trên web, bởi vì nếu bạn không có một người sử dụng như 456 00:20:41,640 --> 00:20:46,300 tôi ở đây, nhưng 1.000 hoặc 10.000 người sử dụng, sau đó có lẽ lần đầu tiên tập tin là 457 00:20:46,300 --> 00:20:49,050 truy cập chậm, nhưng sau đó nó nhanh hơn nhiều. 458 00:20:49,050 --> 00:20:51,000 >> Nhưng điều này quá, một lần nữa, là một thương mại giảm. 459 00:20:51,000 --> 00:20:53,870 Và cho một cái gì đó giống như một dữ liệu nghiên cứu thiết lập, hoặc thậm chí một cái gì đó lớn như 460 00:20:53,870 --> 00:20:58,330 này, người dùng của bạn sẽ cuối cùng bắt đầu cảm thấy suy thoái đó. 461 00:20:58,330 --> 00:21:02,670 >> Ngôn ngữ như vậy trong ngắn hạn, giải thích là rất thịnh hành, rất phổ biến, và 462 00:21:02,670 --> 00:21:06,710 thẳng thắn có lẽ là ngôn ngữ bạn nên đến khi giải quyết vấn đề 463 00:21:06,710 --> 00:21:08,200 tiếp theo để CS50. 464 00:21:08,200 --> 00:21:12,720 Nhưng nhận ra bao nhiêu bạn thực sự dùng cho các cấp bên dưới mui xe 465 00:21:12,720 --> 00:21:15,910 thực sự những vài tuần qua trong băm bảng, và cây, và cố gắng, 466 00:21:15,910 --> 00:21:20,770 được sử dụng cuối cùng để thực sự thực hiện những điều như khung mở, 467 00:21:20,770 --> 00:21:24,200 khung vuông, mà chúng tôi có thể bây giờ biết ơn đưa cho các cấp. 468 00:21:24,200 --> 00:21:26,360 >> Vì vậy, chúng ta hãy có một cái nhìn tại trong bối cảnh web này. 469 00:21:26,360 --> 00:21:29,890 Và tôi đã đề cập lần cuối cùng mà có một loạt các superglobals trong PHP 470 00:21:29,890 --> 00:21:32,490 không thực sự có liên quan tại dòng lệnh. 471 00:21:32,490 --> 00:21:36,210 Họ thích hợp hơn trong bối cảnh của việc sử dụng PHP trong một bối cảnh web. 472 00:21:36,210 --> 00:21:41,220 Vì vậy, chạy PHP trên một máy chủ web để để tạo ra các công cụ như HTML. 473 00:21:41,220 --> 00:21:44,540 >> Và chúng ta liếc nhìn $ _GET và $ _POST, và đó là nơi tự động của người sử dụng 474 00:21:44,540 --> 00:21:49,100 đầu vào kết thúc chỉ đơn giản là nếu bạn gửi một hình thành vào một tập tin kết thúc bằng. php trên một trang web 475 00:21:49,100 --> 00:21:50,460 máy chủ như thiết bị. 476 00:21:50,460 --> 00:21:53,310 Nhưng chúng ta hãy xem một thời gian ngắn tại $ _COOKIE Và $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> Trong điều khoản của layman, một cookie như là những gì bạn hiểu nó trong bối cảnh 478 00:21:56,670 --> 00:21:58,220 sử dụng các trang web? 479 00:21:58,220 --> 00:21:59,450 >> ĐỐI TƯỢNG: tập tin trên máy tính. 480 00:21:59,450 --> 00:21:59,920 >> DAVID Malan: Vâng. 481 00:21:59,920 --> 00:22:03,500 Đó là một tập tin trên máy tính của người sử dụng trồng của bất kỳ trang web 482 00:22:03,500 --> 00:22:04,410 bạn tình cờ ghé thăm. 483 00:22:04,410 --> 00:22:07,334 Vì vậy, khi bạn đi vào Facebook, khi bạn đi để bankofamerica.com, khi bạn đi 484 00:22:07,334 --> 00:22:10,330 đến google.com, khi bạn đi đến hầu hết các trang web trên thế giới những ngày này, 485 00:22:10,330 --> 00:22:14,850 bao gồm cs50.net, một cookie được trồng trên máy tính của bạn, đó là 486 00:22:14,850 --> 00:22:19,800 hoặc là một giá trị được lưu trữ trong bộ nhớ RAM trong của bạn máy tính trong bộ nhớ của trình duyệt, hoặc 487 00:22:19,800 --> 00:22:22,800 đôi khi thực sự là một tập tin lưu trữ trên ổ cứng của bạn. 488 00:22:22,800 --> 00:22:26,960 >> Và những gì thường được lưu trữ trong tập tin đó không phải là tên người dùng của bạn, không phải của bạn 489 00:22:26,960 --> 00:22:31,060 mật khẩu, thông thường là không một cái gì đó nhạy cảm, trừ khi trang web không phải là quá 490 00:22:31,060 --> 00:22:35,040 tốt với an ninh của họ, mà là nó là một định danh duy nhất lớn giữa các 491 00:22:35,040 --> 00:22:35,680 những thứ khác. 492 00:22:35,680 --> 00:22:38,920 Đó là một số ngẫu nhiên lớn trồng trên của bạn máy tính nhưng bạn có thể nghĩ như 493 00:22:38,920 --> 00:22:42,740 sắp xếp của một dấu tay ảo như từ một câu lạc bộ hoặc một số công viên vui chơi giải trí mà 494 00:22:42,740 --> 00:22:47,160 cho phép các nhân viên, chủ sở hữu mà dịch vụ, để nhớ bạn là ai. 495 00:22:47,160 --> 00:22:51,030 Vì vậy, nếu các số ngẫu nhiên lớn là như 12345678, mặc dù đó là rõ ràng 496 00:22:51,030 --> 00:22:54,180 không quá ngẫu nhiên, suy nghĩ về nó như dấu tay khi bạn truy cập 497 00:22:54,180 --> 00:22:57,930 facebook.com lần đầu tiên, họ đóng dấu con số đó trên bàn tay của bạn. 498 00:22:57,930 --> 00:23:01,510 Và sau đó bởi vì bạn nói HTTP, bạn là một trình duyệt, và vì Facebook 499 00:23:01,510 --> 00:23:06,440 rõ ràng là nói giống như một trang web máy chủ, giao thức HTTP cho biết 500 00:23:06,440 --> 00:23:09,930 bất cứ lúc nào bạn sau đó ghé thăm facebook.com, cho dù đó là một thứ hai 501 00:23:09,930 --> 00:23:13,560 sau đó, một giờ sau đó, ngay cả những ngày tiếp theo, miễn là bạn chưa rõ ràng 502 00:23:13,560 --> 00:23:17,050 đăng xuất, mà hiệu quả là như rửa tay. 503 00:23:17,050 --> 00:23:20,280 HTTP nói rằng bạn nên trình bày của bạn tay đóng dấu mỗi khi bạn 504 00:23:20,280 --> 00:23:22,020 quay trở lại trang web đó. 505 00:23:22,020 --> 00:23:24,390 >> Những gì Facebook sau đó không là họ nhìn vào đó dấu tay và 506 00:23:24,390 --> 00:23:26,850 họ nói, oh, 123456789. 507 00:23:26,850 --> 00:23:30,260 Tôi không biết ở cái nhìn đầu tiên này là David Malan ở Cambridge, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, nhưng họ có thể kiểm tra của họ cơ sở dữ liệu và nói, oh, người 509 00:23:34,690 --> 00:23:39,930 trên máy tính mà chúng tôi trồng 123456789 là David Malan từ Cambridge, 510 00:23:39,930 --> 00:23:40,440 Massachusetts. 511 00:23:40,440 --> 00:23:46,000 Chúng ta thấy rằng người sử dụng sau đó hồ sơ của mình trang hoặc News Feed của mình. 512 00:23:46,000 --> 00:23:49,660 >> Nhưng có một vấn đề ở đây nếu điều này là cách các trang web thực sự hoạt động. 513 00:23:49,660 --> 00:23:51,390 Chúng ta hãy xem xét một ví dụ nhanh chóng. 514 00:23:51,390 --> 00:23:55,190 Chúng ta hãy thực sự đi nói facebook.com. 515 00:23:55,190 --> 00:23:58,130 Nhưng trước khi chúng tôi có thể đến đó, chúng ta hãy tôi đi trước và mở Chrome 516 00:23:58,130 --> 00:23:59,790 Thanh tra xuống đây. 517 00:23:59,790 --> 00:24:01,140 Hãy để tôi nhìn vào tab mạng. 518 00:24:01,140 --> 00:24:06,020 Và bây giờ chúng ta hãy đi trước và gõ trong https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 Và tôi làm điều đó để chúng ta không nhìn thấy tất cả những chuyển hướng và chất thải 520 00:24:09,410 --> 00:24:10,660 thời gian tìm kiếm thông qua các. 521 00:24:10,660 --> 00:24:12,690 Hãy để tôi nhấn Enter. 522 00:24:12,690 --> 00:24:13,130 >> Được rồi. 523 00:24:13,130 --> 00:24:14,580 Chúng tôi nhìn thấy một bó toàn bộ các yêu cầu. 524 00:24:14,580 --> 00:24:15,640 Có đến Facebook. 525 00:24:15,640 --> 00:24:16,930 Có một bó toàn bộ các tập tin. 526 00:24:16,930 --> 00:24:19,290 Và ở đây, mỗi đề cập đến của tôi độ trễ thời gian qua, đó là 527 00:24:19,290 --> 00:24:21,240 rất nhiều các yêu cầu HTTP. 528 00:24:21,240 --> 00:24:23,700 Nhưng là người đầu tiên có lẽ là thú vị nhất. 529 00:24:23,700 --> 00:24:26,420 >> Vì vậy, hãy di chuyển xuống đây, và Tôi sẽ phóng to trong một giây. 530 00:24:26,420 --> 00:24:29,090 Điều này là có được loại một mớ hỗn độn, nhưng chúng ta hãy xem. 531 00:24:29,090 --> 00:24:31,660 Facebook đang gửi cho chúng tôi một toàn bộ loạt các công cụ. 532 00:24:31,660 --> 00:24:33,490 >> Nhưng whoa, thú vị. 533 00:24:33,490 --> 00:24:37,880 Họ đang trồng không phải một, nhưng bốn tem tay lên tay của tôi ở đây. 534 00:24:37,880 --> 00:24:40,400 Thiết lập cookie, Set-cookie, set-cookie, set-cookie. 535 00:24:40,400 --> 00:24:44,030 Và có một vài tính năng ở đây. 536 00:24:44,030 --> 00:24:46,170 Tất cả đều đề cập đến một số loại hết hạn. 537 00:24:46,170 --> 00:24:50,090 Và có vẻ như Facebook đang hy vọng nhớ tôi cho đến năm 2015. 538 00:24:50,090 --> 00:24:53,670 Vì vậy, đó có lẽ là thời gian mà Tôi phải thoát hoặc họ sẽ chỉ 539 00:24:53,670 --> 00:24:55,710 tự động giả định tôi không quay trở lại. 540 00:24:55,710 --> 00:24:57,840 Vì vậy, đó thực sự là một phong nha số lượng thời gian. 541 00:24:57,840 --> 00:24:59,170 >> Và có một số khác điều đang xảy ra ở đây. 542 00:24:59,170 --> 00:25:03,036 Cookie này dường như là cưỡng bức xóa bằng cách nói nó hết hạn vào năm 1970 543 00:25:03,036 --> 00:25:04,460 trước khi cookie tồn tại. 544 00:25:04,460 --> 00:25:06,510 Vì vậy, các trình duyệt chỉ cần đi giả định OK, đó là như 545 00:25:06,510 --> 00:25:07,910 rửa dấu tay. 546 00:25:07,910 --> 00:25:11,240 >> Nhưng bây giờ khi trình duyệt của tôi làm cho một yêu cầu tiếp theo - 547 00:25:11,240 --> 00:25:14,340 hãy để tôi đi trước và làm điều này một lần nữa và lại. 548 00:25:14,340 --> 00:25:18,170 Bây giờ chúng tôi di chuyển trở lại yêu cầu hàng đầu và đi xuống 549 00:25:18,170 --> 00:25:20,760 ở đây, tiêu đề yêu cầu. 550 00:25:20,760 --> 00:25:21,390 Thông báo này. 551 00:25:21,390 --> 00:25:25,280 Vì vậy, bây giờ tôi không theo tiêu đề phản ứng, nhưng thấy nó nói tiêu đề yêu cầu. 552 00:25:25,280 --> 00:25:29,220 Và nhận thấy rằng trình duyệt của tôi như là một phần của yêu cầu của mình sau khi đánh tải lại có 553 00:25:29,220 --> 00:25:32,780 gửi tối thiểu dưới đây thông tin. 554 00:25:32,780 --> 00:25:34,670 Không thiết lập cookie, nhưng cookie. 555 00:25:34,670 --> 00:25:38,750 Vì vậy, đây là dòng, tiêu đề HTTP để để nói chuyện, trong đó trình duyệt của tôi là loại 556 00:25:38,750 --> 00:25:43,340 của tôi mà không cần biết nó trình bày tay của tôi để kiểm tra Facebook. 557 00:25:43,340 --> 00:25:46,020 >> Vì vậy, các tập tin cookie có thể được sử dụng sau đó để làm gì? 558 00:25:46,020 --> 00:25:49,420 Để nhớ bạn là ai, hoặc nhớ làm thế nào nhiều lần bạn đã có, hoặc 559 00:25:49,420 --> 00:25:50,280 thực sự bất cứ điều gì. 560 00:25:50,280 --> 00:25:52,742 >> Vì vậy, đây là counter.php. 561 00:25:52,742 --> 00:25:53,780 Và cho tôi phóng to phông chữ. 562 00:25:53,780 --> 00:25:58,380 Và mỗi lần tôi lại trang này, thông báo nó nhớ bao nhiêu lần 563 00:25:58,380 --> 00:25:59,250 Tôi đã ở đó. 564 00:25:59,250 --> 00:26:00,570 Vâng, đó không phải là tất cả những gì ấn tượng. 565 00:26:00,570 --> 00:26:03,140 Chúng ta chỉ cần đóng tab đó, và bây giờ chúng ta hãy quay trở lại 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> Ồ, đó là thú vị. 568 00:26:08,970 --> 00:26:10,960 Nó vẫn còn nhớ, ngay cả mặc dù tôi đóng tab. 569 00:26:10,960 --> 00:26:14,010 Và thẳng thắn, nếu tôi đóng trình duyệt, nếu được thực hiện một cách đúng đắn, tôi 570 00:26:14,010 --> 00:26:18,950 vẫn còn nhớ rằng người dùng này là người người đó là lần đầu tiên, và 571 00:26:18,950 --> 00:26:22,840 chỉ một lần tôi đi vào thực đơn của Chrome, mà trên đây là ở đây, và đi đến 572 00:26:22,840 --> 00:26:25,990 Lịch sử, và nhấp vào Xóa dữ liệu duyệt web, như một số bạn có thể có trong 573 00:26:25,990 --> 00:26:33,050 qua, chỉ sau đó sẽ cookie thực sự bị xóa trong quá web 574 00:26:33,050 --> 00:26:33,970 phát triển. 575 00:26:33,970 --> 00:26:35,340 >> Vì vậy, nếu chúng ta đi - 576 00:26:35,340 --> 00:26:37,080 chúng ta hãy đóng lên gedit đây. 577 00:26:37,080 --> 00:26:38,910 Và nếu chúng ta đi ngay bây giờ để tập tin này. 578 00:26:38,910 --> 00:26:44,210 Hãy để tôi đi vào của chúng tôi vhosts / localhost / công cộng, và để cho tôi làm 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Chú ý rằng đây là một khá chương trình đơn giản. 581 00:26:48,350 --> 00:26:50,250 Đó là một trang web khá đơn giản. 582 00:26:50,250 --> 00:26:51,770 >> Vì vậy, đầu của tập tin chỉ là ý kiến. 583 00:26:51,770 --> 00:26:54,930 Nhưng đây là một dòng mới mà bạn có thể đã thấy đã có trong p-bộ bảy, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 Đây là một dòng mã PHP cơ bản cho máy chủ web, hãy 586 00:27:00,380 --> 00:27:03,400 chắc chắn để đóng dấu tay và làm cho chắc chắn kiểm tra dấu tay. 587 00:27:03,400 --> 00:27:06,810 Đó là tất cả những dòng nào, và nó hiện tất cả các quá trình đó cho chúng ta. 588 00:27:06,810 --> 00:27:09,510 Sau đó nhận thấy tôi đã chỉ cần có hai chi nhánh ở đây. 589 00:27:09,510 --> 00:27:14,150 Nếu phím truy cập bên trong này biến toàn cầu đặc biệt gọi là 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Được thiết lập - nói cách khác, nếu có một số giá trị đó - 591 00:27:18,010 --> 00:27:22,440 chúng ta hãy làm cho nó và lưu trữ nó trong một địa phương biến gọi là $ truy cập. 592 00:27:22,440 --> 00:27:27,000 Khác, chúng ta hãy gán $ truy cập giá trị mặc định là 0. 593 00:27:27,000 --> 00:27:30,320 >> Bây giờ đây là một khía cạnh của PHP đó là cả một phước lành và một lời nguyền. 594 00:27:30,320 --> 00:27:32,080 PHP là một chút cẩu thả. 595 00:27:32,080 --> 00:27:35,160 Vì vậy, trong khi đó trong C, điều gì sẽ phạm vi truy cập đã 596 00:27:35,160 --> 00:27:36,725 hoặc đây hoặc đây? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> Nó sẽ được giới hạn những dấu ngoặc nhọn. 599 00:27:41,690 --> 00:27:42,090 Đoán những gì? 600 00:27:42,090 --> 00:27:46,920 Trong PHP, nó tồn tại ngay cả bên ngoài của những dấu ngoặc nhọn, ở đây, và ở đây, 601 00:27:46,920 --> 00:27:49,120 và ở đây, và ở đây, và thậm chí xuống dưới. 602 00:27:49,120 --> 00:27:52,400 Vì vậy, tôi nói điều này là một phước lành trong ý nghĩa bạn không phải suy nghĩ như 603 00:27:52,400 --> 00:27:54,070 khó khăn như chúng tôi đã làm tuần trước. 604 00:27:54,070 --> 00:27:56,880 Nhưng nó cũng là một chút của một lời nguyền trong đó không có vấn đề mà bạn sử dụng một biến trong 605 00:27:56,880 --> 00:28:00,020 PHP, ít nhất là trong một chương trình như thế này, đó là trên toàn cầu có thể truy cập cho 606 00:28:00,020 --> 00:28:01,170 tốt hơn hoặc tồi tệ hơn. 607 00:28:01,170 --> 00:28:06,130 Vì vậy bạn phải giữ trong tâm trí bây giờ mà biến của bạn có thể không được xác định. 608 00:28:06,130 --> 00:28:07,640 Bạn có thể đã được xác định ở một nơi khác. 609 00:28:07,640 --> 00:28:09,460 >> Nhưng những gì tôi sẽ làm gì cuối cùng? 610 00:28:09,460 --> 00:28:13,160 Tôi sẽ lưu trữ bên trong đó toàn cầu biến như là một giá trị của 611 00:28:13,160 --> 00:28:17,060 chìa khóa truy cập kết quả của làm truy cập cộng với 1. 612 00:28:17,060 --> 00:28:18,910 Vì vậy, đây chỉ là số học mà không được 613 00:28:18,910 --> 00:28:20,590 incrementation của truy cập đó. 614 00:28:20,590 --> 00:28:24,850 Và thực tế là tôi đang lưu trữ mà giá trị trở lại đây là phương tiện để 615 00:28:24,850 --> 00:28:29,970 về cơ bản cập nhật cơ sở dữ liệu hãy nhớ rằng người dùng 123456789 đã được 616 00:28:29,970 --> 00:28:31,010 đây hai lần. 617 00:28:31,010 --> 00:28:33,780 Và khi tôi làm điều đó một lần nữa trong thời gian tới tôi tải lại trang web, nó sẽ kiểm tra 618 00:28:33,780 --> 00:28:36,710 đóng dấu tay của tôi và nói, oh, người sử dụng 123456789 có bây giờ 619 00:28:36,710 --> 00:28:38,410 đã ở đây ba lần. 620 00:28:38,410 --> 00:28:43,390 >> Và vì vậy những gì PHP và tương tự như ngôn ngữ đang làm cho chúng ta là họ đang tìm 621 00:28:43,390 --> 00:28:47,720 ra như thế nào và ở đâu và trong bao lâu để lưu trữ các giá trị trong này đặc biệt 622 00:28:47,720 --> 00:28:48,830 superglobal. 623 00:28:48,830 --> 00:28:52,750 Và superglobal lần sau này tôi truy cập vào trang là loại kỳ diệu 624 00:28:52,750 --> 00:28:57,440 trước đông dân cư, đầy giá trị đã có lần cuối cùng bạn truy cập, 625 00:28:57,440 --> 00:29:02,310 cho dù đó là một giây trước đó, một tuần trước đây, vào năm 2013 và bây giờ chúng ta đang nói 626 00:29:02,310 --> 00:29:03,790 khoảng năm 2015. 627 00:29:03,790 --> 00:29:07,600 PHP và máy chủ web chăm sóc của tất cả các điều đó cho bạn. 628 00:29:07,600 --> 00:29:08,850 >> ĐỐI TƯỢNG: [nghe được]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID Malan: Các biến trong PHP về cơ bản luôn luôn toàn cầu, trừ khi bạn 631 00:29:15,760 --> 00:29:18,400 khai báo bên trong một chức năng, và sau đó họ có địa phương 632 00:29:18,400 --> 00:29:19,420 chỉ có chức năng. 633 00:29:19,420 --> 00:29:22,300 Nhưng bởi vì tôi đã không viết bất kỳ chức năng, họ đang có hiệu quả 634 00:29:22,300 --> 00:29:25,090 toàn cầu trong suốt toàn bộ tập tin của tôi ở đây. 635 00:29:25,090 --> 00:29:26,040 >> ĐỐI TƯỢNG: Có cách nào để làm cho họ địa phương? 636 00:29:26,040 --> 00:29:28,470 >> DAVID Malan: Có cách để làm cho họ địa phương? 637 00:29:28,470 --> 00:29:30,680 Chỉ có bao bì của họ vào các chức năng. 638 00:29:30,680 --> 00:29:32,790 Mà trong phiên bản mới nhất của PHP, bạn có thể làm điều này với 639 00:29:32,790 --> 00:29:34,130 một chức năng vô danh. 640 00:29:34,130 --> 00:29:35,930 Nhưng thêm vào đó trong các bối cảnh của JavaScript. 641 00:29:35,930 --> 00:29:37,260 Nhưng câu trả lời ngắn gọn là không. 642 00:29:37,260 --> 00:29:40,888 Một câu trả lời dài hơn là có. 643 00:29:40,888 --> 00:29:42,380 Tốt đẹp. 644 00:29:42,380 --> 00:29:43,380 Câu hỏi bài kiểm tra. 645 00:29:43,380 --> 00:29:43,930 Được rồi. 646 00:29:43,930 --> 00:29:47,760 >> Vì vậy, cuối cùng, các trang đó là thực sự khá đơn giản. 647 00:29:47,760 --> 00:29:51,470 Chú ý rằng một khi tôi thoát khỏi chế độ PHP, nhớ lại rằng tất cả các công cụ này xuống 648 00:29:51,470 --> 00:29:53,700 dưới đây chỉ là đi để có được nhổ ra liệu cho trình duyệt. 649 00:29:53,700 --> 00:29:57,050 Đó là tốt, bởi vì tôi muốn gửi người sử dụng một số HTML, nhưng tôi không muốn 650 00:29:57,050 --> 00:29:59,140 để tự động cập nhật mà HTML. 651 00:29:59,140 --> 00:30:03,930 Và một trong những cách tôi có thể làm điều này là để sắp xếp của rất nhanh chóng giảm trở lại vào PHP 652 00:30:03,930 --> 00:30:07,730 chế độ, sử dụng mở dấu hỏi khung dấu bằng, và sau đó sản lượng giá trị 653 00:30:07,730 --> 00:30:08,650 của truy cập. 654 00:30:08,650 --> 00:30:12,360 >> Hoặc nếu điều này có vẻ hơi khó hiểu, điều này dấu bằng là thực sự chỉ là một số 655 00:30:12,360 --> 00:30:16,190 cú pháp đường cho việc này printf ($ truy cập). 656 00:30:16,190 --> 00:30:19,160 Nhưng thẳng thắn mà nói, đó chỉ là một chút xấu xí và một chút khó chịu để loại. 657 00:30:19,160 --> 00:30:23,660 Vì vậy, PHP rất độc đáo cung cấp tính năng này mà bạn chỉ có thể nói nó hơn 658 00:30:23,660 --> 00:30:25,450 ngắn gọn trong cùng một cách. 659 00:30:25,450 --> 00:30:26,940 >> Vì vậy, những gì đang xảy ra bên dưới mui xe? 660 00:30:26,940 --> 00:30:31,210 Chúng ta hãy nhanh chóng xem xét mạng tab đây để counter.php. 661 00:30:31,210 --> 00:30:35,090 Và để cho tôi đi trước và đầu tiên chúng ta cần xóa các tập tin cookie của bạn. 662 00:30:35,090 --> 00:30:38,670 Dữ liệu duyệt web rõ ràng chúng ta hãy từ đầu thời gian. 663 00:30:38,670 --> 00:30:39,680 Bây giờ chúng ta hãy quay trở lại đây. 664 00:30:39,680 --> 00:30:41,340 Bây giờ chúng ta hãy tải lại trang. 665 00:30:41,340 --> 00:30:42,170 Và tôi lại không. 666 00:30:42,170 --> 00:30:44,810 Vì dấu tay của tôi đã được rửa sạch, Bây giờ tôi nhận được một cookie mới. 667 00:30:44,810 --> 00:30:48,780 >> Thực sự nếu tôi nhìn vào tab mạng và nhìn vào tiêu đề phản ứng, thông báo 668 00:30:48,780 --> 00:30:51,960 rằng thiết bị đang gửi tôi một cookie có tên là hơi 669 00:30:51,960 --> 00:30:55,820 tùy tiện, nhưng loại hợp lý, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 Và nó gửi cho tôi điều này thực sự số lớn ngẫu nhiên. 671 00:30:58,440 --> 00:30:59,440 Nó không phải là một số lượng khá. 672 00:30:59,440 --> 00:31:00,390 Nó không hoàn toàn hệ thập lục phân. 673 00:31:00,390 --> 00:31:03,600 Đó là một số loại chuỗi chữ số, nhưng có lẽ đó là ngẫu nhiên. 674 00:31:03,600 --> 00:31:06,830 Và đó là dấu tay như vậy để nói mà tôi đang đề cập đến. 675 00:31:06,830 --> 00:31:11,960 >> Trong khi đó nếu tôi nhấp vào tải lại và sau đó nhìn vào dòng thứ hai này cho thứ hai của tôi 676 00:31:11,960 --> 00:31:17,600 yêu cầu, thông báo bây giờ là yêu cầu của tôi tiêu đề bao gồm PHPSESSID bằng này, 677 00:31:17,600 --> 00:31:19,390 không thiết lập cookie, nhưng chỉ cookie. 678 00:31:19,390 --> 00:31:22,950 Và đó là trình bày trình duyệt của tôi của dấu tay của tôi. 679 00:31:22,950 --> 00:31:28,820 >> Vì vậy, bây giờ là một lời trêu ghẹo, và chúng tôi sẽ nói chuyện nhiều hơn về điều này trong một tuần hoặc lâu hơn, nhưng 680 00:31:28,820 --> 00:31:31,590 trong những cách thực hiện điều này làm cho bạn dễ bị tổn thương, tài khoản Facebook của bạn 681 00:31:31,590 --> 00:31:34,137 dễ bị tổn thương, và như vậy khác tài khoản dễ bị tổn thương? 682 00:31:34,137 --> 00:31:35,510 >> ĐỐI TƯỢNG: Nếu ai đó có cookie của bạn. 683 00:31:35,510 --> 00:31:36,750 >> DAVID Malan: Vâng, nếu một người nào đó có cookie của bạn. 684 00:31:36,750 --> 00:31:39,920 Tôi có nghĩa là thực sự, giống như một số bạn có thể đã cố gắng tại như một câu lạc bộ hoặc một 685 00:31:39,920 --> 00:31:44,030 công viên giải trí, nếu bạn cố gắng một cái gì đó như thế này để sao chép các tem, mặc dù 686 00:31:44,030 --> 00:31:47,560 ngược trở lại vào tay của người khác, và sau đó anh ta trình bày nó như 687 00:31:47,560 --> 00:31:53,250 riêng, nếu họ nó thực sự nhìn giống hệt nhau, 123456789, sau đó các trang web 688 00:31:53,250 --> 00:31:57,980 máy chủ là dường như chỉ cần đi để tin tưởng rằng người đó là bạn. 689 00:31:57,980 --> 00:32:01,450 >> Và điều này thực sự là một cơ bản mối đe dọa bất cứ lúc nào bạn sử dụng cookie 690 00:32:01,450 --> 00:32:05,420 bởi vì nếu một người nào đó chỉ lừa đảo như vậy để nói cookie, con số của bạn ra khỏi những gì nó 691 00:32:05,420 --> 00:32:08,660 được, hoặc bằng cách thực sự sao chép nó bằng cách nhìn vào máy tính của bạn 692 00:32:08,660 --> 00:32:09,890 và là như thế, OK. 693 00:32:09,890 --> 00:32:14,520 Cookie của David là JJ3JIK và vv, và sau đó họ đủ thông minh để biết 694 00:32:14,520 --> 00:32:18,080 cách sắp xếp của tự gửi mà cookie từ trình duyệt hoặc từ một 695 00:32:18,080 --> 00:32:22,350 chương trình họ viết, họ có thể hoàn toàn đăng nhập vào một trang web như bạn. 696 00:32:22,350 --> 00:32:28,560 Nó không phải là khó để giả vờ là một người khác trừ khi chúng tôi xem lại p-bộ 697 00:32:28,560 --> 00:32:30,790 hai, trong đó giới thiệu những gì? 698 00:32:30,790 --> 00:32:32,065 >> ĐỐI TƯỢNG: Mật mã học. 699 00:32:32,065 --> 00:32:33,860 >> DAVID Malan: A little bit của mật mã. 700 00:32:33,860 --> 00:32:36,550 Mật mã đơn giản, ít nhất là trong tiêu chuẩn phiên bản, nhưng mật 701 00:32:36,550 --> 00:32:36,870 dù sao. 702 00:32:36,870 --> 00:32:37,410 ít hơn. 703 00:32:37,410 --> 00:32:41,440 Thực ra, nếu bạn mã hóa tất cả những tiêu đề sử dụng một cái gì đó mà bạn 704 00:32:41,440 --> 00:32:48,770 bây giờ có thể biết thân thiết hơn như SSL, Secure Socket Layer, hoặc URL https://, 705 00:32:48,770 --> 00:32:51,890 sau đó tất cả những điều chúng tôi đã liếc nhìn thực sự mã hóa, 706 00:32:51,890 --> 00:32:54,800 có nghĩa là nó giống như bạn không thể đọc được dấu tay. 707 00:32:54,800 --> 00:32:59,350 Chỉ facebook.com có ​​thể, hoặc google.com, hoặc trong trường hợp này, thiết bị có thể 708 00:32:59,350 --> 00:33:00,550 đọc mà dấu tay. 709 00:33:00,550 --> 00:33:04,020 >> Bi kịch mặc dù, và một lần nữa, đây là tất cả các quá thích hợp với các công cụ NSA 710 00:33:04,020 --> 00:33:06,410 của cuối năm, thậm chí SSL là vỡ. 711 00:33:06,410 --> 00:33:09,850 Và nó thực sự không phải là khó thậm chí nứt mã hóa. 712 00:33:09,850 --> 00:33:12,040 Không quá nhiều khám phá ra mã hóa, nhưng bằng cách lừa 713 00:33:12,040 --> 00:33:15,720 trình duyệt vào giải mã các dữ liệu sớm. 714 00:33:15,720 --> 00:33:17,880 Nhưng một lần nữa, chúng tôi sẽ trêu chọc bạn với trước lâu. 715 00:33:17,880 --> 00:33:21,242 Hiện tại, chỉ sợ. 716 00:33:21,242 --> 00:33:23,070 Đó là bi kịch loại đúng. 717 00:33:23,070 --> 00:33:23,760 >> Được rồi. 718 00:33:23,760 --> 00:33:27,910 Vì vậy, nơi thực hiện điều này bây giờ lại cho chúng tôi? 719 00:33:27,910 --> 00:33:29,010 Vâng, chúng ta hãy làm điều này. 720 00:33:29,010 --> 00:33:31,790 Chúng ta hãy đi trước và có một cách nhanh chóng trêu ghẹo trước khi chúng ta nghỉ ngơi. 721 00:33:31,790 --> 00:33:33,790 Và tôi nghĩ rằng chúng tôi sẽ nán lại lâu hơn một chút ngày hôm nay, nhưng chúng ta sẽ đi sâu vào 722 00:33:33,790 --> 00:33:37,850 một cái gì đó mới và gợi cảm, mà sẽ kích thích sự thèm ăn của bạn cho nhiều hơn. 723 00:33:37,850 --> 00:33:38,950 Vì vậy, đó là lời trêu ghẹo. 724 00:33:38,950 --> 00:33:41,520 >> Vì vậy, SQL, chúng tôi bắt đầu nói về bao giờ nên một thời gian ngắn thời gian qua. 725 00:33:41,520 --> 00:33:44,670 Bạn thực sự sẽ có được bàn tay của bạn bẩn với một số của nó trong p-thiết lập bảy. 726 00:33:44,670 --> 00:33:46,480 Và trong điều khoản của layman, những gì hiện SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 làm cho bạn? 729 00:33:49,850 --> 00:33:50,310 Nó là gì? 730 00:33:50,310 --> 00:33:51,546 Vâng. 731 00:33:51,546 --> 00:33:53,240 >> ĐỐI TƯỢNG: Hãy bạn truy cập dữ liệu. 732 00:33:53,240 --> 00:33:53,360 >> DAVID Malan: Vâng. 733 00:33:53,360 --> 00:33:55,120 Nó cho phép của bạn truy cập dữ liệu trong một cơ sở dữ liệu. 734 00:33:55,120 --> 00:33:56,710 Structured Query Language. 735 00:33:56,710 --> 00:33:59,890 Và điều này về cơ bản là một ngôn ngữ lập trình. 736 00:33:59,890 --> 00:34:03,400 Có những tính năng của nó mà chúng tôi thậm chí sẽ không sử dụng trong lớp học. 737 00:34:03,400 --> 00:34:04,710 Nhưng bạn có thể có hiệu quả xác định chức năng. 738 00:34:04,710 --> 00:34:06,870 Chúng được gọi là lưu trữ thủ tục trong SQL. 739 00:34:06,870 --> 00:34:09,860 Nhưng chúng tôi sẽ giữ nó khá đơn giản và chỉ sử dụng nó cho một số hoạt động cơ bản 740 00:34:09,860 --> 00:34:14,320 giống như lựa chọn dữ liệu, chèn dữ liệu, cập nhật dữ liệu, và xóa dữ liệu. 741 00:34:14,320 --> 00:34:17,400 >> Và bạn thực sự có thể nghĩ đến một cơ sở dữ liệu, giống như một cơ sở dữ liệu SQL, như chỉ 742 00:34:17,400 --> 00:34:18,800 là Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Bởi vì SQL đề cập đến một quan hệ cơ sở dữ liệu, nơi 744 00:34:21,989 --> 00:34:23,480 mối quan hệ chỉ có nghĩa là bảng. 745 00:34:23,480 --> 00:34:24,739 Hàng và cột. 746 00:34:24,739 --> 00:34:27,929 Vì vậy, bất cứ điều gì bạn có thể đặt trong một bảng tính như thế này hay Google Docs, 747 00:34:27,929 --> 00:34:32,460 bạn có thể đưa vào một cơ sở dữ liệu SQL bằng cách tuyên bố một bảng. 748 00:34:32,460 --> 00:34:34,800 >> Bây giờ, làm thế nào để bạn thực sự truy cập thông tin đó? 749 00:34:34,800 --> 00:34:38,239 Vâng, với các lệnh hoặc truy vấn như thế này. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE, và DELETE. 751 00:34:40,199 --> 00:34:44,489 Và đối với hầu hết các phần, đó là những bốn chỉ thành phần bạn sẽ cần phải 752 00:34:44,489 --> 00:34:47,370 làm một cái gì đó khá mạnh mẽ trong vấn đề thiết lập bảy. 753 00:34:47,370 --> 00:34:49,940 >> Bây giờ trở lại trong ngày, bạn sẽ thực sự tương tác với một cơ sở dữ liệu trong một 754 00:34:49,940 --> 00:34:52,730 cửa sổ terminal màu đen và trắng tại một dấu nhắc nhấp nháy như thế này. 755 00:34:52,730 --> 00:34:56,370 Và cơ sở dữ liệu chúng tôi đang chạy trên thiết bị được gọi là MySQL, đó là 756 00:34:56,370 --> 00:34:58,560 cơ sở dữ liệu nguồn mở miễn phí. 757 00:34:58,560 --> 00:35:02,240 Nếu bạn Google và đọc Wikipedia bài viết, bạn sẽ biết rằng tên là 758 00:35:02,240 --> 00:35:05,060 một chút của quá trình chuyển đổi đối với một số các phiên bản của Linux. 759 00:35:05,060 --> 00:35:10,460 Cơ sở dữ liệu Maria thực sự là một ngã ba như vậy để nói về MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Long câu chuyện ngắn, Oracle mua MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle là một công ty lớn. 762 00:35:13,870 --> 00:35:17,010 Người đã lo lắng rằng nó sẽ không còn duy trì nguồn khá mở, 763 00:35:17,010 --> 00:35:20,930 do đó, đây chỉ là một bản sao của MySQL đó là vẫn còn miễn phí, vẫn còn mã nguồn mở, và 764 00:35:20,930 --> 00:35:23,550 cài đặt trong Fedora Linux theo mặc định. 765 00:35:23,550 --> 00:35:26,130 >> Nhưng đây là loại một cơn đau ở cổ để làm quen với một 766 00:35:26,130 --> 00:35:27,310 cơ sở dữ liệu theo cách này. 767 00:35:27,310 --> 00:35:30,560 Vì vậy, chúng tôi đưa vào thiết bị CS50 một công cụ mã nguồn mở miễn phí được gọi là 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Chỉ là một trùng hợp ngẫu nhiên mà nó được viết bằng PHP. 770 00:35:33,940 --> 00:35:36,450 Không có cơ bản cần cho PHP ở đây. 771 00:35:36,450 --> 00:35:40,090 Nhưng điều này chỉ là một công cụ dựa trên web chúng ta tải về miễn phí, cài đặt trong 772 00:35:40,090 --> 00:35:43,850 thiết bị, cho phép chúng ta có một giao diện người dùng đồ họa mà 773 00:35:43,850 --> 00:35:48,610 để khám phá p thiết lập cơ sở dữ liệu với bảy để tạo ra cơ sở dữ liệu mới, 774 00:35:48,610 --> 00:35:51,980 nói cho dự án cuối cùng của riêng bạn nếu bạn muốn như thế, và cuối cùng tạo ra 775 00:35:51,980 --> 00:35:55,900 các trang web động như CS50 Tài chính cho phép bạn truy vấn dữ liệu và 776 00:35:55,900 --> 00:35:58,140 cập nhật dữ liệu tự động. 777 00:35:58,140 --> 00:36:01,420 >> Bạn sẽ không phải sử dụng chỉ một tập tin văn bản đơn giản hoặc CSV. 778 00:36:01,420 --> 00:36:05,950 Bạn thực sự có thể sử dụng một cơ sở dữ liệu thông minh chương trình để bạn có thể thực hiện nhiều hơn 779 00:36:05,950 --> 00:36:10,240 truy vấn phức tạp hơn là chỉ đọc thông qua tất cả mọi thứ tuyến tính. 780 00:36:10,240 --> 00:36:14,150 >> Vì vậy, ví dụ, đây là những gì chúng tôi cung cấp bạn ra khỏi hộp cho p-thiết lập bảy. 781 00:36:14,150 --> 00:36:18,280 Đây là một bảng với dường như ít nhất ba cột, một trong số đó là 782 00:36:18,280 --> 00:36:21,450 Tên truy nhập, một trong số đó là băm, và một trong số đó là ID. 783 00:36:21,450 --> 00:36:26,200 >> Nhưng điều thú vị, và chỉ để trêu chọc ra một suy nghĩ ở đây, tên người dùng 784 00:36:26,200 --> 00:36:29,270 có lẽ là đã độc đáo, phải không? 785 00:36:29,270 --> 00:36:31,190 Ý tôi là, hầu hết các trang web bất kỳ, nếu bạn có một tên người dùng, có 786 00:36:31,190 --> 00:36:32,370 không thể có hai Caesars. 787 00:36:32,370 --> 00:36:33,440 Không thể có hai malans. 788 00:36:33,440 --> 00:36:34,950 Không thể có hai jharvards. 789 00:36:34,950 --> 00:36:35,600 Độc đáo của nó. 790 00:36:35,600 --> 00:36:38,610 Nếu không, họ không biết jharvard nó thực sự là. 791 00:36:38,610 --> 00:36:42,710 Vì vậy, những gì có thể là động lực cho cũng có một cột thứ ba bên trái 792 00:36:42,710 --> 00:36:46,970 đó được gọi là ID, trông giống như một số đó là duy nhất tương tự? 793 00:36:46,970 --> 00:36:51,300 Nó cảm thấy một chút dư thừa với tôi ở cái nhìn đầu tiên. 794 00:36:51,300 --> 00:36:54,910 Lý do tại sao nó có thể là hấp dẫn để có không chỉ tên người dùng duy nhất, 795 00:36:54,910 --> 00:36:56,837 nhưng cũng con số duy nhất? 796 00:36:56,837 --> 00:36:59,460 >> ĐỐI TƯỢNG: Họ có thể có cùng một mật khẩu. 797 00:36:59,460 --> 00:37:01,720 >> DAVID Malan: Mọi người có thể có cùng một mật khẩu, chắc chắn. 798 00:37:01,720 --> 00:37:03,900 Mà hoàn toàn có thể xảy ra. 799 00:37:03,900 --> 00:37:08,270 Nhưng nếu họ có tên độc đáo này, tôi sẽ lập luận rằng đó không thực sự 800 00:37:08,270 --> 00:37:11,630 vấn đề, bởi vì nếu họ gõ vào họ Tên truy nhập, tôi chỉ cần kiểm tra của họ 801 00:37:11,630 --> 00:37:15,060 mật khẩu, băm của họ biết. 802 00:37:15,060 --> 00:37:15,970 Tại sao nữa? 803 00:37:15,970 --> 00:37:17,950 >> ĐỐI TƯỢNG: nhanh hơn tìm kiếm. 804 00:37:17,950 --> 00:37:18,680 >> DAVID Malan: nhanh hơn tìm kiếm. 805 00:37:18,680 --> 00:37:19,548 Tại sao? 806 00:37:19,548 --> 00:37:21,460 >> ĐỐI TƯỢNG: ID chỉ có một. 807 00:37:21,460 --> 00:37:24,040 >> DAVID Malan: ID chỉ là một nhân vật, hoặc chính xác hơn, đó là một số, 808 00:37:24,040 --> 00:37:26,910 do đó, nó có thể là 32 bit hoặc một cái gì đó như thế. 809 00:37:26,910 --> 00:37:30,270 Trong khi đó, tên người dùng, rõ ràng Jason Lên Hirschhorn của có loại 810 00:37:30,270 --> 00:37:33,900 ridiculously dài, và nó sẽ đưa tôi thời gian nhiều hơn để chuỗi 811 00:37:33,900 --> 00:37:40,910 so sánh H-I-R-S-C-H-H-O-R-N, và có thể a / 0 hay như thế, để 812 00:37:40,910 --> 00:37:45,100 để tìm kiếm Jason, như trái ngược với chỉ nói cho tôi sử dụng số hai. 813 00:37:45,100 --> 00:37:46,510 Đó là 32 bit. 814 00:37:46,510 --> 00:37:48,550 Đó là một INT duy nhất mà bạn có để so sánh. 815 00:37:48,550 --> 00:37:52,150 Và quả thật, đó là chính xác lý do tại sao cơ sở dữ liệu có xu hướng gán ID duy nhất để 816 00:37:52,150 --> 00:37:53,710 hàng trong đó. 817 00:37:53,710 --> 00:37:56,280 >> Bây giờ những gì các loại dữ liệu khác đang có bên cạnh đó INT và rõ ràng 818 00:37:56,280 --> 00:37:57,160 chuỗi như thế này? 819 00:37:57,160 --> 00:37:59,700 Vâng, để được thích hợp hơn, Cơ sở dữ liệu SQL, như 820 00:37:59,700 --> 00:38:02,060 MySQL, có các lĩnh vực CHAR. 821 00:38:02,060 --> 00:38:05,320 Và CHAR một chút sai lạc không phải là một CHAR duy nhất. 822 00:38:05,320 --> 00:38:10,290 Một lĩnh vực CHAR trong một cơ sở dữ liệu MySQL một hoặc nhiều ký tự, nhưng đó là một 823 00:38:10,290 --> 00:38:11,780 số cố định của các nhân vật. 824 00:38:11,780 --> 00:38:15,710 >> Vì vậy, ví dụ, nếu tôi đi qua phpMyAdmin như bạn có thể đã có, hoặc 825 00:38:15,710 --> 00:38:21,340 sớm là một vấn đề sẽ thiết lập bảy, và tôi đi cơ sở dữ liệu của tôi, và chỉ để cho vui, 826 00:38:21,340 --> 00:38:25,700 chúng ta hãy tạo một bảng mới gọi là kiểm tra chỉ với hai cột. 827 00:38:25,700 --> 00:38:27,160 Sau đó tôi sẽ nhấn Go. 828 00:38:27,160 --> 00:38:30,070 Và điều này sẽ trở nên khá quen thuộc, đặc biệt là khi bạn chọc ngoáy 829 00:38:30,070 --> 00:38:31,130 xung quanh mình. 830 00:38:31,130 --> 00:38:34,140 Ở đây tôi có thể gõ ID để tạo ra một bảng mới của kiểu INT. 831 00:38:34,140 --> 00:38:37,770 Nhưng ở đây tôi có thể gõ tên người dùng để tái tạo mà bảng trước đó. 832 00:38:37,770 --> 00:38:40,700 Và thông báo tôi có một bó toàn bộ các loại để lựa chọn. 833 00:38:40,700 --> 00:38:43,610 >> Và đây cũng là lý do tại sao phpMyAdmin là loại tốt đẹp. 834 00:38:43,610 --> 00:38:46,770 Đó là loại tự học trong đó bạn có thể chỉ là loại điểm và nhấp chuột, và 835 00:38:46,770 --> 00:38:50,730 nhìn vào trình đơn thả xuống, và suy ra từ rằng những gì quyền hạn SQL cung cấp cho bạn. 836 00:38:50,730 --> 00:38:54,090 >> Và quả thực, nếu tôi chọn CHAR, tôi sau đó phải xác định độ dài, hoặc làm thế nào 837 00:38:54,090 --> 00:38:55,940 nhiều giá trị, bao nhiêu ký tự. 838 00:38:55,940 --> 00:39:00,090 Giá trị nên rất phổ biến là những thứ như 255, nhưng đó là một ít lâu. 839 00:39:00,090 --> 00:39:02,250 Thường là tám cho một tên người dùng. 840 00:39:02,250 --> 00:39:03,590 Nhưng đó là một chút nhỏ những ngày này. 841 00:39:03,590 --> 00:39:05,430 Vì vậy, đây là một quyết định thiết kế. 842 00:39:05,430 --> 00:39:08,630 Có 8 ký tự tối đa, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 Nó thực sự tùy thuộc vào bạn. 844 00:39:09,830 --> 00:39:12,350 Nhưng một lĩnh vực CHAR là một con số cố định. 845 00:39:12,350 --> 00:39:16,420 Vì vậy, lựa chọn quá ít và bạn đang loại hơi say nếu bạn muốn một tên người dùng lâu hơn. 846 00:39:16,420 --> 00:39:19,132 Chọn quá nhiều và những gì nhược điểm? 847 00:39:19,132 --> 00:39:20,820 >> ĐỐI TƯỢNG: [nghe được]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID Malan: Đó là lãng phí. 849 00:39:21,620 --> 00:39:24,835 Cũng giống như trong C, nếu bạn có một lớn hơn đoạn bộ nhớ hơn bạn cần, bạn 850 00:39:24,835 --> 00:39:27,190 chỉ lãng phí thời gian và lãng phí không gian. 851 00:39:27,190 --> 00:39:31,430 Vì vậy, như một sự thay thế, tồn tại VARCHAR, mà giải quyết vấn đề này bằng 852 00:39:31,430 --> 00:39:36,390 điều trị dài không phải là một chiều dài cố định, nhưng như chiều dài tối đa, và sử dụng một 853 00:39:36,390 --> 00:39:40,990 số biến của các ký tự, sau đó có xu hướng chỉ sử dụng như nhiều ký tự như bạn 854 00:39:40,990 --> 00:39:42,710 thực sự cần. 855 00:39:42,710 --> 00:39:43,670 Đó là âm thanh hoàn hảo. 856 00:39:43,670 --> 00:39:45,640 >> Tại sao chúng ta không thoát khỏi sự Nhập dữ liệu CHAR sau đó? 857 00:39:45,640 --> 00:39:48,500 Những gì có thể là nhược điểm của sử dụng varchars, mà âm thanh 858 00:39:48,500 --> 00:39:51,644 như đó là một chiến thắng đẹp? 859 00:39:51,644 --> 00:39:52,596 Yeah? 860 00:39:52,596 --> 00:39:53,846 >> ĐỐI TƯỢNG: [nghe được]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID Malan: OK, tốt. 863 00:39:57,790 --> 00:40:01,101 Vì vậy, nếu tất cả các dữ liệu của bạn là như nhau chiều dài, mối quan tâm là những gì? 864 00:40:01,101 --> 00:40:05,250 >> ĐỐI TƯỢNG: Bởi vì bạn đang lãng phí dữ liệu bằng cách nói cho tất cả. 865 00:40:05,250 --> 00:40:09,060 >> DAVID Malan: Vì vậy, nếu tất cả các dữ liệu của bạn chiều dài tương tự, tuy nhiên, tôi sẽ tranh luận 866 00:40:09,060 --> 00:40:12,300 rằng việc xác định chiều dài tối đa trên VARCHAR là không khác nhau từ 867 00:40:12,300 --> 00:40:16,070 chỉ định một chiều dài cố định trên CHAR nếu Bạn có biết rằng số trước. 868 00:40:16,070 --> 00:40:19,500 Nhưng có thực sự là, và tôi sẽ sắp xếp của trích xuất từ ​​đó câu trả lời thực tế 869 00:40:19,500 --> 00:40:22,610 rằng bạn vẫn có một tối đa, mà có thể được gây phiền nhiễu, đặc biệt là nếu bạn 870 00:40:22,610 --> 00:40:25,920 gặp phải tên của một người đó là bất thường lâu mà bạn không 871 00:40:25,920 --> 00:40:26,860 dự đoán. 872 00:40:26,860 --> 00:40:31,420 Và đó cũng là một chút ít hiệu quả để thực sự tìm kiếm trên varchars như 873 00:40:31,420 --> 00:40:35,620 trái ngược với tìm kiếm ký tự, đặc biệt là cho các bảng dài mà có rất nhiều và 874 00:40:35,620 --> 00:40:36,510 rất nhiều dữ liệu. 875 00:40:36,510 --> 00:40:40,060 Vì vậy, ở đây, chủ đề là một lần nữa không có sự lựa chọn rõ ràng. 876 00:40:40,060 --> 00:40:42,870 >> Vì vậy, chỉ để cung cấp cho bạn một cảm giác khác kiểu dữ liệu mà có thể quan tâm 877 00:40:42,870 --> 00:40:45,400 hoặc cho p-bộ bảy hoặc trong tương lai, có INT. 878 00:40:45,400 --> 00:40:47,270 Có BIGINT, mà là như lâu dài. 879 00:40:47,270 --> 00:40:48,880 Nó có xu hướng là 64 bit. 880 00:40:48,880 --> 00:40:51,640 Có số thập phân, mà bạn sẽ thấy trong bộ vấn đề, mà là một nhiều 881 00:40:51,640 --> 00:40:55,300 sạch câu trả lời cho những vấn đề chúng tôi gặp với phao và trôi nổi 882 00:40:55,300 --> 00:40:55,980 điểm không chính xác. 883 00:40:55,980 --> 00:40:57,390 Và sau đó có datetime. 884 00:40:57,390 --> 00:41:01,530 Có nghĩa là một kiểu dữ liệu có trông giống như một năm, một tháng, một ngày, 885 00:41:01,530 --> 00:41:03,730 và một giờ, phút và giây. 886 00:41:03,730 --> 00:41:07,470 >> Nhưng cơ sở dữ liệu SQL cũng có điều mà chúng tôi sẽ gọi cho chỉ số. 887 00:41:07,470 --> 00:41:11,630 Và một chỉ số là một cái gì đó mà bạn chỉ định khi tạo bảng để 888 00:41:11,630 --> 00:41:15,720 thực hiện tìm kiếm và các hoạt động khác hiệu quả hơn. 889 00:41:15,720 --> 00:41:18,550 Cụ thể, có một cái gì đó gọi là chỉ số tiểu học mà bạn có thể 890 00:41:18,550 --> 00:41:19,440 tuyên bố như sau. 891 00:41:19,440 --> 00:41:22,330 >> Chúng tôi đã làm điều này cho bạn với bảng người sử dụng, chúng tôi cung cấp cho bạn. 892 00:41:22,330 --> 00:41:26,160 Nhưng nhận thấy nếu tôi được tự tái tạo bảng người sử dụng ở đây cho 893 00:41:26,160 --> 00:41:27,110 nó một cái tên của người sử dụng. 894 00:41:27,110 --> 00:41:28,125 Tôi đã được xác định ID. 895 00:41:28,125 --> 00:41:29,330 Tôi đã chỉ định INT. 896 00:41:29,330 --> 00:41:32,000 Tôi đã chỉ định tên người dùng với tối đa 32 ký tự. 897 00:41:32,000 --> 00:41:36,140 Nhưng nếu chúng tôi tiếp tục di chuyển trong này khá cửa sổ rộng, nhận thấy có một 898 00:41:36,140 --> 00:41:38,260 bó của những thứ khác tôi có thể xác định. 899 00:41:38,260 --> 00:41:40,950 >> Một, tôi có thể chỉ định các thuộc tính thích, bạn biết những gì, điều này 900 00:41:40,950 --> 00:41:42,190 INT nên UNSIGNED. 901 00:41:42,190 --> 00:41:45,510 Tôi không muốn số âm, vì vậy hãy làm cho nó UNSIGNED. 902 00:41:45,510 --> 00:41:48,660 Null là không liên quan ở đây bởi vì Tôi muốn mọi người dùng để 903 00:41:48,660 --> 00:41:49,640 có một số duy nhất. 904 00:41:49,640 --> 00:41:50,830 Tôi không muốn nó là vô giá trị. 905 00:41:50,830 --> 00:41:52,330 >> Nhưng điều này là thú vị. 906 00:41:52,330 --> 00:41:57,780 Tôi có thể xác định rằng ID là một trong hai khóa chính của cơ sở dữ liệu này, hoặc nó 907 00:41:57,780 --> 00:42:00,620 độc đáo, hoặc nó lập chỉ mục, hoặc toàn bộ văn bản. 908 00:42:00,620 --> 00:42:05,630 Vì vậy, mục đích của ngày hôm nay, câu chuyện dài Tóm lại, có nghĩa là tiểu học mà trách nhiệm này 909 00:42:05,630 --> 00:42:10,570 được cả hai khái niệm và kỹ thuật các lĩnh vực mà chúng tôi sử dụng để duy nhất 910 00:42:10,570 --> 00:42:12,140 xác định người sử dụng. 911 00:42:12,140 --> 00:42:16,140 >> Vì vậy, khi chúng ta nhìn lên người sử dụng, đây là loại của một lời hứa để tìm chúng chủ yếu là do 912 00:42:16,140 --> 00:42:17,370 là định danh duy nhất. 913 00:42:17,370 --> 00:42:21,930 Và cơ sở dữ liệu sẽ đảm bảo rằng nếu bạn có một số người sử dụng 3, bạn có thể không 914 00:42:21,930 --> 00:42:25,400 thể chất chèn một người dùng khác với con số cùng 3. 915 00:42:25,400 --> 00:42:28,380 Cơ sở dữ liệu sẽ chỉ từ chối để lưu thay đổi. 916 00:42:28,380 --> 00:42:32,310 Đó là một điều tốt, bởi vì bạn có thể bảo vệ mình khỏi chính mình. tự 917 00:42:32,310 --> 00:42:34,270 >> Ngoài ra, nhập tên người dùng. 918 00:42:34,270 --> 00:42:37,670 Vì vậy, hàng thứ hai, thu hồi, là lĩnh vực tên người dùng. 919 00:42:37,670 --> 00:42:41,860 Vì vậy, hàng thứ hai ở đây là tên người dùng, như chúng tôi đã làm trên bên trái đó. 920 00:42:41,860 --> 00:42:43,940 >> Vì vậy, những gì khác tôi có thể muốn để xác định? 921 00:42:43,940 --> 00:42:47,840 Tôi không được phép, theo SQL, để xác định hai khóa chính. 922 00:42:47,840 --> 00:42:50,750 bạn có thể chỉ định một khóa chung nơi bạn nhìn vào cả hai lĩnh vực, nhưng họ không thể 923 00:42:50,750 --> 00:42:52,260 cá nhân là khóa chính. 924 00:42:52,260 --> 00:42:54,750 Vì vậy, đó là trong số các câu hỏi. 925 00:42:54,750 --> 00:42:56,040 Vì vậy mà tôi có thể muốn để lựa chọn? 926 00:42:56,040 --> 00:42:59,710 >> Vâng, UNIQUE là tinh thần tương tự một khóa chính mà bạn chỉ định này 927 00:42:59,710 --> 00:43:03,570 trường phải là duy nhất, nhưng nó sẽ không phải là một trong những 928 00:43:03,570 --> 00:43:04,410 Tôi sử dụng tất cả các thời gian. 929 00:43:04,410 --> 00:43:08,450 Và chúng tôi sẽ không sử dụng này tất cả thời gian cho những gì lý do một lần nữa? 930 00:43:08,450 --> 00:43:10,490 Nó chậm có khả năng nếu đó là một tên dài. 931 00:43:10,490 --> 00:43:11,740 Nó chỉ là một sự lãng phí thời gian. 932 00:43:11,740 --> 00:43:16,140 >> INDEX, trong khi đó, quy định cụ thể rằng đó là không phải là duy nhất, nhưng tôi muốn 933 00:43:16,140 --> 00:43:19,470 bạn làm việc kỳ diệu của bạn bên dưới mui xe để làm cho nó nhanh hơn cho tôi để 934 00:43:19,470 --> 00:43:21,420 tìm kiếm trên lĩnh vực này. 935 00:43:21,420 --> 00:43:23,320 Vì vậy, điều này có lẽ là không liên quan ở đây. 936 00:43:23,320 --> 00:43:26,500 Đối với Tên truy nhập, tôi muốn lập luận rằng UNIQUE là một câu trả lời tốt. 937 00:43:26,500 --> 00:43:31,200 Nhưng giả sử mà chúng ta đã sử dụng hơn thú vị hơn là chỉ tên người dùng, 938 00:43:31,200 --> 00:43:32,430 băm, và số ID. 939 00:43:32,430 --> 00:43:33,860 Nếu chúng ta đã cho mọi người cái tên đầy đủ? 940 00:43:33,860 --> 00:43:37,700 Nếu chúng ta cho họ địa chỉ và các dữ liệu khác về họ? 941 00:43:37,700 --> 00:43:43,360 >> Vâng, nếu bạn xác định rằng một cột trong một cơ sở dữ liệu được lập chỉ mục, có nghĩa là 942 00:43:43,360 --> 00:43:47,730 MySQL hay Oracle, hoặc bất cứ điều gì cơ sở dữ liệu bạn đang sử dụng, nên làm việc kỳ diệu của nó 943 00:43:47,730 --> 00:43:51,300 và sử dụng một số loại dữ liệu ưa thích cấu trúc giống như một cái cây, hoặc một Trie, hoặc một 944 00:43:51,300 --> 00:43:55,940 bảng băm, hoặc một cái gì đó để đảm bảo rằng khi bạn tìm kiếm dữ liệu sử dụng 945 00:43:55,940 --> 00:43:58,150 chọn trên lĩnh vực cụ thể - 946 00:43:58,150 --> 00:44:01,310 như chỉ cho tôi tất cả mọi người sống trên đường Oxford. 947 00:44:01,310 --> 00:44:02,540 Một câu truy vấn như thế. 948 00:44:02,540 --> 00:44:06,250 Nếu bạn đã xác định trước đó bạn muốn một chỉ số về lĩnh vực đó, 949 00:44:06,250 --> 00:44:09,050 tìm kiếm sẽ được nhiều, nhanh hơn nhiều. 950 00:44:09,050 --> 00:44:12,090 >> Nếu bạn không chỉ định một chỉ số, là tốt nhất bạn có thể làm là một tìm kiếm tuyến tính nếu 951 00:44:12,090 --> 00:44:13,030 nó không được sắp xếp. 952 00:44:13,030 --> 00:44:16,220 Nhưng nếu bạn chỉ định INDEX, thông minh những người làm cơ sở dữ liệu - 953 00:44:16,220 --> 00:44:19,340 những người như bạn của những người bây giờ biết cây và cố gắng và bảng băm - 954 00:44:19,340 --> 00:44:23,220 sẽ tự động xây dựng một dữ liệu đó cấu trúc trong bộ nhớ RAM để đảm bảo rằng 955 00:44:23,220 --> 00:44:26,050 những người tìm kiếm được nhanh hơn nhiều. 956 00:44:26,050 --> 00:44:29,660 >> Toàn văn trong khi đó là tinh thần tương tự, nhưng cho phép bạn làm ký tự đại diện 957 00:44:29,660 --> 00:44:35,480 , tìm kiếm như cho tôi tất cả mọi người sống ở đường phố bắt đầu bằng 958 00:44:35,480 --> 00:44:36,960 chữ O vì lý do gì. 959 00:44:36,960 --> 00:44:38,850 Bạn có thể thực hiện tìm kiếm ký tự đại diện như thế. 960 00:44:38,850 --> 00:44:45,880 Hoặc, những điều hấp dẫn hơn như chương trình tôi tất cả những người có chữ - 961 00:44:45,880 --> 00:44:49,400 chỉ cho tôi tất cả mọi người có tên bắt đầu với một lá thư đặc biệt. 962 00:44:49,400 --> 00:44:51,880 Bạn có thể tìm kiếm các từ khóa theo cách này. 963 00:44:51,880 --> 00:44:52,630 Được rồi. 964 00:44:52,630 --> 00:44:55,760 >> Vì vậy, cơ hội thiết kế có khả năng. 965 00:44:55,760 --> 00:44:57,740 Có những người khác mà tôi sẽ vẫy tay của tôi tại. 966 00:44:57,740 --> 00:45:00,530 Nó chỉ ra rằng bạn có thể có công cụ lưu trữ khác nhau. 967 00:45:00,530 --> 00:45:04,390 Và điều này là phức tạp hơn chúng ta cần chắc chắn cho vấn đề thiết lập bảy. 968 00:45:04,390 --> 00:45:06,920 Theo mặc định, các bạn đang sử dụng một cái gì đó gọi là InnoDB. 969 00:45:06,920 --> 00:45:10,910 Bạn sẽ thấy đề cập đến một nơi nào đó trong giao diện phpMyAdmin của khả năng nhất. 970 00:45:10,910 --> 00:45:14,130 Nhưng biết rằng có những thiết kế khác quyết định có tiềm năng 971 00:45:14,130 --> 00:45:18,030 quan tâm đến các dự án cuối cùng nếu bạn làm điều gì đó dựa trên web. 972 00:45:18,030 --> 00:45:19,330 >> Nhưng chúng ta hãy làm điều này. 973 00:45:19,330 --> 00:45:23,130 Chúng ta hãy đi trước và đặt này trên màn hình như một lời trêu ghẹo cho một câu chuyện 974 00:45:23,130 --> 00:45:26,330 liên quan đến bạn, một người bạn cùng phòng, và một ly sữa. 975 00:45:26,330 --> 00:45:28,240 Chúng ta hãy một phút hai hay như vậy phá vỡ ở đây. 976 00:45:28,240 --> 00:45:31,060 Và nếu bạn có thể dính vào xung quanh, chúng ta hãy trở lại, nhìn nhiều hơn một chút ở SQL, và 977 00:45:31,060 --> 00:45:35,160 sau đó một chút của JavaScript với p-đặt tám trong tâm trí. 978 00:45:35,160 --> 00:45:36,120 >> Được rồi. 979 00:45:36,120 --> 00:45:40,420 Vì vậy, chúng ta hãy giúp bạn suy nghĩ về một trường hợp góc mà có thể rất dễ dàng phát sinh 980 00:45:40,420 --> 00:45:44,240 trong bối cảnh của việc sử dụng một cơ sở dữ liệu, hoặc thẳng thắn, thậm chí sử dụng những thứ thế giới thực 981 00:45:44,240 --> 00:45:46,280 như máy ATM để lấy tiền. 982 00:45:46,280 --> 00:45:47,640 Vì vậy, đây là một tủ lạnh. 983 00:45:47,640 --> 00:45:50,040 Giả sử bạn đã có một quá trong ký túc xá của bạn hoặc nhà của bạn. 984 00:45:50,040 --> 00:45:54,990 Và bạn đã có một người bạn cùng phòng, và cả hai bạn thực sự thích sữa ví dụ. 985 00:45:54,990 --> 00:45:57,210 >> Vì vậy, bạn trở về nhà từ lớp học một ngày. 986 00:45:57,210 --> 00:45:58,490 Người đó là chưa trở lại. 987 00:45:58,490 --> 00:45:59,180 Bạn mở tủ lạnh. 988 00:45:59,180 --> 00:46:00,870 Bạn thực sự muốn một ly sữa lớn. 989 00:46:00,870 --> 00:46:01,820 Không có sữa. 990 00:46:01,820 --> 00:46:02,920 Vì vậy, bạn sẽ làm gì? 991 00:46:02,920 --> 00:46:03,840 Bạn đóng tủ lạnh. 992 00:46:03,840 --> 00:46:04,670 Bạn lấy chìa khóa của bạn. 993 00:46:04,670 --> 00:46:05,930 Bạn đi ra ngoài với hình vuông. 994 00:46:05,930 --> 00:46:09,240 Và bạn nhận được hàng tại CVS tại những thứ tự kiểm tra, mà luôn luôn 995 00:46:09,240 --> 00:46:11,180 mất nhiều thời gian hơn thực tế có nhân viên thu ngân. 996 00:46:11,180 --> 00:46:11,820 Dù sao đi nữa. 997 00:46:11,820 --> 00:46:15,490 >> Vì vậy, sau đó, trong khi đó, dot dot dot, của bạn bạn cùng phòng về nhà và người đó 998 00:46:15,490 --> 00:46:17,440 tương tự có một khao khát cho một ít sữa. 999 00:46:17,440 --> 00:46:20,380 Do đó, em mở tủ lạnh, nhìn vào bên trong, và oh, chết tiệt. 1000 00:46:20,380 --> 00:46:21,160 Không có sữa. 1001 00:46:21,160 --> 00:46:24,750 Vì vậy, người đó đứng ra, sẽ xảy ra đi đến CVS khác, mà chỉ là một 1002 00:46:24,750 --> 00:46:27,900 chặn đi vì một lý do, và người cô được xếp hàng để mua một ít sữa. 1003 00:46:27,900 --> 00:46:30,480 >> Trong khi đó, bạn trở về nhà, anh ta hoặc cô trở về nhà, và những gì làm 1004 00:46:30,480 --> 00:46:31,980 cuối cùng bạn có? 1005 00:46:31,980 --> 00:46:33,080 Gấp đôi sữa. 1006 00:46:33,080 --> 00:46:34,620 Nhưng bạn không thực sự thích sữa nhiều. 1007 00:46:34,620 --> 00:46:37,300 Vì vậy, bây giờ bạn có sữa rất nhiều mà bây giờ một trong số họ chỉ là sẽ đi chua 1008 00:46:37,300 --> 00:46:37,820 cuối cùng. 1009 00:46:37,820 --> 00:46:39,370 Vì vậy, đây là một vấn đề thực sự xấu. 1010 00:46:39,370 --> 00:46:39,900 Phải không? 1011 00:46:39,900 --> 00:46:41,990 >> Vì vậy, những gì đã xảy ra? 1012 00:46:41,990 --> 00:46:44,810 Vì vậy, về cơ bản, đây là loại một ví dụ vô lý. 1013 00:46:44,810 --> 00:46:48,580 Nhưng bên dưới mui xe, những gì chúng ta đã có xảy ra ở đây là cả hai bạn kiểm tra 1014 00:46:48,580 --> 00:46:52,390 tình trạng một số phần bộ nhớ, tủ lạnh. 1015 00:46:52,390 --> 00:46:54,420 Cả hai bạn kiểm tra nhà nước của một số biến. 1016 00:46:54,420 --> 00:46:57,360 Cả hai đã thu hút một kết luận mà bạn sau đó hành động trên. 1017 00:46:57,360 --> 00:47:01,420 Nhưng không may, trong khi người bạn cùng phòng của bạn là tại các cửa hàng, nhà nước đó 1018 00:47:01,420 --> 00:47:05,670 biến đổi, họ trở lại và bây giờ muốn thay đổi trạng thái, nhưng 1019 00:47:05,670 --> 00:47:07,480 nó đã được thay đổi trên người đó. 1020 00:47:07,480 --> 00:47:11,120 Và tất nhiên, họ sẽ không có đi đến các cửa hàng nếu họ biết 1021 00:47:11,120 --> 00:47:13,010 mà bạn đã đã trên đường. 1022 00:47:13,010 --> 00:47:16,430 >> Vì vậy, trong thế giới thực, làm thế nào có thể bạn tránh vấn đề này, giả sử bạn có 1023 00:47:16,430 --> 00:47:18,940 tủ lạnh, bạn có một người bạn cùng phòng, và bạn thực sự thích sữa? 1024 00:47:18,940 --> 00:47:19,760 >> ĐỐI TƯỢNG: Giao tiếp. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID Malan: Giao tiếp. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 Nhưng làm thế nào bạn có thể giao tiếp? 1028 00:47:22,500 --> 00:47:23,990 >> ĐỐI TƯỢNG: Để lại một lưu ý. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID Malan: Để lại một lưu ý, phải không? 1030 00:47:25,480 --> 00:47:28,025 Luôn luôn để lại một lưu ý, đối với người hâm mộ của chương trình. 1031 00:47:28,025 --> 00:47:31,580 Được rồi, vì vậy luôn luôn để lại một lưu ý, hoặc đưa thực sự giống như một ổ khóa hoặc một cái gì đó 1032 00:47:31,580 --> 00:47:35,440 trên tủ lạnh mà giữ của bạn bạn cùng phòng từ kiểm tra trạng thái của 1033 00:47:35,440 --> 00:47:36,540 rằng biến. 1034 00:47:36,540 --> 00:47:40,800 >> Bây giờ, tại sao có thể này được Gecman để vấn đề thiết lập bảy, hoặc máy ATM. 1035 00:47:40,800 --> 00:47:46,780 Vâng, hãy tưởng tượng một thế giới trong một máy ATM nơi bạn có thể có thể đi đến một ATM 1036 00:47:46,780 --> 00:47:48,920 máy ở đây, và một máy ATM ở đây. 1037 00:47:48,920 --> 00:47:50,680 Và điều này xảy ra khá thường xuyên. 1038 00:47:50,680 --> 00:47:54,150 Và giả sử bạn có hai thẻ ATM, mà có thể có được. 1039 00:47:54,150 --> 00:47:57,420 Và bạn đăng nhập vào cả hai máy hiệu quả đồng thời, hy vọng 1040 00:47:57,420 --> 00:47:58,660 trong khi không ai đang tìm kiếm. 1041 00:47:58,660 --> 00:48:01,260 Và sau đó bạn nhập vào mã PIN của bạn khoảng cùng một lúc. 1042 00:48:01,260 --> 00:48:06,280 Và sau đó bạn làm một truy vấn số dư để xem có bao nhiêu tiền bạn có. 1043 00:48:06,280 --> 00:48:08,920 Và chúng ta hãy nói rằng bạn có $ 100 còn lại trong tài khoản của bạn. 1044 00:48:08,920 --> 00:48:13,310 Vì vậy, về cơ bản cùng một lúc, bạn nói một, không, không, nhập. 1045 00:48:13,310 --> 00:48:16,000 Và bạn hy vọng có được trở lại một số tiền. 1046 00:48:16,000 --> 00:48:18,440 >> Nhưng bao nhiêu tiền bạn có thể lấy lại? 1047 00:48:18,440 --> 00:48:21,710 Bây giờ máy tính vào cuối ngày, đặc biệt là nếu họ đang nói chuyện với 1048 00:48:21,710 --> 00:48:27,360 các máy chủ, không nhất thiết phải làm những việc theo thứ tự đó là dự kiến. 1049 00:48:27,360 --> 00:48:30,860 >> Vì vậy, giả sử những gì xảy ra, vì bất cứ điều gì mạng có vấn đề tốc độ 1050 00:48:30,860 --> 00:48:34,530 là, hoặc các vấn đề CPU có, hoặc bất cứ điều gì như thế, giả sử 1051 00:48:34,530 --> 00:48:38,530 đầu tiên ATM kiểm tra số dư và thấy, oh, người này có $ 100. 1052 00:48:38,530 --> 00:48:41,840 Nhưng sau đó bị phân tâm bởi vì có thể một bản sao lưu đang xảy ra và vì vậy nó 1053 00:48:41,840 --> 00:48:42,500 chậm lại. 1054 00:48:42,500 --> 00:48:45,080 Hoặc có thể trong khi kiểm tra, mạng kết nối có chậm hơn một chút bởi vì 1055 00:48:45,080 --> 00:48:45,910 điều này chỉ xảy ra. 1056 00:48:45,910 --> 00:48:47,100 Họ thiết bị vật lý. 1057 00:48:47,100 --> 00:48:49,330 Vì vậy, trong khi đó, các máy ATM thứ hai là hỏi cùng một câu hỏi. 1058 00:48:49,330 --> 00:48:53,030 David không có bao nhiêu tiền? $ 100 là câu trả lời. 1059 00:48:53,030 --> 00:48:58,930 Nhưng bởi vì các máy ATM đầu tiên có chưa gửi tin nhắn trừ $ 100, cả hai 1060 00:48:58,930 --> 00:49:03,000 ATM đã kiểm tra kho quỹ của ngân hàng, nhìn thấy có 100 $ đó, và bây giờ 1061 00:49:03,000 --> 00:49:07,160 cả hai máy có khả năng là sẽ nhổ ra một câu trả lời. 1062 00:49:07,160 --> 00:49:12,240 >> Bây giờ, điều này là rất tốt cho bạn trong một số ý nghĩa nếu những gì các ngân hàng không cuối cùng 1063 00:49:12,240 --> 00:49:17,200 được thay đổi số tiền trừ đi 100 bằng thiết lập biến bằng của bạn 1064 00:49:17,200 --> 00:49:21,570 chiếm ngân hàng bằng 0, như trái ngược để làm trừ đi 100. 1065 00:49:21,570 --> 00:49:24,410 Bây giờ trong trường hợp xấu nhất cho ngân hàng - 1066 00:49:24,410 --> 00:49:27,470 hoặc tốt nhất cho các ngân hàng, trong khi đó, họ cung cấp cho bạn $ 200, và 1067 00:49:27,470 --> 00:49:31,690 tài khoản ngân hàng của bạn hiện nay cho thấy tiêu cực $ 100, mà thực sự không 1068 00:49:31,690 --> 00:49:32,950 có lợi cho bạn cả. 1069 00:49:32,950 --> 00:49:36,500 Nhưng điểm là cuộc đua này điều kiện để hai bạn cùng phòng nhận được 1070 00:49:36,500 --> 00:49:40,660 sữa, hoặc cho hai máy ATM cố gắng để có được tiền mặt và thay đổi trạng thái của một kho tiền 1071 00:49:40,660 --> 00:49:44,510 đồng thời tồn tại bất kỳ khi bạn có một cơ sở dữ liệu. 1072 00:49:44,510 --> 00:49:48,290 >> Bây giờ trong vấn đề thiết lập bảy, vấn đề này phát sinh trong ý nghĩa rằng nếu bạn mua một 1073 00:49:48,290 --> 00:49:52,110 cổ phiếu của cổ phiếu Facebook, và sau đó cho Ví dụ bạn mua một cổ phiếu thứ hai của 1074 00:49:52,110 --> 00:49:55,160 Cổ phiếu Facebook, bạn cần phải thực hiện một quyết định như các lập trình viên. 1075 00:49:55,160 --> 00:49:58,710 Để quyết định làm thế nào để cập nhật cơ sở dữ liệu, tỷ lệ cược là bạn sẽ 1076 00:49:58,710 --> 00:50:02,250 có một hàng cho cổ phiếu đó, và điều này là một cách để thực hiện nó. 1077 00:50:02,250 --> 00:50:06,640 Và bạn sẽ có một phần FB, đó là biểu tượng cổ phiếu mã chứng khoán của họ 1078 00:50:06,640 --> 00:50:10,120 cho tên người dùng này, hoặc người sử dụng này ID, nhận dạng duy nhất. 1079 00:50:10,120 --> 00:50:12,340 >> Nhưng những câu chuyện tương tự có thể xảy ra ở đây. 1080 00:50:12,340 --> 00:50:15,800 Nếu bạn làm một SELECT trong SQL, như bạn sẽ thấy trong vấn đề thiết lập bảy khi bạn nhìn thấy, 1081 00:50:15,800 --> 00:50:18,460 oh, David có một phần cổ phiếu Facebook. 1082 00:50:18,460 --> 00:50:23,240 Bây giờ tôi thay đổi này là hai cổ phiếu, bởi vì anh muốn mua một 1083 00:50:23,240 --> 00:50:24,120 phần thứ hai. 1084 00:50:24,120 --> 00:50:27,860 Nhưng giả sử David thực sự đã có hai cửa sổ trình duyệt mở, hoặc giả sử rằng 1085 00:50:27,860 --> 00:50:32,150 đó là một tài khoản chung với hai vợ chồng, và cả hai đều đang cố gắng để thực hiện 1086 00:50:32,150 --> 00:50:36,770 các hoạt động tương tự, ở đó, cũng vậy, tiềm năng tồn tại cho một quyết định được 1087 00:50:36,770 --> 00:50:39,670 thực hiện dựa trên trước nhà nước của thế giới - 1088 00:50:39,670 --> 00:50:41,290 tài khoản có một cổ phiếu - 1089 00:50:41,290 --> 00:50:45,630 và cả hai người, hoặc cả hai máy chủ, bây giờ cố gắng để nói tăng nó để hai cổ phiếu. 1090 00:50:45,630 --> 00:50:49,020 Nhưng trong trường hợp này, bạn có thể tính phí tôi tiền cho cả hai cổ phiếu, nhưng 1091 00:50:49,020 --> 00:50:50,830 tăng lên chỉ là một thời gian. 1092 00:50:50,830 --> 00:50:54,730 >> Vì vậy, trong ngắn hạn, vấn đề cơ bản ở đây, như với các trò đùa về để lại một 1093 00:50:54,730 --> 00:50:58,750 lưu ý, hoặc đặt một ổ khóa trên đó, là nếu hai người, hoặc hai chủ đề - 1094 00:50:58,750 --> 00:50:59,930 nghĩ lại đầu - 1095 00:50:59,930 --> 00:51:03,220 có thể kiểm tra trạng thái của một số biến và sau đó cố gắng thay đổi biến đó, 1096 00:51:03,220 --> 00:51:07,950 nhưng hai điều này không xảy ra tại cùng một thời gian, nhưng có thể nhận được bị gián đoạn 1097 00:51:07,950 --> 00:51:11,500 bởi những thứ khác xảy ra, dữ liệu có thể nhận được vào một trạng thái rất lạ. 1098 00:51:11,500 --> 00:51:15,450 Và bạn có thể có lợi hoặc bạn có thể bị trong ý nghĩa của ví dụ tiền. 1099 00:51:15,450 --> 00:51:18,110 >> Vì vậy, trong vấn đề thiết lập bảy, chúng tôi cung cấp cho bạn một dòng mã này, mà dài 1100 00:51:18,110 --> 00:51:21,000 truyện ngắn, giải quyết điều này vấn đề trong MySQL. 1101 00:51:21,000 --> 00:51:24,950 Này hướng dẫn rất dài mà không làm thậm chí phù hợp vào một dòng trên 1102 00:51:24,950 --> 00:51:30,370 màn hình ở đây đảm bảo rằng hoạt động của bạn là những gì được gọi là nguyên tử. 1103 00:51:30,370 --> 00:51:33,720 Tất cả xảy ra cùng một lúc, hoặc nó không xảy ra ở tất cả. 1104 00:51:33,720 --> 00:51:37,530 Cụm từ rất lâu này có thể không nhận được gián đoạn một phần. 1105 00:51:37,530 --> 00:51:39,840 >> Và những gì nó làm là theo nghĩa đen những gì nó nói. 1106 00:51:39,840 --> 00:51:44,200 Chèn vào một số bảng sau ba lĩnh vực những giá trị cụ thể, 1107 00:51:44,200 --> 00:51:47,280 nhưng trên khóa trùng lặp, không làm một chèn. 1108 00:51:47,280 --> 00:51:48,280 Làm một bản cập nhật. 1109 00:51:48,280 --> 00:51:52,450 Vì vậy, điều này giống như làm một SELECT và một INSERT vậy để nói chuyện cùng một lúc. 1110 00:51:52,450 --> 00:51:55,150 Và chìa khóa đó có thể là những gì được gọi đến đây? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Hóa ra, và bạn sẽ thấy điều này trong vấn đề thiết lập thông số bảy, bởi vì 1113 00:52:01,380 --> 00:52:06,040 chúng tôi đã tuyên bố có được một chìa khóa duy nhất trên bàn đặc biệt này như vậy mà 1114 00:52:06,040 --> 00:52:08,480 bạn không thể có nhiều hàng cho người sử dụng cùng với 1115 00:52:08,480 --> 00:52:10,150 cùng một biểu tượng cổ phiếu penny - 1116 00:52:10,150 --> 00:52:13,780 trong ví dụ này đây, là DVN.V một cổ phiếu penny ngớ ngẩn mà chúng ta 1117 00:52:13,780 --> 00:52:14,980 tham khảo trong spec. 1118 00:52:14,980 --> 00:52:17,860 Bởi vì chúng tôi đã tuyên bố nó là duy nhất, điều này có nghĩa là nếu bạn 1119 00:52:17,860 --> 00:52:23,580 cố gắng để chèn một hàng trùng lặp, bạn thay vào đó sẽ cập nhật nó mà không 1120 00:52:23,580 --> 00:52:27,020 bất cứ ai khác có một cơ hội để thay đổi trạng thái của thế giới hai. 1121 00:52:27,020 --> 00:52:29,400 Vì vậy, trong ngắn hạn, điều này đảm bảo điều này là nguyên tử. 1122 00:52:29,400 --> 00:52:32,530 >> Nói chung, mặc dù cơ sở dữ liệu như MySQL - 1123 00:52:32,530 --> 00:52:35,460 và bạn không cần tính năng này cho p thiết lập bảy, nhưng giữ nó trong tâm trí cho 1124 00:52:35,460 --> 00:52:36,200 tương lai - 1125 00:52:36,200 --> 00:52:38,870 hỗ trợ những gì được gọi là giao dịch, nơi bạn có thể nói 1126 00:52:38,870 --> 00:52:40,990 BẮT ĐẦU GIAO DỊCH nghĩa đen. 1127 00:52:40,990 --> 00:52:43,270 Sau đó bạn có thể thực hiện hai câu lệnh SQL. 1128 00:52:43,270 --> 00:52:45,710 Và một câu lệnh SQL, như bạn sẽ thấy trong p-thiết lập bảy, trông hơi 1129 00:52:45,710 --> 00:52:46,750 một cái gì đó như thế này. 1130 00:52:46,750 --> 00:52:48,820 Cập nhật một bảng gọi là tài khoản. 1131 00:52:48,820 --> 00:52:52,550 Thiết lập các cột cân bằng bất cứ điều gì cột cân bằng hiện nay 1132 00:52:52,550 --> 00:52:57,280 là âm 1000 mà số lượng, số tài khoản, như ID của người dùng, 1133 00:52:57,280 --> 00:53:00,830 bằng 2, và sau đó cập nhật tài khoản dot dot dot. 1134 00:53:00,830 --> 00:53:04,350 >> Vì vậy, trong điều khoản của layman, những gì hai truy vấn dường như đang làm trong 1135 00:53:04,350 --> 00:53:05,840 cảm giác thế giới thực của ngân hàng? 1136 00:53:05,840 --> 00:53:07,440 >> ĐỐI TƯỢNG: Chuyển đến tiết kiệm. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID Malan: Chính xác. 1138 00:53:08,020 --> 00:53:10,470 Chuyển tiền từ một chiếm đến khác. 1139 00:53:10,470 --> 00:53:14,400 Và đây là một ví dụ khác, nơi bạn thực sự muốn hai điều này xảy ra 1140 00:53:14,400 --> 00:53:15,570 hoặc không xảy ra. 1141 00:53:15,570 --> 00:53:18,880 Bạn không muốn một cái gì đó để có được trong giữa chúng và có khả năng gây rối 1142 00:53:18,880 --> 00:53:22,220 các môn toán, hoặc mess up bao nhiêu tiền bạn có, hoặc có bao nhiêu 1143 00:53:22,220 --> 00:53:23,170 tiền ngân hàng có. 1144 00:53:23,170 --> 00:53:26,890 Vì vậy, những gì thực sự tốt đẹp về giao dịch trong MySQL là, và 1145 00:53:26,890 --> 00:53:30,160 cơ sở dữ liệu nói chung, là họ và những người thông minh, những người đã thực hiện 1146 00:53:30,160 --> 00:53:33,670 các tính năng tìm ra cách để làm cho chắc chắn rằng cả hai điều xảy ra 1147 00:53:33,670 --> 00:53:35,120 hoặc không gì cả. 1148 00:53:35,120 --> 00:53:38,580 >> Và nếu bạn đang thực sự khát vọng biến một trang web mà được sử dụng bởi những người trên 1149 00:53:38,580 --> 00:53:41,490 khuôn viên trường, mọi người trong thế giới thực, làm một cái gì đó trong ý nghĩa khởi động, 1150 00:53:41,490 --> 00:53:43,300 đây là những loại quyết định thiết kế 1151 00:53:43,300 --> 00:53:45,020 càng trở nên quan trọng như vậy. 1152 00:53:45,020 --> 00:53:48,240 Nếu không, bạn bắt đầu để mất dữ liệu, bị mất người sử dụng, hoặc trong trường hợp xấu nhất như 1153 00:53:48,240 --> 00:53:51,800 chúng tôi đã nhìn thấy ở đây, có khả năng bị mất tiền. 1154 00:53:51,800 --> 00:53:56,180 Vì vậy, một lần nữa, thêm vào đó trong vấn đề thiết lập bảy, cũng như có thể cho một số 1155 00:53:56,180 --> 00:53:57,530 bạn trong dự án cuối cùng. 1156 00:53:57,530 --> 00:54:01,870 >> Vì vậy, hãy thay đổi điều đó chúng tôi đã có hình ảnh một thời điểm trước đây chỉ trong một trong nhiều cách. 1157 00:54:01,870 --> 00:54:04,070 Vì vậy, hãy để tôi thực sự thấy nếu tôi có thể - 1158 00:54:04,070 --> 00:54:06,030 nope, đó là đi. 1159 00:54:06,030 --> 00:54:06,690 Có nó được. 1160 00:54:06,690 --> 00:54:09,020 >> Vì vậy, đây là nơi mà chúng ta để lại thời gian qua. 1161 00:54:09,020 --> 00:54:12,390 Và hóa ra chúng ta sẽ quăng một điều nữa vào hỗn hợp ở đây - 1162 00:54:12,390 --> 00:54:14,510 một ngôn ngữ được gọi là JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Vì vậy, JavaScript thực sự phù hợp thành phần này - 1164 00:54:18,060 --> 00:54:22,086 và tôi không khá chừa đủ chỗ, vì vậy đây không phải là bây giờ theo quy mô. 1165 00:54:22,086 --> 00:54:23,900 OK, điều này thực sự là thảm hại. 1166 00:54:23,900 --> 00:54:27,075 OK, vì vậy đó là JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Được rồi. 1168 00:54:27,340 --> 00:54:28,760 Tôi đang thực sự làm việc đó một tai hại. 1169 00:54:28,760 --> 00:54:29,390 Được rồi. 1170 00:54:29,390 --> 00:54:34,790 >> Vì vậy, JavaScript là lập trình khác ngôn ngữ, và cuối cùng chúng tôi, Nếu giúp 1171 00:54:34,790 --> 00:54:37,770 trấn an rằng không có nhiều hơn của vòi phun chữa cháy ở đây. 1172 00:54:37,770 --> 00:54:41,100 Vì vậy, JavaScript cũng là một giải thích ngôn ngữ, có nghĩa là bạn không 1173 00:54:41,100 --> 00:54:42,670 biên dịch nó thành số không và những người thân. 1174 00:54:42,670 --> 00:54:43,690 Bạn chỉ cần chạy nó. 1175 00:54:43,690 --> 00:54:47,680 Nhưng những gì cơ bản khác nhau với JavaScript thường là bạn 1176 00:54:47,680 --> 00:54:49,815 không chạy nó trên máy chủ web của bạn. 1177 00:54:49,815 --> 00:54:52,570 Nó không được chạy trong thiết bị cho mỗi gia nhập. 1178 00:54:52,570 --> 00:54:57,490 Thay vào đó, nó được tải về bởi người dùng thông qua vào trình duyệt của họ HTTP - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, bất cứ điều gì - 1180 00:55:00,260 --> 00:55:03,860 và đó là trình duyệt mà thực hiện điều này ngôn ngữ lập trình cụ thể. 1181 00:55:03,860 --> 00:55:08,000 >> Vì vậy, để được rõ ràng, PHP vậy, đến nay đã được thực hiện vào lúc hoặc dòng lệnh trong 1182 00:55:08,000 --> 00:55:11,290 cửa sổ màu đen và trắng của chúng tôi, trên một máy chủ như các thiết bị, máy tính 1183 00:55:11,290 --> 00:55:14,490 thích thiết bị, hoặc nó được thực hiện bởi một máy chủ web 1184 00:55:14,490 --> 00:55:15,860 chạy trên một máy tính. 1185 00:55:15,860 --> 00:55:20,490 Nhưng chủ đề ở đây là PHP mà cho đến nay đã được thực hiện phía máy chủ, vì vậy 1186 00:55:20,490 --> 00:55:24,820 người sử dụng và trình duyệt của người dùng không bao giờ nhìn thấy một dòng mã PHP. 1187 00:55:24,820 --> 00:55:28,530 >> Trong thực tế, nếu bạn mở một trình duyệt cho trang web này hay cách khác của bạn và bạn 1188 00:55:28,530 --> 00:55:32,400 thực sự thấy mã PHP trong cửa sổ của bạn, ai đó đã hơi say lên. 1189 00:55:32,400 --> 00:55:34,950 Bởi vì nó không có nghĩa là phải gửi đến một trình duyệt trực tiếp. 1190 00:55:34,950 --> 00:55:38,150 Nó phải được thực hiện và quay vào một cái gì đó giống như HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Nhưng JavaScript cơ bản là ngược lại. 1192 00:55:40,120 --> 00:55:44,350 Nó có nghĩa là để được chạy thường bên trong của cửa sổ trình duyệt của người dùng. 1193 00:55:44,350 --> 00:55:46,840 Và những gì các loại trang web sử dụng JavaScript sau đó những ngày này? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Như nghĩa đen mỗi trang web phổ biến. 1196 00:55:52,180 --> 00:55:55,430 Tất cả các website mà các bạn có thể sử dụng hàng ngày sử dụng JavaScript cho 1197 00:55:55,430 --> 00:55:57,330 đơn giản và thậm chí cả tính năng gợi cảm nhất. 1198 00:55:57,330 --> 00:55:59,800 >> Vì vậy, một cái gì đó như Facebook Trò chuyện nếu bạn sử dụng. 1199 00:55:59,800 --> 00:56:01,040 Làm thế nào mà thực sự làm việc? 1200 00:56:01,040 --> 00:56:05,090 Cũng vậy, đến nay, tất cả những thứ chúng tôi đã thực hiện với HTML và PHP giả định rằng 1201 00:56:05,090 --> 00:56:08,750 bạn kéo lên một URL, và bạn nhấn Enter, và bạn thấy một số nội dung HTML. 1202 00:56:08,750 --> 00:56:11,970 Và kích vào liên kết, làm thay đổi URL, thay đổi trang, và tải lại 1203 00:56:11,970 --> 00:56:12,740 một số nội dung mới. 1204 00:56:12,740 --> 00:56:16,340 Nhấp vào URL khác hoặc gửi một mẫu, bạn được gạt sang một trang khác và 1205 00:56:16,340 --> 00:56:17,420 bạn nhìn thấy một số nội dung mới. 1206 00:56:17,420 --> 00:56:22,710 >> Nhưng sử dụng một cái gì đó như Facebook Chat, hoặc Gchat, hay Google Maps, hiếm khi 1207 00:56:22,710 --> 00:56:27,350 không làm mới toàn bộ trang như vậy mà bạn sẽ thấy một màn hình trắng trong giây lát và 1208 00:56:27,350 --> 00:56:28,470 sau đó nội dung mới. 1209 00:56:28,470 --> 00:56:32,610 Thay vào đó, các trang web hiện nay là tự động nhận được cập nhật một lần nữa và 1210 00:56:32,610 --> 00:56:35,570 một lần nữa và một lần nữa tất cả các loại của đằng sau hậu trường. 1211 00:56:35,570 --> 00:56:38,560 Và nó chỉ ra rằng khi bạn đi đến một cái gì đó như Facebook, hoặc Gchat, 1212 00:56:38,560 --> 00:56:43,050 hay Gmail, và các bản cập nhật trang tự động mà không cần tải lại 1213 00:56:43,050 --> 00:56:47,630 toàn bộ màn hình, những gì đang xảy ra là Trình duyệt của bạn đã có những loại bí mật 1214 00:56:47,630 --> 00:56:49,410 yêu cầu HTTP bổ sung - 1215 00:56:49,410 --> 00:56:52,740 không cho các trang web toàn bộ, nhưng chỉ dành cho khối nhỏ của dữ liệu, giống như 1216 00:56:52,740 --> 00:56:55,740 tin nhắn ngay lập tức mà bạn của bạn chỉ gửi cho bạn, hoặc các cập nhật trạng thái 1217 00:56:55,740 --> 00:56:58,210 một người nào đó chỉ gửi cho bạn, hoặc các tweet rằng một người nào đó chỉ cần gửi. 1218 00:56:58,210 --> 00:57:02,120 Nó chỉ làm cho các yêu cầu nhỏ cho dữ liệu, và sau đó sử dụng JavaScript, điều này 1219 00:57:02,120 --> 00:57:06,370 ngôn ngữ lập trình, thay đổi những gì các trang web trông giống như không có sự 1220 00:57:06,370 --> 00:57:09,860 máy chủ giúp đỡ, mà không cần máy chủ tạo ra HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Vì vậy, trong ngắn hạn, JavaScript có thể được sử dụng sau đó không chỉ lấy dữ liệu mới từ 1222 00:57:13,820 --> 00:57:16,750 các máy chủ mà không cần tải lại toàn bộ trang hoặc nộp một mẫu đơn. 1223 00:57:16,750 --> 00:57:20,060 Nó cũng có thể được sử dụng để thay đổi cái gọi là DOM - 1224 00:57:20,060 --> 00:57:21,520 đối tượng tài liệu mô hình - 1225 00:57:21,520 --> 00:57:24,620 đó chỉ là cách ưa thích cho nói rằng cây của HTML 1226 00:57:24,620 --> 00:57:26,220 mà chúng ta đã thấy thời gian qua. 1227 00:57:26,220 --> 00:57:31,640 >> Vì vậy, để trấn an, JavaScript cú pháp rất giống với C là tốt. 1228 00:57:31,640 --> 00:57:32,820 Không có chức năng chính. 1229 00:57:32,820 --> 00:57:35,430 Bạn chỉ cần bắt đầu viết mã và nó sẽ được thực hiện, hoặc 1230 00:57:35,430 --> 00:57:36,900 giải thích đúng hơn. 1231 00:57:36,900 --> 00:57:38,660 Điều kiện sẽ như thế này. 1232 00:57:38,660 --> 00:57:41,230 Không khác C hoặc PHP cho rằng vấn đề. 1233 00:57:41,230 --> 00:57:43,890 Biểu thức boolean hoặc-ed cùng sẽ như thế này. 1234 00:57:43,890 --> 00:57:45,590 ANDed với nhau như thế này. 1235 00:57:45,590 --> 00:57:47,750 >> Thiết bị chuyển mạch sẽ như thế này. 1236 00:57:47,750 --> 00:57:49,440 Cho các vòng sẽ như thế này. 1237 00:57:49,440 --> 00:57:51,060 Trong khi vòng sẽ như thế này. 1238 00:57:51,060 --> 00:57:53,316 Làm trong khi vòng sẽ như thế này. 1239 00:57:53,316 --> 00:57:54,780 >> Này là mới. 1240 00:57:54,780 --> 00:57:58,753 Vì vậy, JavaScript không có một foreach xây dựng cho mỗi gia nhập, nhưng cấu trúc này 1241 00:57:58,753 --> 00:58:03,870 cho biến i trong mảng, và tôi trong này trường hợp trở thành một giá trị chỉ số. 1242 00:58:03,870 --> 00:58:06,880 Vì vậy, nó là một chút khác biệt so với foreach, mặc dù phiên bản mới của 1243 00:58:06,880 --> 00:58:10,280 JavaScript được sắp ra tất cả các thời gian, vì vậy ngay cả các tính năng ngôn ngữ 1244 00:58:10,280 --> 00:58:10,880 đang phát triển. 1245 00:58:10,880 --> 00:58:16,920 >> Và như một sang một bên, JavaScript những ngày này cũng có thể được sử dụng trên một máy chủ giống như 1246 00:58:16,920 --> 00:58:19,920 PHP sử dụng một khuôn khổ gọi là Node.js. 1247 00:58:19,920 --> 00:58:24,670 Một trong CS50 của TF, Kevin, đã dẫn đầu một hội thảo về Node.js đó là có sẵn tại 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Vì vậy, nếu bạn tò mò, biết rằng bạn có thể sử dụng ở phía máy chủ như 1250 00:58:28,830 --> 00:58:33,870 tốt, nhưng đó là một xu hướng khá gần đây, nhưng một mạnh mẽ tại đó. 1251 00:58:33,870 --> 00:58:35,270 >> Đây là một chút khác nhau. 1252 00:58:35,270 --> 00:58:37,910 Đây là một mảng trong JavaScript. 1253 00:58:37,910 --> 00:58:40,115 Và những gì cuộc đình bạn như khác nhau so với C hoặc PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Có một vài câu chuyện nhanh chóng chúng ta có thể nói đây. 1256 00:58:47,420 --> 00:58:49,367 Những gì còn thiếu so với PHP? 1257 00:58:49,367 --> 00:58:51,652 >> ĐỐI TƯỢNG: [nghe được]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID Malan: Có? 1259 00:58:52,110 --> 00:58:53,322 Xin lỗi, nói một lần nữa? 1260 00:58:53,322 --> 00:58:54,740 >> ĐỐI TƯỢNG: Không khai báo kiểu của biến. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID Malan: Chúng tôi không tuyên bố kiểu của biến. 1262 00:58:56,390 --> 00:58:59,630 Vì vậy, thực sự khá giống như PHP, chúng tôi không quy định cụ thể các loại của biến này. 1263 00:58:59,630 --> 00:59:02,670 Thay vào đó, chúng tôi tổng quát hơn nói var cho biến. 1264 00:59:02,670 --> 00:59:06,690 Chúng tôi không có phiền toái của PHP ký hiệu đô la, trong khi đó tẻ nhạt để 1265 00:59:06,690 --> 00:59:09,160 loại, không làm cho rõ ràng hơn một cái gì đó là một biến. 1266 00:59:09,160 --> 00:59:11,830 Trong khi ở đây, chúng tôi loại trở lại Cách tiếp cận C bằng cách chỉ gọi một 1267 00:59:11,830 --> 00:59:14,500 biến bằng tên chúng tôi muốn để cung cấp cho nó, giống như các con số. 1268 00:59:14,500 --> 00:59:17,170 Và cũng như PHP, chúng tôi có dấu ngoặc vuông cho 1269 00:59:17,170 --> 00:59:19,170 giá trị trong mảng đó. 1270 00:59:19,170 --> 00:59:22,490 >> Vì vậy, các biến trong JavaScript cũng có thể trông như thế này. 1271 00:59:22,490 --> 00:59:26,900 Nhận thấy đây là một chuỗi gọi là s, nhưng tương tự như chúng ta không có quy định 1272 00:59:26,900 --> 00:59:28,750 rằng đó là một chuỗi. 1273 00:59:28,750 --> 00:59:33,160 Ở đây mặc dù là một tính năng mà không làm tồn tại trong chính xác cùng một cách trong PHP, 1274 00:59:33,160 --> 00:59:34,460 nhưng một chút tương tự. 1275 00:59:34,460 --> 00:59:36,530 Đây là một đối tượng trong JavaScript. 1276 00:59:36,530 --> 00:59:42,110 Và các đối tượng là loại quân đội Thụy Sĩ Con dao của một cấu trúc dữ liệu trong đó bạn 1277 00:59:42,110 --> 00:59:43,900 có thể sử dụng chúng cho bất kỳ số lượng của sự vật. 1278 00:59:43,900 --> 00:59:46,860 >> Ở đây, ví dụ, chúng tôi tuyên bố một biến gọi là báo giá. 1279 00:59:46,860 --> 00:59:49,110 Các loại biến là một đối tượng. 1280 00:59:49,110 --> 00:59:53,550 Bạn có thể nghĩ về điều này như một cấu trúc C có khóa và giá trị. 1281 00:59:53,550 --> 00:59:55,250 Biểu tượng là một chìa khóa. 1282 00:59:55,250 --> 00:59:57,350 FB là một giá trị, rõ ràng một biểu tượng cổ phiếu. 1283 00:59:57,350 --> 00:59:57,930 Dấu phẩy. 1284 00:59:57,930 --> 01:00:02,180 Giá là chìa khóa khác, và giá trị của nó là rõ ràng là một dấu chấm, hoặc một 1285 01:00:02,180 --> 01:00:06,510 số nói chung trong JavaScript, của $ 49,26. 1286 01:00:06,510 --> 01:00:09,030 >> Vì vậy, PHP không có - 1287 01:00:09,030 --> 01:00:12,980 chúng tôi đã không nhìn thấy trong các đối tượng PHP khá như thế này, nhưng chúng tôi đã nhìn thấy một tương tự, 1288 01:00:12,980 --> 01:00:14,093 đó là những gì? 1289 01:00:14,093 --> 01:00:14,980 >> ĐỐI TƯỢNG: [nghe được]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID Malan: mảng kết hợp. 1291 01:00:16,110 --> 01:00:19,990 Vì vậy, trong khi PHP có mảng kết hợp có cú pháp là bao giờ một chút để 1292 01:00:19,990 --> 01:00:20,370 khác nhau - 1293 01:00:20,370 --> 01:00:21,780 chúng ta đã thấy các dấu ngoặc vuông. 1294 01:00:21,780 --> 01:00:23,860 Chúng ta đã thấy các mũi tên ký hiệu lạ. 1295 01:00:23,860 --> 01:00:27,330 JavaScript có các đối tượng, nhưng đây là chủ yếu là một sự khác biệt ngữ nghĩa và 1296 01:00:27,330 --> 01:00:29,260 từ đồng nghĩa khác nhau cho bây giờ. 1297 01:00:29,260 --> 01:00:35,060 Tuy nhiên, như một sang một bên, PHP cũng có các đối tượng trong một cách mà Java và khác 1298 01:00:35,060 --> 01:00:37,810 ngôn ngữ có các đối tượng trong lập trình hướng đối tượng. 1299 01:00:37,810 --> 01:00:40,440 Nhưng chúng tôi sẽ sử dụng các chỉ với nhiều loại dữ liệu cho bây giờ. 1300 01:00:40,440 --> 01:00:42,170 Đối tượng và mảng kết hợp. 1301 01:00:42,170 --> 01:00:44,140 >> Điều này có thể làm cho nó nhiều hơn một chút rõ ràng. 1302 01:00:44,140 --> 01:00:45,890 Đây là lý do tại sao một đối tượng là hữu ích. 1303 01:00:45,890 --> 01:00:48,760 Khi bạn muốn khai báo một sinh viên, như Zamyla, chúng ta có thể thực sự 1304 01:00:48,760 --> 01:00:52,630 đóng gói có thể nói bên trong đó đối tượng sử dụng dấu ngoặc nhọn giống như 1305 01:00:52,630 --> 01:00:55,060 trước khi một bó toàn bộ phím và các giá trị ở đây. 1306 01:00:55,060 --> 01:00:59,150 Chúng tôi có một ID, một ngôi nhà, và một tên cho Zamyla, theo sau là một dấu chấm phẩy như 1307 01:00:59,150 --> 01:01:00,690 thông thường ở cuối. 1308 01:01:00,690 --> 01:01:04,840 >> Xuống ở đây, điều này là hơi khác nhau, nhưng cũng rất mạnh mẽ 1309 01:01:04,840 --> 01:01:05,690 những ngày này. 1310 01:01:05,690 --> 01:01:08,780 Dưới đây là một mảng, và tôi biết rằng vì có một khung vuông lên 1311 01:01:08,780 --> 01:01:11,090 đầu và một khung vuông ở phía dưới. 1312 01:01:11,090 --> 01:01:16,050 Và điều này là một mảng của những dữ liệu gõ rõ ràng trong JavaScript? 1313 01:01:16,050 --> 01:01:21,260 Đây là một mảng của nó trông như ba đối tượng. 1314 01:01:21,260 --> 01:01:24,580 Và tôi biết nó là một đối tượng duy nhất vì các dấu ngoặc nhọn. 1315 01:01:24,580 --> 01:01:28,760 Và thông báo có mở xoăn cú đúp, một số công cụ, gần xoăn đôi, dấu phẩy, 1316 01:01:28,760 --> 01:01:31,180 sau đó một số chi tiết, dấu phẩy, và sau đó một số chi tiết. 1317 01:01:31,180 --> 01:01:33,800 Vì vậy, đó là ba đối số ngăn cách bởi hai dấu phẩy. 1318 01:01:33,800 --> 01:01:36,810 >> Vì vậy, đây là một mảng của ba đối tượng. 1319 01:01:36,810 --> 01:01:39,940 Và mỗi người trong số các đối tượng xuất hiện để được một sinh viên hay nhân viên của một số 1320 01:01:39,940 --> 01:01:42,370 sắp xếp, đều có một ID, nhà, và tên. 1321 01:01:42,370 --> 01:01:45,060 Nhưng tôi đã được gọi là một cái gì đó gọi là JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Object Notation. 1323 01:01:47,450 --> 01:01:52,060 Và điều này là một định dạng dữ liệu thực sự như vậy là rất phổ biến và trong 1324 01:01:52,060 --> 01:01:55,100 thịnh hành trong những ngày này nếu bạn viết một ứng dụng sử dụng Facebook 1325 01:01:55,100 --> 01:01:59,150 API, API Twitter, thực sự gần như bất kỳ API ra có những ngày, 1326 01:01:59,150 --> 01:02:02,820 bao gồm cả một số của riêng CS50, sự dữ liệu bạn nhận được trở lại không phải là trong 1327 01:02:02,820 --> 01:02:04,720 định dạng CSV trường học cũ. 1328 01:02:04,720 --> 01:02:06,780 >> Vì hồi đó CSV là siêu đơn giản. 1329 01:02:06,780 --> 01:02:10,230 Nó chỉ là cột phân cách bằng dấu phẩy. 1330 01:02:10,230 --> 01:02:13,190 JSON dữ liệu cung cấp cho bạn siêu dữ liệu hơn. 1331 01:02:13,190 --> 01:02:17,800 Nó liên kết một phím với mỗi giá trị để họ không phải chỉ là giả định rằng 1332 01:02:17,800 --> 01:02:22,460 cột thứ không là một giá trị, cột một là một, hai là cột khác. 1333 01:02:22,460 --> 01:02:26,790 Tất cả mọi thứ trong một đối tượng JSON đây là loại tự mô tả, bởi vì mỗi 1334 01:02:26,790 --> 01:02:30,940 một trong những tên trong tập tin này có nghĩa là tên ở phía trước của nó như là một 1335 01:02:30,940 --> 01:02:32,510 trích dẫn chuỗi. 1336 01:02:32,510 --> 01:02:34,950 >> Vì vậy, chúng ta hãy xem xét một vài ví dụ ở đây. 1337 01:02:34,950 --> 01:02:36,800 Hãy để tôi đi vào thiết bị. 1338 01:02:36,800 --> 01:02:41,000 Và để cho tôi đi vào vhost của chúng tôi thư mục thành công. 1339 01:02:41,000 --> 01:02:45,590 Và để cho tôi đi vào Thư mục JavaScript. 1340 01:02:45,590 --> 01:02:49,610 Và chúng ta hãy đi trước và mở ra dom-0.html, nơi mà chỉ có nghĩa là DOM 1341 01:02:49,610 --> 01:02:51,010 mô hình đối tượng tài liệu. 1342 01:02:51,010 --> 01:02:53,490 Đó là những thứ cây mà Tôi đề cập trước đó. 1343 01:02:53,490 --> 01:02:54,950 >> Và cho tôi đề nghị sau đây. 1344 01:02:54,950 --> 01:02:57,720 Dưới đây là một trang web có cơ thể là khá đơn giản. 1345 01:02:57,720 --> 01:03:00,170 Vì vậy, ở đây ở phía dưới, nhận thấy tôi có một hình thức. 1346 01:03:00,170 --> 01:03:01,500 Chúng tôi đã nhìn thấy những người trước. 1347 01:03:01,500 --> 01:03:07,600 Nó có hai đầu vào, trong đó có một ID của tên, một trong số đó có một loại 1348 01:03:07,600 --> 01:03:09,830 trình, và là người đầu tiên một loại là văn bản. 1349 01:03:09,830 --> 01:03:11,900 Vì vậy, đây thực sự âm thanh khá đơn giản. 1350 01:03:11,900 --> 01:03:13,090 >> Chúng ta hãy đi đây. 1351 01:03:13,090 --> 01:03:15,390 Chúng ta hãy quay trở lại trang này ở đây. 1352 01:03:15,390 --> 01:03:21,030 Chúng ta hãy đi vào localhost, và đi vào thư mục JavaScript của chúng tôi, và đi đến 1353 01:03:21,030 --> 01:03:24,640 dom-0, và ở đây chúng tôi có hình thức này. 1354 01:03:24,640 --> 01:03:26,550 Vì vậy, đó là rõ ràng tất cả các trang này không. 1355 01:03:26,550 --> 01:03:28,740 Nó có một trường tên với một nút Submit. 1356 01:03:28,740 --> 01:03:30,340 Nhưng tôi sẽ không sử dụng PHP đây. 1357 01:03:30,340 --> 01:03:34,310 Tôi sẽ làm tất cả mọi thứ phía khách hàng có thể nói trong JavaScript như sau. 1358 01:03:34,310 --> 01:03:39,100 >> Nhận thấy rằng tôi đã thực sự được đặt tên lĩnh vực đầu vào độc đáo 1359 01:03:39,100 --> 01:03:42,350 nhận dạng, trong đó sẽ thực sự tiết kiệm cho tôi một số thời gian trong một thời điểm. 1360 01:03:42,350 --> 01:03:45,480 Và thông báo tôi đã giới thiệu một thẻ khác trong phần đầu của trang web của tôi, 1361 01:03:45,480 --> 01:03:46,565  tag. 1362 01:03:46,565 --> 01:03:50,120 >> Vì vậy, trong ý nghĩa này mà JavaScript là một ngôn ngữ lập trình phía máy khách. 1363 01:03:50,120 --> 01:03:55,020 Trong trường hợp này, giống như CSS, tôi đã đặt nó vào thẳng bên trong của HTML của tôi. 1364 01:03:55,020 --> 01:03:58,810 Nhưng nhận thấy tôi đã tuyên bố một chức năng trông hơi giống như PHP 1365 01:03:58,810 --> 01:04:01,530 cú pháp, nhưng điều này thực sự JavaScript, bởi vì một lần nữa, đó là 1366 01:04:01,530 --> 01:04:03,920 khách hàng bên trong trình duyệt. 1367 01:04:03,920 --> 01:04:07,590 Và hãy đoán xem điều này sẽ làm, cho dù một số cú pháp 1368 01:04:07,590 --> 01:04:09,338 đây là mới. 1369 01:04:09,338 --> 01:04:11,760 >> ĐỐI TƯỢNG: Chào hỏi bất cứ ai. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID Malan: Nó sẽ nói lời chào với bất cứ ai truy cập trang này. 1371 01:04:14,020 --> 01:04:15,120 Vậy làm thế nào? 1372 01:04:15,120 --> 01:04:18,070 >> Vì vậy, thông báo, hóa ra trong JavaScript có một chức năng cảnh báo (). 1373 01:04:18,070 --> 01:04:22,840 Đây là một loại rất chức năng buồn thực sự chỉ có xu hướng làm phiền người sử dụng. 1374 01:04:22,840 --> 01:04:25,440 Nó không phải là một trong những bạn thực sự nên sử dụng thường, nhưng đó là một nhanh chóng và bẩn 1375 01:04:25,440 --> 01:04:27,710 cách loại in một cái gì đó để một người dùng đồ họa 1376 01:04:27,710 --> 01:04:29,180 giao diện, giống như một trình duyệt. 1377 01:04:29,180 --> 01:04:31,400 Chú ý ở đây là tôi đã có một chuỗi trong dấu nháy đơn. 1378 01:04:31,400 --> 01:04:36,010 Nó chỉ ra rằng không giống như C, JavaScript có thể thực sự có bạn sử dụng duy nhất 1379 01:04:36,010 --> 01:04:38,730 dấu ngoặc kép, và thẳng thắn mà nói nó chỉ là loại Công ước phong cách trong 1380 01:04:38,730 --> 01:04:41,180 Lập trình JavaScript sử dụng dấu nháy đơn. 1381 01:04:41,180 --> 01:04:43,750 PHP, họ thực sự có một chút ý nghĩa khác nhau. 1382 01:04:43,750 --> 01:04:45,810 Nhưng bây giờ, chỉ biết rằng đó là lý do duy nhất. 1383 01:04:45,810 --> 01:04:49,270 Quy ước trong JavaScript thường là sử dụng dấu ngoặc đơn, nhưng chúng ta có thể sử dụng 1384 01:04:49,270 --> 01:04:50,950 dấu ngoặc kép ở cả hai nơi là tốt. 1385 01:04:50,950 --> 01:04:52,610 >> Vì vậy, đây là thú vị. 1386 01:04:52,610 --> 01:04:56,430 Nhớ lại lần cuối cùng chúng tôi đã có hình ảnh trên màn hình đã vẽ một cây 1387 01:04:56,430 --> 01:04:59,720 nơi bạn có nút HTML, và nút đầu và nút cơ thể, 1388 01:04:59,720 --> 01:05:00,800 và sau đó một số văn bản. 1389 01:05:00,800 --> 01:05:04,700 Nhưng có một nút đặc biệt ở trên cùng mà tôi gọi là tài liệu. 1390 01:05:04,700 --> 01:05:08,260 Vâng, nó quay ra trong JavaScript, bất kỳ khi bạn viết một chương trình trong JavaScript 1391 01:05:08,260 --> 01:05:11,040 trong một trình duyệt, bạn có thể truy cập một biến toàn cầu đặc biệt. 1392 01:05:11,040 --> 01:05:14,130 Tinh thần tương tự superglobals PHP, này được gọi là trong 1393 01:05:14,130 --> 01:05:16,050 tất cả các tài liệu chữ thường. 1394 01:05:16,050 --> 01:05:21,480 >> Nó giống như một cấu trúc, nhưng cấu trúc này cũng có chức năng bên trong của nó. 1395 01:05:21,480 --> 01:05:23,790 Vì vậy, một cấu trúc C chỉ có dữ liệu thông thường. 1396 01:05:23,790 --> 01:05:29,060 Nhưng một đối tượng JavaScript như này về mặt kỹ thuật cũng có nhiều chức năng, 1397 01:05:29,060 --> 01:05:31,830 hay còn gọi là phương pháp, bên trong của nó. 1398 01:05:31,830 --> 01:05:35,750 Và bạn có thể gọi một chức năng bên trong của đối tượng này theo đúng nghĩa đen của nó làm 1399 01:05:35,750 --> 01:05:39,610 tên, dấu chấm, và sau đó là tên của chức năng, hoặc một lần nữa phương pháp. 1400 01:05:39,610 --> 01:05:41,160 Nó chỉ là một từ đồng nghĩa, thực sự. 1401 01:05:41,160 --> 01:05:42,450 >> Và những gì hiện chức năng này làm gì? 1402 01:05:42,450 --> 01:05:43,840 Bạn có thể loại đoán từ tên của nó. 1403 01:05:43,840 --> 01:05:45,590 Có được yếu tố của ID. 1404 01:05:45,590 --> 01:05:50,040 Vì vậy, đây sẽ tìm kiếm các trang web, Tìm kiếm cây, tìm kiếm 1405 01:05:50,040 --> 01:05:55,210 bất cứ nút, phần tử AKA, có một ID duy nhất của quote tên unquote. 1406 01:05:55,210 --> 01:05:56,560 Và sau đó những gì tôi sẽ làm gì? 1407 01:05:56,560 --> 01:06:00,350 Tôi sẽ nhận được giá trị bên trong mà nút trong cây, và tôi sẽ 1408 01:06:00,350 --> 01:06:02,580 bằng cách nào đó nói lời chào với tên đó. 1409 01:06:02,580 --> 01:06:05,360 >> Vì vậy, có nhiều phán đoán, mặc dù chúng tôi đã không nhìn thấy điều này chưa, những gì cộng 1410 01:06:05,360 --> 01:06:07,396 biểu tượng có nghĩa là ở đây và ở đây có thể? 1411 01:06:07,396 --> 01:06:08,230 >> ĐỐI TƯỢNG: nối. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID Malan: nối. 1413 01:06:09,220 --> 01:06:11,290 Phải, và đây là những chỉ loại quyết định thiết kế 1414 01:06:11,290 --> 01:06:12,280 người thực hiện năm trước. 1415 01:06:12,280 --> 01:06:15,190 Trong PHP, bạn nối điều với dấu chấm. 1416 01:06:15,190 --> 01:06:18,800 Trong C, bạn nhảy qua một số hoops và gọi chức năng như strcopy () hoặc 1417 01:06:18,800 --> 01:06:20,600 strcat () hoặc các chức năng khác. 1418 01:06:20,600 --> 01:06:22,060 Nhưng trong JavaScript, bạn sử dụng dấu cộng. 1419 01:06:22,060 --> 01:06:24,770 Vì vậy, đây chỉ là ghép ba dây - 1420 01:06:24,770 --> 01:06:27,850 xin chào, một tên, và sau đó một dấu chấm than. 1421 01:06:27,850 --> 01:06:30,390 >> Vì vậy, khi nào và tại sao chức năng này mặc dù được gọi là? 1422 01:06:30,390 --> 01:06:33,150 Vâng, có một đoán từ HTML ở phía dưới. 1423 01:06:33,150 --> 01:06:35,810 Tại sao chào đón () được gọi, hoặc khi nào? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Rõ ràng, là tốt nhất tôi có thể nói, trên trình, khi gửi đơn đăng ký, 1426 01:06:44,030 --> 01:06:47,200 Tôi sẽ làm bất cứ điều gì bên trong các dấu ngoặc kép. 1427 01:06:47,200 --> 01:06:50,900 Và đặc biệt, tôi sẽ gọi chào () và sau đó trả về false. 1428 01:06:50,900 --> 01:06:53,090 >> Vâng, chúng ta hãy xem những gì mạng hiệu quả đây là lần đầu tiên. 1429 01:06:53,090 --> 01:06:58,290 Vì vậy, hãy để tôi đi trước và gõ trong, nói, Loren, Submit. 1430 01:06:58,290 --> 01:06:59,440 Xin chào Loren. 1431 01:06:59,440 --> 01:07:02,990 Chúng ta hãy xem nếu có thể đây chỉ là thực hiện một may mắn. 1432 01:07:02,990 --> 01:07:03,200 Không. 1433 01:07:03,200 --> 01:07:05,990 Vì vậy, nó gõ ra bất cứ điều gì tên tôi thực sự đặt ở đó. 1434 01:07:05,990 --> 01:07:07,970 >> Nhưng hãy chú ý những gì không thay đổi. 1435 01:07:07,970 --> 01:07:10,360 URL là vẫn dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 Không có register.php. 1437 01:07:11,820 --> 01:07:13,110 Không có tập tin thứ hai. 1438 01:07:13,110 --> 01:07:14,930 Không có thuộc tính hành động. 1439 01:07:14,930 --> 01:07:19,720 Vì vậy, trở lại đây là những gì sai có lẽ đang làm gì? 1440 01:07:19,720 --> 01:07:23,660 Tại sao tôi gọi chào hỏi () và sau đó trở về sai có thể? 1441 01:07:23,660 --> 01:07:26,420 Những gì thường xảy ra khi bạn nhấp chuột Trình trên một hình thức mà ngay cả chúng ta có 1442 01:07:26,420 --> 01:07:27,854 nhìn thấy trong tuần qua? 1443 01:07:27,854 --> 01:07:29,900 >> ĐỐI TƯỢNG: [nghe được]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID Malan: Nó đi đâu đó, phải không? 1445 01:07:30,860 --> 01:07:32,720 Nó đi vào một số URL đích. 1446 01:07:32,720 --> 01:07:34,120 Nhưng tôi không muốn điều đó xảy ra ở đây. 1447 01:07:34,120 --> 01:07:37,620 Tôi muốn trang web của tôi để được hoàn toàn năng động như Gmail, nơi mà một khi bạn đã 1448 01:07:37,620 --> 01:07:38,650 ở đó, bạn ở lại đó. 1449 01:07:38,650 --> 01:07:42,900 URL không thay đổi trong một cách mà cho toàn bộ trang được tải lại. 1450 01:07:42,900 --> 01:07:46,680 Thay vào đó, tôi chỉ muốn thay đổi một cái gì đó như in ra một cái gì đó 1451 01:07:46,680 --> 01:07:48,320 đây trên màn hình. 1452 01:07:48,320 --> 01:07:49,630 >> Cũng cho tôi làm sạch này lên một chút. 1453 01:07:49,630 --> 01:07:55,370 Hãy để tôi mở ra không dom-0, nhưng hãy để tôi mở ra dom-2. 1454 01:07:55,370 --> 01:07:57,350 Chỉ cần để bạn đã nhìn thấy một số cú pháp ở đây. 1455 01:07:57,350 --> 01:08:02,080 >> Nó chỉ ra rằng những gì chúng ta chỉ đã được sử dụng JavaScript liệu. 1456 01:08:02,080 --> 01:08:04,420 Vì vậy, đây thực sự là ngôn ngữ JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Một số bạn có thể biết một thư viện được gọi jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Vì vậy, jQuery là không giống nhau điều như JavaScript. 1459 01:08:09,980 --> 01:08:14,110 Nó chỉ là một thư viện mà một thực sự thông minh chàng trai đã viết và phổ biến rộng rãi như vậy 1460 01:08:14,110 --> 01:08:18,100 mà hầu như tất cả mọi người trong thế giới hiện nay sử dụng jQuery khi sử dụng JavaScript. 1461 01:08:18,100 --> 01:08:20,890 Và ở cái nhìn đầu tiên, trung thực, nó nhìn nhiều hơn một chút khó hiểu. 1462 01:08:20,890 --> 01:08:24,990 Nhưng bạn sẽ tìm thấy, đặc biệt là nếu bạn đi có cho dự án cuối cùng của bạn với các trang web 1463 01:08:24,990 --> 01:08:29,029 phát triển, bạn sẽ thấy rằng đây dọn dẹp những thứ lên và giúp bạn tiết kiệm khá 1464 01:08:29,029 --> 01:08:30,229 vài dòng mã. 1465 01:08:30,229 --> 01:08:33,189 >> Vì vậy, chúng ta hãy chỉ nhìn lướt qua như thế nào hình thức này là làm việc. 1466 01:08:33,189 --> 01:08:35,664 Thông báo những gì đã làm tôi loại bỏ rõ ràng từ HTML của tôi? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Không có trên trình xử lý vậy để nói chuyện. 1469 01:08:40,630 --> 01:08:41,470 Không có thuộc tính. 1470 01:08:41,470 --> 01:08:43,359 Bởi vì bạn biết, những gì Tôi không thực sự như thế nào? 1471 01:08:43,359 --> 01:08:45,640 Tôi cảm thấy như chúng tôi đã giảm thành thói quen cũ có. 1472 01:08:45,640 --> 01:08:49,340 Cũng giống như nó đã được bắt đầu cảm thấy cẩu thả để hoà nhập với cả CSS 1473 01:08:49,340 --> 01:08:52,149 HTML, bởi vì bạn đang loại ném ngôn ngữ khác nhau trên tất cả các 1474 01:08:52,149 --> 01:08:56,180 nơi, tương tự như đã làm điều này bắt đầu cảm thấy như một con đường xấu đi xuống nơi 1475 01:08:56,180 --> 01:09:01,069 Tôi đang đặt mã JavaScript bên trong của tôi HTML chứ không phải thanh toán nó ra. 1476 01:09:01,069 --> 01:09:02,279 >> Vì vậy, đó là bài học ở đây. 1477 01:09:02,279 --> 01:09:05,080 Trong dom-2.html, tôi thanh toán nó ra. 1478 01:09:05,080 --> 01:09:07,399 Và tôi đang làm những điều hơi khác nhau. 1479 01:09:07,399 --> 01:09:09,630 Còn bây giờ, tôi sẽ vẫy tay của tôi vào những gì điều này thực sự 1480 01:09:09,630 --> 01:09:10,590 bên dưới mui xe. 1481 01:09:10,590 --> 01:09:14,210 Nhưng chỉ cho bây giờ cho rằng đó đầu tiên dòng mã trong thư viện này 1482 01:09:14,210 --> 01:09:18,170 gọi là jQuery chỉ có nghĩa là khi tài liệu đã sẵn sàng, bạn làm như sau. 1483 01:09:18,170 --> 01:09:20,080 >> Bởi vì các trang web có thể mất một số thời gian để tải. 1484 01:09:20,080 --> 01:09:23,029 Bạn có thể có trên internet chậm kết nối, và nó có thể được quay 1485 01:09:23,029 --> 01:09:25,290 và quay, và cuối cùng nó đã được nạp. 1486 01:09:25,290 --> 01:09:29,060 Rằng dòng mã chỉ nói đợi cho đến khi toàn bộ trang đã sẵn sàng, các tài liệu 1487 01:09:29,060 --> 01:09:31,189 đã sẵn sàng, trước khi thực hiện mã này. 1488 01:09:31,189 --> 01:09:34,390 >> Và bây giờ thông báo, điều này có lẽ là người đầu tiên hữu ích nhất 1489 01:09:34,390 --> 01:09:36,189 lấy đi từ jQuery. 1490 01:09:36,189 --> 01:09:42,140 Dòng này ở đây là rất tương tự như trong tinh thần để dòng này còn nhiều ở đây. 1491 01:09:42,140 --> 01:09:46,920 Trong khi đó, trong mã JavaScript liệu, có tồn tại một đối tượng toàn cầu tài liệu 1492 01:09:46,920 --> 01:09:50,460 có một chức năng được gọi là getElementById (), những người đã viết 1493 01:09:50,460 --> 01:09:55,720 jQuery đơn giản rằng chỉ cần nói ký hiệu đô la, và sau đó bên trong 1494 01:09:55,720 --> 01:10:00,250 ngoặc đơn đặt hai dấu ngoặc kép, và sau đó đặt một biểu tượng băm tiếp theo 1495 01:10:00,250 --> 01:10:02,250 ID duy nhất bạn muốn lấy. 1496 01:10:02,250 --> 01:10:06,170 Vì vậy, điều này tương đương với document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Trong khi đó,. Submit chỉ có nghĩa là trên nộp bất cứ hình thức bạn 1498 01:10:11,090 --> 01:10:14,240 đề cập đến bên trái, đi trước và thực hiện điều này. 1499 01:10:14,240 --> 01:10:16,600 Nhưng điều này bây giờ là sự tò mò quá. 1500 01:10:16,600 --> 01:10:19,560 Có gì lạ về những gì Tôi đã nhấn mạnh đây? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Không chỉ là loại cú pháp mới, cũng có một cái gì đó mất tích. 1503 01:10:28,594 --> 01:10:29,558 >> ĐỐI TƯỢNG: Nó chỉ được gọi là chức năng? 1504 01:10:29,558 --> 01:10:31,970 Nó không được gọi là cảnh báo? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID Malan: Vâng. 1506 01:10:32,440 --> 01:10:35,450 Tốt, vì vậy cảnh báo () là xuống ở đây, để được công bằng. 1507 01:10:35,450 --> 01:10:39,520 Nhưng không có đề cập đến một tên, như bạn đã biết, foo hoặc 1508 01:10:39,520 --> 01:10:40,980 một cái gì đó ở đây. 1509 01:10:40,980 --> 01:10:43,830 Và quả thực, đây là một trong những tính năng JavaScript đó là khá 1510 01:10:43,830 --> 01:10:45,370 mạnh mẽ, nhưng cũng khá mới. 1511 01:10:45,370 --> 01:10:47,460 Và PHP thực sự có điều này là tốt. 1512 01:10:47,460 --> 01:10:49,500 >> Hãy để tôi đi trước và làm một cái gì đó thực sự nhanh chóng. 1513 01:10:49,500 --> 01:10:52,030 Hãy để tôi đi trước và đặt này tại đây. 1514 01:10:52,030 --> 01:10:52,600 Hãy để tôi làm điều này. 1515 01:10:52,600 --> 01:10:53,690 Chức năng. 1516 01:10:53,690 --> 01:10:56,455 Chúng ta hãy gọi xử lý này (). 1517 01:10:56,455 --> 01:10:58,290 Một chức năng xử lý như vậy để nói chuyện. 1518 01:10:58,290 --> 01:11:00,110 Một cái gì đó để xử lý một số hoạt động. 1519 01:11:00,110 --> 01:11:02,700 Hãy để tôi làm sạch thụt đầu dòng của tôi. 1520 01:11:02,700 --> 01:11:04,380 Và đặt này ở đây. 1521 01:11:04,380 --> 01:11:06,090 Và đặt ở đây. 1522 01:11:06,090 --> 01:11:06,470 Vâng. 1523 01:11:06,470 --> 01:11:07,060 OK. 1524 01:11:07,060 --> 01:11:10,300 >> Vì vậy, bây giờ tôi có một chức năng được gọi là xử lý () mà tôi không thực sự biết 1525 01:11:10,300 --> 01:11:10,890 những gì nó được nêu ra. 1526 01:11:10,890 --> 01:11:12,710 Nó chỉ còn có công cụ đó. 1527 01:11:12,710 --> 01:11:13,900 Rất tiếc. 1528 01:11:13,900 --> 01:11:15,820 Mất quá nhiều. 1529 01:11:15,820 --> 01:11:18,490 Chúng ta hãy làm điều này. 1530 01:11:18,490 --> 01:11:18,990 Được rồi. 1531 01:11:18,990 --> 01:11:20,240 Xin lôi. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Được rồi. 1534 01:11:23,690 --> 01:11:24,720 Hãy để tôi làm điều này. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 Điều đó có vẻ tốt đẹp và thẳng về phía trước ngay bây giờ. 1537 01:11:27,040 --> 01:11:29,090 Hãy để tôi làm điều này. 1538 01:11:29,090 --> 01:11:29,860 Làm điều này. 1539 01:11:29,860 --> 01:11:30,950 Và OK. 1540 01:11:30,950 --> 01:11:33,080 Vì vậy, bây giờ, chúng ta hãy đặt này trên đây. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Không lập trình hơn khi đang bay. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Vì vậy, bây giờ, chúng ta hãy quay trở lại nơi câu chuyện bắt đầu. 1545 01:11:40,000 --> 01:11:43,530 Trước đây, tôi cho rằng dòng này đây có nghĩa là khi tài liệu đã sẵn sàng, đi 1546 01:11:43,530 --> 01:11:44,380 trước và làm điều này. 1547 01:11:44,380 --> 01:11:45,660 Tôi phải làm gì muốn làm gì? 1548 01:11:45,660 --> 01:11:49,070 Cũng đặc biệt, tôi muốn đi phía trước và làm như sau. 1549 01:11:49,070 --> 01:11:53,700 Thực thi dòng mã này, và sau đó những gì tôi muốn bạn làm là gọi này 1550 01:11:53,700 --> 01:11:56,370 hoạt động khi biểu mẫu được gửi. 1551 01:11:56,370 --> 01:11:57,730 >> Bây giờ đây là điều thú vị. 1552 01:11:57,730 --> 01:11:59,170 Đây không phải là chính nó một chức năng. 1553 01:11:59,170 --> 01:12:02,540 Nhận thấy Tôi không đặt dấu ngoặc đơn đây theo cách thông thường. 1554 01:12:02,540 --> 01:12:06,800 Tôi nghĩa đen đi qua một chức năng được gọi là xử lý () để hoạt động khác 1555 01:12:06,800 --> 01:12:10,800 gọi là trình () như một đối số như mặc dù nó giống như một biến. 1556 01:12:10,800 --> 01:12:14,290 Và điều này là một trong những tính năng của JavaScript là chức năng tự 1557 01:12:14,290 --> 01:12:15,710 thực sự chỉ là các đối tượng. 1558 01:12:15,710 --> 01:12:18,350 Trong thực tế, họ đang thực sự chỉ biến của một số loại. 1559 01:12:18,350 --> 01:12:21,340 Và nếu tên của chức năng này là xử lý (), không có lý do tôi không thể 1560 01:12:21,340 --> 01:12:23,390 vượt qua nó như một đối số ở đây. 1561 01:12:23,390 --> 01:12:27,530 Và điều này có nghĩa là khi các hình thức với ID của demo 1562 01:12:27,530 --> 01:12:29,320 gửi, gọi chức năng này. 1563 01:12:29,320 --> 01:12:32,770 >> Nhưng bây giờ nếu tôi lùi lại tất cả điều này, tại sao lúc đó tôi mới có thể làm 1564 01:12:32,770 --> 01:12:34,850 đây là một thời điểm trước đây? 1565 01:12:34,850 --> 01:12:36,840 Vâng, đây là một chức năng vô danh. 1566 01:12:36,840 --> 01:12:41,080 Bởi tôi nhận ra lý do tại sao tôi làm phiền để lãng phí thời gian khai báo một 1567 01:12:41,080 --> 01:12:45,540 chức năng được gọi là xử lý () chỉ để gọi nó trong một và chỉ một nơi? 1568 01:12:45,540 --> 01:12:48,640 Nếu tôi không cần tên, và tôi làm không cần phải gọi nó là nhiều hơn một nơi, 1569 01:12:48,640 --> 01:12:51,200 chúng ta hãy thực hiện chức năng bên phải, nơi tôi cần nó. 1570 01:12:51,200 --> 01:12:55,190 Và như vậy JavaScript và PHP hỗ trợ những gì được gọi là chức năng vô danh mà 1571 01:12:55,190 --> 01:12:57,900 cho phép tôi làm chính xác điều đó đây. 1572 01:12:57,900 --> 01:12:59,570 >> Nhưng chúng tôi chỉ trầy xước bề mặt. 1573 01:12:59,570 --> 01:13:02,430 Hãy trêu chọc chỉ với một vài ví dụ cuối cùng ở đây. 1574 01:13:02,430 --> 01:13:04,600 >> Nếu tôi đi vào quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Chú ý rằng điều này thực sự là một PHP chức năng, một chương trình PHP, mà tôi đã viết 1577 01:13:11,870 --> 01:13:15,270 mong đợi một tham số HTTP được gọi là biểu tượng, và tôi có thể vượt qua trong 1578 01:13:15,270 --> 01:13:16,730 một giá trị như FB. 1579 01:13:16,730 --> 01:13:20,010 Và nếu chúng ta thực sự nhìn vào mã nguồn mã, đây là truy vấn một trang web miễn phí 1580 01:13:20,010 --> 01:13:23,680 gọi là Yahoo Finance, giống như p-bộ bảy, và nó trở về với tôi 1581 01:13:23,680 --> 01:13:26,580 một cái gì đó trong dường như định dạng được gọi là JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Object Notation. 1583 01:13:28,010 --> 01:13:28,810 Nó chỉ là một đối tượng. 1584 01:13:28,810 --> 01:13:32,500 Chú ý các dấu ngoặc nhọn, dấu ngoặc kép, đại tràng, và các dấu phẩy. 1585 01:13:32,500 --> 01:13:34,720 >> Bây giờ trong khi đó, điều này là khá mát mẻ. 1586 01:13:34,720 --> 01:13:38,520 Bởi vì tôi có thể có thể sử dụng một chương trình ngôn ngữ để tạo URL 1587 01:13:38,520 --> 01:13:40,370 trông giống như này tự động, phải không? 1588 01:13:40,370 --> 01:13:43,340 Tôi có thể thay đổi điều này để Google và lấy lại Google 1589 01:13:43,340 --> 01:13:47,930 giá cổ phiếu của $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Vì vậy, chúng ta hãy xem nếu chúng ta không có thể sử dụng ngay bây giờ. 1591 01:13:49,640 --> 01:13:56,590 >> Cho tôi đi đến ajax-0 ở đây, mà trông giống như sau. 1592 01:13:56,590 --> 01:13:59,750 Nó chỉ là một trang web có một hình thức với một nút bấm. 1593 01:13:59,750 --> 01:14:05,860 Hãy để tôi ở đây đi trước và gõ vào YHOO cho biểu tượng cổ phiếu của Yahoo, nhấn Get 1594 01:14:05,860 --> 01:14:10,530 Trích dẫn, và bây giờ thấy tôi đã nhận được một cảnh báo với 32.86. 1595 01:14:10,530 --> 01:14:14,050 >> Hãy để tôi thực sự đi đến một phiên bản fancier của trang này, phiên bản hai, và 1596 01:14:14,050 --> 01:14:17,530 loại trong chúng ta hãy nói rằng Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Trích dẫn được. 1598 01:14:18,410 --> 01:14:19,850 Và bây giờ nhận thấy, không có cảnh báo. 1599 01:14:19,850 --> 01:14:22,770 Nhận thấy nơi nó nói giá được xác định? 1600 01:14:22,770 --> 01:14:27,060 Có đơn giản nhất của ví dụ gợi ý vào những gì Gchat, và Facebook 1601 01:14:27,060 --> 01:14:30,070 Trò chuyện, và Gmail, và như vậy khác các trang web đang làm bằng cách thực sự 1602 01:14:30,070 --> 01:14:31,290 thay đổi trang web. 1603 01:14:31,290 --> 01:14:31,800 >> Thông báo này. 1604 01:14:31,800 --> 01:14:33,120 Hãy để tôi tải lại trang. 1605 01:14:33,120 --> 01:14:35,080 Hãy để tôi mở ra thanh tra của Chrome. 1606 01:14:35,080 --> 01:14:36,890 Hãy để tôi đi đến các yếu tố tab xuống đây. 1607 01:14:36,890 --> 01:14:42,310 Bây giờ thông báo nếu tôi phóng to xuống đây và mở này lên, nhận thấy rằng đây là của tôi 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - mô hình đối tượng tài liệu của tôi. 1609 01:14:44,500 --> 01:14:45,920 Đây là HTML của tôi. 1610 01:14:45,920 --> 01:14:48,750 Nhưng bây giờ nhận thấy, mặc dù nó sẽ là một chút khó khăn để nhìn thấy nó trong cả hai 1611 01:14:48,750 --> 01:14:52,080 nơi cùng một lúc, nếu tôi gõ vào FB lên đây, xem phía dưới 1612 01:14:52,080 --> 01:14:54,110 của màn hình duy nhất. 1613 01:14:54,110 --> 01:14:57,720 >> Nó thực sự thay đổi HTML của tôi đang bay. 1614 01:14:57,720 --> 01:15:01,670 Và nó làm điều này khá đơn giản bằng cách làm một cái gì đó như thế này. 1615 01:15:01,670 --> 01:15:06,800 Nếu tôi mở ra ajax-2, thông báo thực hiện một cái gì đó như là sexy như 1616 01:15:06,800 --> 01:15:09,560 rằng, mặc dù nó đẹp, xấu xí, nhưng như tinh vi như 1617 01:15:09,560 --> 01:15:11,910 chức năng, nó có một số HTML ở phía dưới. 1618 01:15:11,910 --> 01:15:13,810 Nhưng nhận thấy tôi sử dụng để đánh dấu. 1619 01:15:13,810 --> 01:15:16,640 Chúng tôi đã không sử dụng này trước đây, nhưng đây là như một, nhưng nó không có hiệu lực 1620 01:15:16,640 --> 01:15:17,840 tất cả mọi thứ vào một dòng mới. 1621 01:15:17,840 --> 01:15:20,830 Nó chỉ làm cho một khu vực hình chữ nhật trên cùng một dòng cơ bản. 1622 01:15:20,830 --> 01:15:22,870 >> Nhận thấy rằng tôi đã cho nó một ID của giá. 1623 01:15:22,870 --> 01:15:26,800 Và nó quay ra bằng cách sử dụng cùng Thư viện JavaScript, tôi có một chức năng 1624 01:15:26,800 --> 01:15:30,440 gọi là quote () đó được gọi là bất cứ khi nào biểu mẫu được gửi. 1625 01:15:30,440 --> 01:15:31,800 Và những gì tôi đang làm điều này là. 1626 01:15:31,800 --> 01:15:35,730 Tôi khai báo một biến trong JavaScript được gọi là địa chỉ, tiết kiệm giá trị 1627 01:15:35,730 --> 01:15:38,650 quote.php? biểu tượng =. 1628 01:15:38,650 --> 01:15:44,220 Nói cách khác, bản thân tôi đang bắt đầu để chuẩn bị một yêu cầu HTTP, và sau đó 1629 01:15:44,220 --> 01:15:49,250 Tôi ghép vào đó với một cộng bất cứ điều gì các phần tử với ID 1630 01:15:49,250 --> 01:15:54,190 biểu tượng được, mà thông báo là lĩnh vực văn bản phải xuống đây. 1631 01:15:54,190 --> 01:15:56,630 Vì vậy, cũng giống như chúng tôi đã có các hình thức trong quá khứ. 1632 01:15:56,630 --> 01:16:01,450 >> Và sau đó nó quay ra trong jQuery, nếu bạn val gọi. (), mà các cuộc gọi của một val 1633 01:16:01,450 --> 01:16:05,900 chức năng, một chức năng giá trị, mà được bất cứ điều gì người dùng đã đánh máy in 1634 01:16:05,900 --> 01:16:08,920 Và sau đó tất cả các lưu lượng mạng điều đó xảy ra là điều này. 1635 01:16:08,920 --> 01:16:11,230 GetJSON. $. 1636 01:16:11,230 --> 01:16:13,720 >> Và như một sang một bên, ký hiệu đô la là chỉ là một ký hiệu viết tắt. 1637 01:16:13,720 --> 01:16:16,860 Nó thực sự jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Làm cho tôi để JSON từ URL này, và khi yêu cầu trở lại, gọi đây 1639 01:16:21,520 --> 01:16:26,550 chức năng và vượt qua trong như là đối số bất cứ điều gì trở về từ máy chủ. 1640 01:16:26,550 --> 01:16:31,205 >> Vì vậy, nói cách khác, nếu tôi quay trở lại trình duyệt, và tôi trở lại quote.php, 1641 01:16:31,205 --> 01:16:35,590 những gì trình duyệt của tôi đang làm là nhận được đoạn dữ liệu này. 1642 01:16:35,590 --> 01:16:38,930 Và khi tôi đi đến trang web này ở đây, thông báo nếu chúng ta thay vì đi vào mạng 1643 01:16:38,930 --> 01:16:43,820 tab và xóa nó, và sau đó gõ vào một cái gì đó như GOOG cho Google và Nhận 1644 01:16:43,820 --> 01:16:46,340 Trích dẫn, thông báo trang không thay đổi. 1645 01:16:46,340 --> 01:16:50,990 Nhưng một yêu cầu HTTP đã được thực hiện, và những gì trở lại đây nếu chúng ta nhìn vào 1646 01:16:50,990 --> 01:16:56,130 phản ứng là một bó toàn bộ các JSON mà chúng ta truy cập cuối cùng với 1647 01:16:56,130 --> 01:16:58,070 dòng đơn giản này ở đây. 1648 01:16:58,070 --> 01:17:00,150 >> Dữ liệu là những gì đã nhận được từ máy chủ. 1649 01:17:00,150 --> 01:17:02,120 Giá là tên của chính tôi quan tâm. 1650 01:17:02,120 --> 01:17:05,230 Vì vậy, data.price mang lại cho tôi đó. 1651 01:17:05,230 --> 01:17:07,540 >> Bây giờ trong khi đó, và điều này là ví dụ mới nhất. 1652 01:17:07,540 --> 01:17:09,280 Bạn có thể làm nhiều hơn với nhưng trang. 1653 01:17:09,280 --> 01:17:12,440 Một thực sự, cũng hai. 1654 01:17:12,440 --> 01:17:14,780 Chúng ta có thể mang lại thẻ, nếu bạn nhớ những điều này. 1655 01:17:14,780 --> 01:17:15,850 Đó là JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Chúng ta có thể làm điều đó. 1657 01:17:17,110 --> 01:17:17,690 Rất thú vị. 1658 01:17:17,690 --> 01:17:18,800 Chúng tôi sẽ rời khỏi đó như là một cliffhanger. 1659 01:17:18,800 --> 01:17:21,590 >> Nhưng sôi nổi hơn, bạn có thể làm những việc như thế này. 1660 01:17:21,590 --> 01:17:25,940 Nếu tôi đi đến định vị-1, nó quay ra Chrome biết rằng chúng ta đang ở 1661 01:17:25,940 --> 01:17:30,672 kinh độ vĩ độ 42.37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Vì vậy, thậm chí có có hơn theo ý của bạn. 1663 01:17:32,940 --> 01:17:34,290 Nhưng thêm vào đó trong tuần tới. 1664 01:17:34,290 --> 01:17:35,540 Hẹn gặp lại thứ hai. 1665 01:17:35,540 --> 01:17:37,558