1 00:00:00,000 --> 00:00:01,940 >> [MUSIC CHƠI] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID Malan: Đây là CS 50, và đây là sự bắt đầu của tuần chín. 4 00:00:14,620 --> 00:00:18,240 Và những gì chúng tôi nghĩ rằng chúng tôi làm hôm nay không phải là chỉ đóng chương về tuần trước 5 00:00:18,240 --> 00:00:22,670 các tài liệu mà chúng tôi tập trung trên máy chủ lập trình web với PHP và bên SQL, 6 00:00:22,670 --> 00:00:23,549 một số công cụ cơ sở dữ liệu. 7 00:00:23,549 --> 00:00:25,590 Chúng tôi sẽ nói về một chút an ninh hiện nay và sau đó 8 00:00:25,590 --> 00:00:29,590 chuyển đổi sang một lập trình phía khách hàng ngôn ngữ được gọi là JavaScript. 9 00:00:29,590 --> 00:00:31,330 Nhưng trước tiên, một số mua lại. 10 00:00:31,330 --> 00:00:35,030 >> Bạn có thể nhớ lại rằng vào Thứ tư, tôi đặt ra 11 00:00:35,030 --> 00:00:37,550 để viết một trang web mất trong đầu vào của người dùng 12 00:00:37,550 --> 00:00:41,120 bởi một mẫu mã HTML mà sau đó được lưu trữ rằng tên người sử dụng, điện thoại 13 00:00:41,120 --> 00:00:43,124 số, và điện thoại di động tàu sân bay trong cơ sở dữ liệu. 14 00:00:43,124 --> 00:00:45,540 Và sau đó tôi đã có một lệnh nhỏ dòng kịch bản được viết bằng PHP 15 00:00:45,540 --> 00:00:47,956 lẽ ra phải lặp trên các hàng trong cơ sở dữ liệu 16 00:00:47,956 --> 00:00:49,400 và gửi tin nhắn văn bản. 17 00:00:49,400 --> 00:00:53,870 Mặc dù nhiều, nhiều nỗ lực, chúng tôi không được làm việc đó bằng cách kết thúc. 18 00:00:53,870 --> 00:00:57,820 >> Vì vậy, tôi đã dành cả tuần làm việc này trên đoạn mã đó để có được chúng tôi qua các điểm 19 00:00:57,820 --> 00:01:01,220 nơi chúng tôi rời đi, theo đó tất cả Tôi có vào cuối thứ tư 20 00:01:01,220 --> 00:01:05,500 là tin nhắn văn bản này từ Margo như tôi đấu tranh, 21 00:01:05,500 --> 00:01:09,940 theo sau là một tin nhắn văn bản từ một bạn cùng lớp, bạn đã có David này. 22 00:01:09,940 --> 00:01:14,030 Tiếp theo là thế này, tuyệt vời đáng khích lệ. 23 00:01:14,030 --> 00:01:15,840 Tiếp tục đi, rất phấn khởi. 24 00:01:15,840 --> 00:01:20,960 Tôi gần như đã nhận nó cho đến khi then-- và đó là lưu ý chúng tôi kết thúc vào hôm thứ Tư. 25 00:01:20,960 --> 00:01:25,850 Và sau đó thực sự có lẽ yêu thích của tôi, một lúc sau, điều này bước vào. 26 00:01:25,850 --> 00:01:27,000 Chết tiệt Sống Stream. 27 00:01:27,000 --> 00:01:31,080 >> Vì vậy, ngày hôm nay, chúng tôi sửa lỗi này với một cách nhanh chóng nhìn vào những gì tôi đã làm được kể từ. 28 00:01:31,080 --> 00:01:35,440 Vì vậy, tất cả các mã này có sẵn trực tuyến từ tuần trước, tuần thứ tám, 29 00:01:35,440 --> 00:01:36,300 mã nguồn. 30 00:01:36,300 --> 00:01:39,425 Và bạn sẽ thấy rằng tôi đã đi qua, và tôi thực sự làm sạch mọi thứ một chút. 31 00:01:39,425 --> 00:01:42,080 Tôi giới thiệu một vài khác tính năng của một cơ sở dữ liệu SQL. 32 00:01:42,080 --> 00:01:45,300 Ví dụ, thay vì chỉ làm cho tàu sân bay của var char 33 00:01:45,300 --> 00:01:47,310 như tôi nghĩ rằng tôi đã làm trên bay tuần trước. 34 00:01:47,310 --> 00:01:49,820 Tôi thay vì định nghĩa nó như những gì được gọi là một enum. 35 00:01:49,820 --> 00:01:53,310 >> Và một số bạn có thể đã nhìn thấy điều này như chúng tôi khám phá C. Enum là thực sự 36 00:01:53,310 --> 00:01:56,820 một tính năng của C, nơi bạn có thể liệt kê một bó toàn bộ các hằng số 37 00:01:56,820 --> 00:01:59,640 và giao cho các giá trị tự động, như một, hai, ba, bốn 38 00:01:59,640 --> 00:02:01,330 mà không cần phải mã số khó khăn. 39 00:02:01,330 --> 00:02:04,780 Vì vậy, SQL hỗ trợ như nhau, theo đó nếu bạn có một trường cơ sở dữ liệu mà bạn chỉ 40 00:02:04,780 --> 00:02:09,389 muốn đi trên một trong những hữu hạn giá trị, bạn có nghĩa là có thể xác định nó 41 00:02:09,389 --> 00:02:13,120 như tôi đã làm có bốn phổ biến các hãng điện thoại di động Mỹ. 42 00:02:13,120 --> 00:02:13,819 >> Vì vậy, tôi đã làm điều đó. 43 00:02:13,819 --> 00:02:16,610 Và tôi đã thực hiện một số thay đổi như tốt, quan trọng nhất 44 00:02:16,610 --> 00:02:20,090 được để có được email làm việc vì thu hồi, rằng chương trình này dựa vào đó 45 00:02:20,090 --> 00:02:23,470 thường được gọi là một email đến Cổng SMS, mà chỉ là 46 00:02:23,470 --> 00:02:27,670 một cách ưa thích của nói rằng Verizon, và AT & T, và những người khác hỗ trợ một máy chủ, 47 00:02:27,670 --> 00:02:30,740 theo đó nếu nó nhận được email, nó chuyển đổi nó để tin nhắn SMS 48 00:02:30,740 --> 00:02:33,290 và gửi ra một văn bản tin nhắn đến điện thoại của một ai đó. 49 00:02:33,290 --> 00:02:37,010 Vì vậy, nếu tôi đã làm điều này một cách chính xác, đây là một hình thức mới và cải tiến 50 00:02:37,010 --> 00:02:39,259 có nghĩa là sẽ nói chuyện với mã mới và cải tiến, mà 51 00:02:39,259 --> 00:02:40,300 bạn có thể chơi với trực tuyến. 52 00:02:40,300 --> 00:02:44,140 Và hy vọng nó sẽ làm cho tôi tiếng bíp điện thoại chỉ trong một khoảnh khắc. 53 00:02:44,140 --> 00:02:47,240 >> Vì vậy, đầu tiên, tôi sẽ gõ vào tên của tôi. 54 00:02:47,240 --> 00:02:51,400 Thứ hai, tôi sẽ không để làm điều này thời gian này. 55 00:02:51,400 --> 00:02:53,920 Tôi sẽ không Kiểm tra Element. 56 00:02:53,920 --> 00:02:56,710 Và điều này chỉ là một là điều ít vì vậy tôi không 57 00:02:56,710 --> 00:02:59,250 tạo ra giờ sản xuất bài làm việc như tôi đã làm thời gian qua. 58 00:02:59,250 --> 00:03:02,300 Hiện nay là số điện thoại của tôi. 59 00:03:02,300 --> 00:03:03,560 >> Tôi sẽ chọn Verizon. 60 00:03:03,560 --> 00:03:10,260 Và ở đây, chúng ta hãy bật microphone này ở đây, và mục tiêu này vào điện thoại của tôi ở đây. 61 00:03:10,260 --> 00:03:13,130 Tôi sẽ nhấn Register, mà nên hy vọng 62 00:03:13,130 --> 00:03:14,530 đặt nó vào cơ sở dữ liệu. 63 00:03:14,530 --> 00:03:16,780 Bây giờ tôi sẽ đi đến chương trình dòng lệnh, mà 64 00:03:16,780 --> 00:03:20,825 thu hồi đã được gọi là dấu chấm dấu gạch chéo văn bản, và chéo ngón tay của bạn. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Ở đây chúng ta đi. 67 00:03:26,527 --> 00:03:27,501 >> [PHONE dings] 68 00:03:27,501 --> 00:03:28,962 >> [Vỗ tay] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID Malan: Vì vậy, nhiều niềm vui hơn this-- nó là thú vị, tất nhiên, nếu tôi nhận được vào nó. 71 00:03:34,940 --> 00:03:38,004 Nhưng nó vui hơn, tôi nghĩ, nếu chúng ta tạo ra một trong những khoảnh khắc phim 72 00:03:38,004 --> 00:03:40,420 nơi giống như một cái gì đó thực sự xấu đã xảy ra trên thế giới, 73 00:03:40,420 --> 00:03:42,860 và giống như tất cả nhân dân NSA điện thoại di động bắt đầu bíp 74 00:03:42,860 --> 00:03:44,860 với tin nhắn văn bản cảnh báo họ về việc này. 75 00:03:44,860 --> 00:03:47,026 Vì vậy, tôi nghĩ rằng chúng tôi sẽ cố gắng để tái tạo tương tự ở đây, 76 00:03:47,026 --> 00:03:49,610 nhờ đó mà không sử dụng một cơ sở dữ liệu, Tôi thay vì trước 77 00:03:49,610 --> 00:03:51,490 viết một chương trình giống như thế này. 78 00:03:51,490 --> 00:03:53,660 >> Đây là một index.php-- và tôi đặt mã này trực tuyến 79 00:03:53,660 --> 00:03:56,710 như well-- mà dường chỉ làm cho form.php, 80 00:03:56,710 --> 00:04:00,990 sử dụng một phong cách mô hình MVC mà chúng ta nói về chi tiết hơn trong vấn đề thiết lập 81 00:04:00,990 --> 00:04:01,650 bảy. 82 00:04:01,650 --> 00:04:02,910 Đó là hình thức khá đơn giản. 83 00:04:02,910 --> 00:04:06,634 Nó sẽ gửi đến một tập tin gọi là here.php qua đường bưu điện. 84 00:04:06,634 --> 00:04:09,300 Và nó dường như sẽ hỏi cho một tên, và số điện thoại, 85 00:04:09,300 --> 00:04:11,400 và sau đó thông qua cái gọi là Chọn menu, đó là 86 00:04:11,400 --> 00:04:14,250 sẽ cung cấp cho bạn ít nhất bốn các hãng điện thoại di động Mỹ phổ biến, 87 00:04:14,250 --> 00:04:17,470 và sau đó cho phép bạn để có hiệu quả có tham dự bằng cách nhấn vào đây. 88 00:04:17,470 --> 00:04:20,471 >> Và ở đây, trong khi đó, sẽ vay một số các mã từ thời gian qua. 89 00:04:20,471 --> 00:04:22,553 Và nếu bạn chỉ đọc lướt này, bạn sẽ thấy rằng có 90 00:04:22,553 --> 00:04:23,900 một bó toàn bộ các kiểm tra lỗi. 91 00:04:23,900 --> 00:04:26,640 Nhưng vẻ đẹp ở cuối là chúng tôi không viết cho một cơ sở dữ liệu ngày hôm nay. 92 00:04:26,640 --> 00:04:29,130 Chúng tôi đang giữ nó đơn giản và chỉ cần gửi ra hy vọng 93 00:04:29,130 --> 00:04:32,190 một tin nhắn văn bản thông qua chức năng tôi đã viết trong vài ngày qua cuộc gọi 94 00:04:32,190 --> 00:04:36,270 Văn bản, mà là ở chức năng. php, đó là một lần nữa có sẵn trực tuyến. 95 00:04:36,270 --> 00:04:38,210 >> Vì vậy, nếu bạn muốn tham gia vào này. 96 00:04:38,210 --> 00:04:40,190 Chúng tôi sẽ không được lưu trữ bất cứ điều gì. 97 00:04:40,190 --> 00:04:43,809 Tới URL này ở đây trong thời gian thực. 98 00:04:43,809 --> 00:04:46,850 Không nộp nó chỉ được nêu ra, nhưng chúng ta hãy xem nếu chúng ta có thể có một trong những bộ phim 99 00:04:46,850 --> 00:04:49,830 khoảnh khắc mà điện thoại di động của mọi người bắt đầu bíp, hy vọng chỉ 100 00:04:49,830 --> 00:04:53,580 một lần trong năm nay không giống như trong năm 2011 nơi này đã méo kinh dị. 101 00:04:53,580 --> 00:04:58,910 Và một khi bạn đi đến địa chỉ đó, bạn sẽ thấy một hình thức siêu đơn giản 102 00:04:58,910 --> 00:05:03,884 rằng nếu bạn có một cái tên, một điện thoại di động số, và một tàu sân bay điện thoại di động mà 103 00:05:03,884 --> 00:05:06,175 phù hợp với danh sách đó, đi trước và điền vào mẫu. 104 00:05:06,175 --> 00:05:07,880 Nhưng không trúng trình chỉ được nêu ra. 105 00:05:07,880 --> 00:05:10,850 >> Các hình thức sẽ trông như thế này. 106 00:05:10,850 --> 00:05:13,660 Đi trước và gõ vào tên, số điện thoại. 107 00:05:13,660 --> 00:05:17,670 Oop, ai đó đi trước của đường cong. 108 00:05:17,670 --> 00:05:18,170 Đó là OK. 109 00:05:18,170 --> 00:05:19,340 OK, mọi người điền vào biểu mẫu. 110 00:05:19,340 --> 00:05:21,400 Điều này sẽ làm việc trên một điện thoại cũng vậy, nếu bạn muốn. 111 00:05:21,400 --> 00:05:23,695 Tất cả các bên phải, về nhãn hiệu của bạn, có được thiết lập, đi. 112 00:05:23,695 --> 00:05:24,195 Lượt đây. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Gì? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 Không. 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 Tôi thề với Chúa, tôi kiểm tra này nhiều lần ngày hôm nay. 119 00:05:40,250 --> 00:05:41,720 Bạn đã nhận nó? 120 00:05:41,720 --> 00:05:43,145 >> [Interposing GIỌNG NÓI] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID Malan: OK, có lẽ lỗi người dùng. 123 00:05:49,560 --> 00:05:50,550 Đó là hai. 124 00:05:50,550 --> 00:05:53,300 Nó làm việc cho hai trong một vài trăm, ba, bốn. 125 00:05:53,300 --> 00:05:55,940 OK, đó là tốt. 126 00:05:55,940 --> 00:05:58,520 Bốn trong số năm cho đúng đắn như thế nào về. 127 00:05:58,520 --> 00:05:59,810 >> Vì vậy, những gì đã xảy ra? 128 00:05:59,810 --> 00:06:02,727 Vì vậy, có lẽ, mà không nhìn thấy của bạn màn hình, tại sao nó có thể đã errored? 129 00:06:02,727 --> 00:06:05,518 Có thể nói rằng chúng tôi đã chỉ cố gắng để làm quá nhiều kết nối 130 00:06:05,518 --> 00:06:08,110 đến máy chủ mail Harvard của tất cả tại một lần từ các địa chỉ IP. 131 00:06:08,110 --> 00:06:10,740 Tôi chỉ đoán kể từ khi tôi đã không có sự sang trọng của thử nghiệm 132 00:06:10,740 --> 00:06:13,220 mã này với một số 300 người trước 133 00:06:13,220 --> 00:06:16,040 nhưng bây giờ nhận ra rằng ít nhất nên 134 00:06:16,040 --> 00:06:18,250 đã nhận được công việc làm lần này. 135 00:06:18,250 --> 00:06:22,880 >> Được rồi, vậy tại sao này tất cả các Gecman hơn với những gì đang xảy ra? 136 00:06:22,880 --> 00:06:24,900 Cũng lần đầu tiên, một cách nhanh chóng vài thông báo. 137 00:06:24,900 --> 00:06:29,350 Vì vậy, một, nếu bạn muốn tham gia Chang, và Nick, và những người khác vào buổi trưa thứ sáu này, 138 00:06:29,350 --> 00:06:32,400 làm RSVP tại URL bình thường có. 139 00:06:32,400 --> 00:06:35,650 Nếu bạn đang nghĩ đến việc tập trung hoặc làm một thứ trong CS, 140 00:06:35,650 --> 00:06:38,941 cho dù bạn đang học năm thứ hai, hoặc sinh viên năm nhất, hoặc thậm chí cơ sở hoặc cấp cao vào thời điểm này 141 00:06:38,941 --> 00:06:42,490 và vẫn có thể ép trong các khóa học, nhận ra rằng các trường kỹ thuật 142 00:06:42,490 --> 00:06:45,620 được thu thập miễn phí Ben và Kem Jerry và lời khuyên 143 00:06:45,620 --> 00:06:48,910 Thứ tư ngay sau khi lớp này tại 04:00 trong tòa nhà CS 144 00:06:48,910 --> 00:06:49,771 tại Maxwell Dworkin. 145 00:06:49,771 --> 00:06:51,520 Nếu điều này là quá nhanh trên màn hình, chỉ cần đi 146 00:06:51,520 --> 00:06:55,260 để cs50.harvard.edu cho một liên kết đến các sự kiện Facebook 147 00:06:55,260 --> 00:06:57,140 nơi bạn có thể xem chi tiết hơn. 148 00:06:57,140 --> 00:07:01,390 >> Trong khi đó, tôi nghĩ tôi sẽ sửa chữa một điều khác tôi goofed hôm thứ Tư. 149 00:07:01,390 --> 00:07:04,400 Chỉ ra rằng ID của Mark trên Facebook không phải là ba. 150 00:07:04,400 --> 00:07:05,230 Đó là bốn. 151 00:07:05,230 --> 00:07:08,330 Hóa ra ông đã thử nghiệm nhiều hơn tài khoản hơn tôi gọi lại. 152 00:07:08,330 --> 00:07:12,400 Nhưng điều này cảm thấy như một cơ hội làm là để kéo lên một URL như thế này. 153 00:07:12,400 --> 00:07:16,680 >> Vì vậy, nó chỉ ra rằng Facebook có một API, Application Programming Interface, 154 00:07:16,680 --> 00:07:20,070 mà là một cơ chế theo đó bạn có thể yêu cầu dữ liệu lập trình 155 00:07:20,070 --> 00:07:24,480 Facebook và nhận được trở lại máy thông tin có thể đọc được, không phải là trang web 156 00:07:24,480 --> 00:07:28,690 nhưng văn bản chỉ nguyên liệu, một cái gì đó gọi là JavaScript Object Notation. 157 00:07:28,690 --> 00:07:32,150 Và trên thực tế, nếu tôi truy cập này URL, và phóng to, theo mặc định, 158 00:07:32,150 --> 00:07:34,960 này là Mark công khai thông tin có thể truy cập. 159 00:07:34,960 --> 00:07:37,430 >> Và các chi tiết thú vị đây chỉ là ID của mình 160 00:07:37,430 --> 00:07:40,670 thực sự là, số bốn, mà tôi nhận ra ngay sau khi tôi đã làm điều này. 161 00:07:40,670 --> 00:07:44,260 Bạn có thể làm điều này cho mình nếu bạn biết Tên truy nhập Facebook của bạn nếu bạn có một. 162 00:07:44,260 --> 00:07:45,440 Chỉ cần gõ nó lên trên đó. 163 00:07:45,440 --> 00:07:46,640 Và không ai trong số này là tư nhân. 164 00:07:46,640 --> 00:07:48,670 Tôi chỉ làm điều này thậm chí ở chế độ ẩn danh. 165 00:07:48,670 --> 00:07:49,900 Vì vậy, tôi thậm chí không đăng nhập. 166 00:07:49,900 --> 00:07:54,440 Và bạn đang nhìn thấy tôi mà rõ ràng là sử dụng số 6454 167 00:07:54,440 --> 00:07:56,480 trên Facebook, mà không phải là quá xấu những ngày này. 168 00:07:56,480 --> 00:07:59,900 Vì vậy, dù sao đi nữa, bạn cũng sẽ thấy thêm thông tin ở đó. 169 00:07:59,900 --> 00:08:02,150 >> Và các khía cạnh hữu ích đó là bạn 170 00:08:02,150 --> 00:08:06,890 có thể viết phần mềm của riêng bạn mà bằng cách nào đó tích hợp dữ liệu như thế này 171 00:08:06,890 --> 00:08:08,170 vào ứng dụng của riêng bạn. 172 00:08:08,170 --> 00:08:10,650 Bạn có thể trao quyền cho người sử dụng đăng nhập vào trang web của bạn, 173 00:08:10,650 --> 00:08:14,190 không sử dụng tên riêng của họ và mật khẩu nhưng có thể đăng nhập Facebook của họ 174 00:08:14,190 --> 00:08:16,170 và nhận được thông tin ngay cả về bạn bè của họ, 175 00:08:16,170 --> 00:08:18,740 nếu họ chấp thuận như vậy, hoặc tương tự. 176 00:08:18,740 --> 00:08:21,430 Vì vậy, lưu ý CS50 rằng, quá, có một số các API riêng của mình, 177 00:08:21,430 --> 00:08:24,620 một cho dữ liệu danh mục Tất nhiên, một số cho những cái ôm menu trong ăn uống 178 00:08:24,620 --> 00:08:26,730 hội trường, tất cả các các tòa nhà và địa điểm 179 00:08:26,730 --> 00:08:30,930 trong khuôn viên trường chúng tôi có một API cho là tốt mà bạn có thể truy vấn tương tự và nhận được 180 00:08:30,930 --> 00:08:35,520 lại dữ liệu văn bản mà bạn có thể tích hợp thành một PHP, hoặc JavaScript, hoặc thậm chí, 181 00:08:35,520 --> 00:08:38,320 mặc dù ít phổ biến hơn, một Dự án cuối cùng dựa trên C. 182 00:08:38,320 --> 00:08:41,190 >> Thật vậy trước cho trận chung kết Dự án là một vài sự kiện quan trọng. 183 00:08:41,190 --> 00:08:42,980 Bạn nhận được một email từ chúng tôi ngày khác. 184 00:08:42,980 --> 00:08:45,761 Nhận ra rằng đề xuất là do này thứ hai tới. 185 00:08:45,761 --> 00:08:49,010 Nó không nhất thiết phải ràng buộc, nhưng bạn cần phải nhận nghiên cứu sinh giảng dạy của bạn 186 00:08:49,010 --> 00:08:51,260 phê duyệt trước khi thực hiện bất kỳ thay đổi sau đó. 187 00:08:51,260 --> 00:08:54,280 Và sau đó phía trước là một số sự kiện quan trọng khác. 188 00:08:54,280 --> 00:08:56,542 >> Vì vậy, để trêu chọc bạn, quá, với một số khả năng, 189 00:08:56,542 --> 00:08:58,250 chúng tôi có một loạt các những bóng đèn màu sắc. 190 00:08:58,250 --> 00:09:01,190 Và một số các bạn bây giờ có một số trong số này trong phòng ký túc xá của bạn là tốt. 191 00:09:01,190 --> 00:09:02,920 Và họ cũng có một API. 192 00:09:02,920 --> 00:09:07,300 Vì vậy, nhớ lại những bóng đèn nhị phân tuần trước đây mà Dan Bradley và Ansel 193 00:09:07,300 --> 00:09:08,780 Duff tạo ra cho chúng ta. 194 00:09:08,780 --> 00:09:12,560 Họ đã sử dụng một giao diện phần mềm để bóng đèn này, mà tại thời điểm này 195 00:09:12,560 --> 00:09:15,232 được cắm vào điện và sau đó thông qua không dây 196 00:09:15,232 --> 00:09:17,690 được kết nối với một điều ít gọi là cầu xuống đây, 197 00:09:17,690 --> 00:09:21,280 giống như một bộ định tuyến ít độc quyền để thiết bị đặc biệt này. 198 00:09:21,280 --> 00:09:26,540 >> Nhưng hóa ra nếu tôi biết làm thế nào để gửi tin nhắn HTTP, như tất cả chúng ta bây giờ làm, 199 00:09:26,540 --> 00:09:31,670 Tôi có thể gửi một tin nhắn như thế này để bóng đèn này để bật hoặc tắt 200 00:09:31,670 --> 00:09:34,000 hoặc làm bất kỳ số lượng các hoạt động khác trên đó. 201 00:09:34,000 --> 00:09:36,110 Chú ý rằng nó không nhận được, nó không gửi. 202 00:09:36,110 --> 00:09:37,760 Có một số khác được gọi là thỏa thuận. 203 00:09:37,760 --> 00:09:39,630 Có thực sự là một vài động từ khác như vậy. 204 00:09:39,630 --> 00:09:42,920 Tuy nhiên, nhận thấy có một con đường đó, giảm API, giảm phát triển mới, 205 00:09:42,920 --> 00:09:44,990 giảm nhẹ, giảm một, dấu gạch chéo nhà nước. 206 00:09:44,990 --> 00:09:49,060 >> Đó dường như chỉ là con đường mà các công ty, Philips, 207 00:09:49,060 --> 00:09:51,640 đã quyết định bạn phải nhấn với một yêu cầu HTTP 208 00:09:51,640 --> 00:09:55,010 nếu bạn muốn thay đổi trạng thái của bóng đèn sử dụng HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Sau đó, nhận thấy những dòng trống. 210 00:09:56,380 --> 00:10:00,170 Và rồi cuối cùng những gì trông giống như loại một mảng của một số loại, 211 00:10:00,170 --> 00:10:04,730 này một lần nữa sẽ được gọi là JavaScript Object Notation, hoặc Jason. 212 00:10:04,730 --> 00:10:08,000 Và những gì bạn thấy ở đây là có ba cặp giá trị quan trọng. 213 00:10:08,000 --> 00:10:09,115 >> Một quan trọng được gọi là trên. 214 00:10:09,115 --> 00:10:10,990 Và giá trị của nó rõ ràng sẽ là sự thật. 215 00:10:10,990 --> 00:10:13,612 Độ sáng là 128, trong đó là một số loại int. 216 00:10:13,612 --> 00:10:15,820 Và sau đó là thời gian chuyển tiếp bằng không, mà rõ ràng là 217 00:10:15,820 --> 00:10:17,970 bao lâu nó sẽ thực hiện để biến điều này trên. 218 00:10:17,970 --> 00:10:19,890 >> Vì vậy, ngay bây giờ bóng đèn này là tắt. 219 00:10:19,890 --> 00:10:22,880 Nhưng nếu tôi làm chính xác cho this-- tôi đi đến một chút cheat sheet 220 00:10:22,880 --> 00:10:25,200 rằng Dan thiết lập trong advance-- và tôi sẽ 221 00:10:25,200 --> 00:10:27,920 đi trước và sao chép lệnh sau đây. 222 00:10:27,920 --> 00:10:30,200 Curl, như một số bạn có thể lượm lặt trên CS50 223 00:10:30,200 --> 00:10:35,080 Thảo luận là một tiện ích như Telnet như vậy mà bạn có thể mô phỏng các yêu cầu HTTP, 224 00:10:35,080 --> 00:10:36,360 đặc biệt đặt. 225 00:10:36,360 --> 00:10:39,710 Tôi có thể gửi dữ liệu này, cụ thể những gì chúng ta chỉ 226 00:10:39,710 --> 00:10:43,430 nhìn thấy một thời điểm trước đây đặc biệt URL này trên đây. 227 00:10:43,430 --> 00:10:46,310 Và sau đó Curl sẽ xử lý tất cả các tiêu đề cần thiết 228 00:10:46,310 --> 00:10:47,600 và phân tích có của. 229 00:10:47,600 --> 00:10:54,700 >> Vì vậy, tất cả tôi phải làm là sao chép này vào một cửa sổ terminal và sau đó nhấn Enter. 230 00:10:54,700 --> 00:10:56,000 Và bóng đèn đi về. 231 00:10:56,000 --> 00:10:59,060 Và đây là tất cả đi qua máy tính của tôi không dây 232 00:10:59,060 --> 00:11:01,960 bằng cách nào đó xuống cầu, mà sau đó nói chuyện với bóng đèn này. 233 00:11:01,960 --> 00:11:02,960 Tôi có thể làm cái gì khác. 234 00:11:02,960 --> 00:11:07,050 Tôi có thể làm điều này đi màu đỏ ví dụ. 235 00:11:07,050 --> 00:11:11,040 Tôi có thể ví dụ làm Điều này đi màu xanh lá cây. 236 00:11:11,040 --> 00:11:12,220 Tôi có thể làm cho nó đi màu xanh. 237 00:11:12,220 --> 00:11:14,760 >> Và thông báo trong mỗi trường hợp, tất cả những gì tôi đang thay đổi 238 00:11:14,760 --> 00:11:18,540 là cái gọi là giá trị màu sắc để thực sự cung cấp cho nó một số màu sắc. 239 00:11:18,540 --> 00:11:20,320 Vì vậy, hãy để tôi dán này là tốt. 240 00:11:20,320 --> 00:11:21,000 Bây giờ là màu xanh. 241 00:11:21,000 --> 00:11:24,672 >> Và bạn có thể làm ngay cả fancier điều where-- chúng ta hãy đi đến màu xanh lá cây. 242 00:11:24,672 --> 00:11:26,630 Và tôi có thể làm điều này trong Tất nhiên với mã của riêng tôi. 243 00:11:26,630 --> 00:11:30,670 Nhưng ngay cả các API bản thân hỗ trợ các hoạt động sôi nổi 244 00:11:30,670 --> 00:11:35,510 như thế này, bây giờ mà sẽ làm phiền chúng tôi trong 30 giây tiếp theo. 245 00:11:35,510 --> 00:11:39,170 >> Vì vậy, đó là một hương vị của những gì bạn có thể làm với một API, điều này liên quan đến 246 00:11:39,170 --> 00:11:40,010 bóng đèn. 247 00:11:40,010 --> 00:11:42,510 Lưu ý rằng CS50 có một cặp vợ chồng cặp của Google Glass nếu bạn muốn 248 00:11:42,510 --> 00:11:45,380 muốn giải quyết cái gì đó dọc các đường dây, Arduino unos, mà 249 00:11:45,380 --> 00:11:48,670 là các máy tính nhỏ bé, về cơ bản, trên một bảng mạch nhỏ 250 00:11:48,670 --> 00:11:50,470 mà bạn có thể kết nối dây điện và những thứ khác 251 00:11:50,470 --> 00:11:52,732 để và thực sự kiểm soát môi trường thế giới thực sự của bạn. 252 00:11:52,732 --> 00:11:54,940 Và sau đó có một cặp vợ chồng đồ chơi mới mà chúng tôi có. 253 00:11:54,940 --> 00:11:59,294 Điều này nghĩa là chỉ cần đến các ngày khác bằng cách mail, một Myo Armband. 254 00:11:59,294 --> 00:12:01,710 Và tôi nghĩ đó là một cách để giúp bạn có được vui mừng về dự án 255 00:12:01,710 --> 00:12:03,720 mà bạn có thể sử dụng với phần cứng này sẽ 256 00:12:03,720 --> 00:12:08,900 là để chơi clip ngắn này mà họ sử dụng để trêu chọc folks 257 00:12:08,900 --> 00:12:10,500 mà bây giờ chúng ta đang sống trong tương lai. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [MUSIC CHƠI] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID Malan: Vì vậy, chỉ trong một vài tuần, bạn cũng có thể được mát mẻ tại hội chợ CS50. 262 00:13:37,109 --> 00:13:39,150 Thiết bị khác mà chúng tôi có một loạt các rằng chúng tôi 263 00:13:39,150 --> 00:13:42,090 hạnh phúc cho vay ra cho các dự án được gọi là một bộ điều khiển chuyển động. 264 00:13:42,090 --> 00:13:45,030 Đây là một thiết bị USB nhỏ bạn kết nối với một máy tính 265 00:13:45,030 --> 00:13:47,520 cho phép bạn tương tác với máy tính xách tay của bạn, Mac hoặc PC, 266 00:13:47,520 --> 00:13:51,570 như thể bạn có giống như một Xbox Kinect và thực sự làm cho chuyển động tay chân nhiều 267 00:13:51,570 --> 00:13:54,509 như chúng ta thấy trong này tầm nhìn của tương lai. 268 00:13:54,509 --> 00:13:56,505 >> [MUSIC CHƠI] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID Malan: Vì vậy, ngay cả khi bạn có không có ý tưởng như thế nào một cái gì đó như thế 271 00:15:06,260 --> 00:15:10,050 có thể có thể được tạo ra, hay công việc trên một cấp độ phần cứng, không có vấn đề. 272 00:15:10,050 --> 00:15:13,520 Thậm chí chỉ sau vài tháng CS50, và sự hiểu biết về lập trình 273 00:15:13,520 --> 00:15:19,460 nói chung, và lập trình web hơn gần đây, và sau đó cũng API, và HTTP, 274 00:15:19,460 --> 00:15:21,830 bạn sẽ có thể truy cập thông qua API phần mềm nếu bạn 275 00:15:21,830 --> 00:15:24,680 không muốn mượn một trong những thiết bị để thực sự nói chuyện với nó 276 00:15:24,680 --> 00:15:27,180 và không phải lo lắng về việc thực hiện cơ bản 277 00:15:27,180 --> 00:15:30,220 chi tiết, đó là hoàn toàn phù hợp với quan điểm này của lớp 278 00:15:30,220 --> 00:15:33,610 một trừu tượng mà chúng tôi đã nhìn thấy trong suốt học kỳ. 279 00:15:33,610 --> 00:15:37,990 >> Vì vậy, cũng vào cuối tuần qua, thấy một vài mẩu tin. 280 00:15:37,990 --> 00:15:40,640 Đi đầu tiên, đi đến hội thảo nếu bạn muốn tìm hiểu một cái gì đó 281 00:15:40,640 --> 00:15:42,160 thêm về bất kỳ số lượng các chủ đề. 282 00:15:42,160 --> 00:15:43,340 Xem các URL đó. 283 00:15:43,340 --> 00:15:45,890 Và điều này đã được gửi đến tôi bởi Chang, những người bạn biết, 284 00:15:45,890 --> 00:15:47,850 ai in quân đội của chúng ta về con voi. 285 00:15:47,850 --> 00:15:49,910 Và đó là một tiêu đề như sau. 286 00:15:49,910 --> 00:15:51,280 Tôi sợ hãi của truyền hình mới của tôi. 287 00:15:51,280 --> 00:15:54,301 Tại sao tôi sợ hãi để biến này điều trên và bạn muốn được quá. 288 00:15:54,301 --> 00:15:56,050 Vì vậy, chúng ta đang ở chỉ trong học kỳ, 289 00:15:56,050 --> 00:15:58,860 quá, mà ngay cả nếu bạn có chỉ một chút hiểu biết 290 00:15:58,860 --> 00:16:02,620 về cách làm việc các trang web, và HTTP, và an ninh, mọi thứ như thế này 291 00:16:02,620 --> 00:16:03,980 nên bắt đầu để bắt mắt của bạn. 292 00:16:03,980 --> 00:16:07,450 Nhưng cũng có thể, bạn sẽ hiểu cho dù những điều này là hay không 293 00:16:07,450 --> 00:16:08,430 mối đe dọa thực sự. 294 00:16:08,430 --> 00:16:10,940 >> Vì vậy tôi đã một vài trích đoạn từ bài viết này ở đây. 295 00:16:10,940 --> 00:16:12,540 Và những câu chuyện như sau. 296 00:16:12,540 --> 00:16:14,300 Hiện tại tôi là chủ sở hữu của TV thông minh mới, 297 00:16:14,300 --> 00:16:18,470 hứa hẹn sẽ cung cấp trực tuyến nội dung đa phương tiện, trò chơi, ứng dụng, 298 00:16:18,470 --> 00:16:21,450 phương tiện truyền thông xã hội và internet duyệt, oh và TV quá. 299 00:16:21,450 --> 00:16:24,410 Vấn đề duy nhất là tôi bây giờ ngại sử dụng nó, nói rằng tác giả. 300 00:16:24,410 --> 00:16:29,592 Bạn sẽ trở thành như vậy, nếu bạn đọc qua chính sách bảo mật 46 trang cho TV của bạn. 301 00:16:29,592 --> 00:16:31,800 Số lượng dữ liệu này thu thập những điều đáng kinh ngạc. 302 00:16:31,800 --> 00:16:35,710 Nó ghi ở đâu, khi nào, như thế nào, và cho bạn sử dụng TV trong bao lâu. 303 00:16:35,710 --> 00:16:38,190 Nó đặt cookies theo dõi, như chúng ta đã thảo luận, 304 00:16:38,190 --> 00:16:40,560 và các cảnh báo thiết kế để phát hiện khi bạn có 305 00:16:40,560 --> 00:16:43,185 xem nội dung cụ thể hoặc email message cụ thể 306 00:16:43,185 --> 00:16:45,230 nếu bạn muốn kiểm tra email trên TV của bạn. 307 00:16:45,230 --> 00:16:48,430 Nó ghi lại các ứng dụng bạn sử dụng, các trang web bạn truy cập, 308 00:16:48,430 --> 00:16:52,280 và cách bạn tương tác với nội dung, làm tất cả điều đó qua TV thông minh của bạn. 309 00:16:52,280 --> 00:16:55,470 Nó cũng có thể, yet-- creepier đó là addition-- của tôi 310 00:16:55,470 --> 00:16:58,140 đã được xây dựng trong máy ảnh với nhận dạng khuôn mặt. 311 00:16:58,140 --> 00:17:01,010 >> Mục đích là để cung cấp kiểm soát cử chỉ cho TV 312 00:17:01,010 --> 00:17:05,490 và cho phép bạn đăng nhập vào cá nhân hoá tài khoản sử dụng khuôn mặt của bạn. 313 00:17:05,490 --> 00:17:08,940 Ở phía trên, những hình ảnh lưu trên truyền hình thay vì tải lên 314 00:17:08,940 --> 00:17:09,940 đến một máy chủ của công ty. 315 00:17:09,940 --> 00:17:12,520 Mặt khác, internet kết nối làm cho toàn bộ TV 316 00:17:12,520 --> 00:17:14,811 dễ bị tin tặc người đã chứng minh khả năng 317 00:17:14,811 --> 00:17:16,700 để kiểm soát hoàn toàn của máy. 318 00:17:16,700 --> 00:17:20,880 >> Đáng ngại hơn, như thể đó là không đủ thông minh, là microphone. 319 00:17:20,880 --> 00:17:23,599 TV tự hào có một giọng nói tính năng nhận dạng 320 00:17:23,599 --> 00:17:26,859 cho phép người xem để kiểm soát màn hình bằng giọng nói. 321 00:17:26,859 --> 00:17:30,290 Nhưng các dịch vụ đi kèm với một cảnh báo chứ không đáng ngại. 322 00:17:30,290 --> 00:17:33,030 Xin lưu ý rằng nếu lời nói của bạn bao gồm 323 00:17:33,030 --> 00:17:36,210 cá nhân hoặc nhạy cảm khác thông tin, thông tin 324 00:17:36,210 --> 00:17:40,310 sẽ là những dữ liệu bị bắt và chuyển đến một bên thứ ba. 325 00:17:40,310 --> 00:17:40,870 Có mà? 326 00:17:40,870 --> 00:17:45,860 Đừng nói cá nhân hoặc nhạy cảm thứ ở phía trước của TV của bạn. 327 00:17:45,860 --> 00:17:47,280 >> Vì vậy, đây thực sự là thật. 328 00:17:47,280 --> 00:17:50,530 Và nó không khó để nhìn thấy nếu bạn đi đến Best Buy hoặc tương tự cho TV 329 00:17:50,530 --> 00:17:51,030 những ngày này. 330 00:17:51,030 --> 00:17:52,540 Tất cả họ đều thông minh trong một số cách. 331 00:17:52,540 --> 00:17:54,740 Và họ đang nhận được thông minh hơn và creepier. 332 00:17:54,740 --> 00:17:57,490 Và họ chỉ đơn giản là thu thập dữ liệu theo những cách mà chúng tôi đã nói chuyện về 333 00:17:57,490 --> 00:18:01,840 và sau đó tải nó thông qua HTTP hoặc một số giao thức khác với một số máy chủ. 334 00:18:01,840 --> 00:18:05,720 >> Vì vậy, đây là một bài viết vui vẻ trong trang web trực tuyến này 335 00:18:05,720 --> 00:18:08,940 ở đây, mà nói về một lỗi cụ thể hoặc nhầm lẫn mã 336 00:18:08,940 --> 00:18:11,340 rằng chúng tôi thực sự có thể buộc thảo luận vào tuần trước. 337 00:18:11,340 --> 00:18:15,730 Vì vậy, tiêu đề này là như sau, câu chuyện đi ở đây, 338 00:18:15,730 --> 00:18:18,720 Josh Breckman làm việc cho một công ty đã hạ cánh xuống một hợp đồng 339 00:18:18,720 --> 00:18:22,390 để phát triển một quản lý nội dung hệ thống, hoặc CMS như chúng được gọi, 340 00:18:22,390 --> 00:18:24,380 cho một trang web của chính phủ khá lớn. 341 00:18:24,380 --> 00:18:27,300 Phần lớn các dự án có liên quan phát triển một hệ thống quản lý nội dung 342 00:18:27,300 --> 00:18:29,840 để nhân viên sẽ có thể xây dựng và duy trì 343 00:18:29,840 --> 00:18:31,877 bao giờ thay đổi nội dung cho trang web của họ. 344 00:18:31,877 --> 00:18:34,210 Mọi thứ đã đi khá tốt cho một vài ngày sau khi đi sinh sống. 345 00:18:34,210 --> 00:18:37,020 Nhưng vào ngày sáu, mọi thứ không tốt lắm. 346 00:18:37,020 --> 00:18:39,500 Tất cả các nội dung trên trang web đã hoàn toàn biến mất. 347 00:18:39,500 --> 00:18:42,950 Và tất cả các trang dẫn đến việc mặc định, vui lòng nhập nội dung trang web. 348 00:18:42,950 --> 00:18:43,810 Lỗi chính. 349 00:18:43,810 --> 00:18:46,080 Josh đã được gọi đến để điều tra và nhận thấy 350 00:18:46,080 --> 00:18:49,390 rằng một trong những đặc biệt phiền hà địa chỉ IP bên ngoài có 351 00:18:49,390 --> 00:18:53,380 đi vào và xóa tất cả các nội dung trên hệ thống. 352 00:18:53,380 --> 00:18:56,290 >> Các địa chỉ IP không thuộc để một số hacker bẻ cong ở nước ngoài 353 00:18:56,290 --> 00:18:58,340 phá hủy hữu ích thông tin chính phủ. 354 00:18:58,340 --> 00:19:05,190 Nó giải quyết để googlebot.com, Bò mạng nhện rất riêng của Google. 355 00:19:05,190 --> 00:19:06,010 Lỗi chính. 356 00:19:06,010 --> 00:19:09,150 Sau một chút về nghiên cứu và xáo trộn xung quanh để tìm một bản sao lưu noncorrupt, 357 00:19:09,150 --> 00:19:10,180 Josh thấy được vấn đề. 358 00:19:10,180 --> 00:19:12,700 >> Một người sử dụng đã sao chép và dán một số nội dung từ một 359 00:19:12,700 --> 00:19:15,670 trang khác, bao gồm cả một Edit Hyperlink 360 00:19:15,670 --> 00:19:17,577 để chỉnh sửa các nội dung trên trang. 361 00:19:17,577 --> 00:19:20,160 Thông thường điều này sẽ không phải là một vấn đề kể từ khi một người dùng bên ngoài sẽ 362 00:19:20,160 --> 00:19:24,320 cần phải nhập tên và mật khẩu, nhưng hệ thống xác thực CMS, 363 00:19:24,320 --> 00:19:27,520 Hệ thống đăng nhập, không đưa vào tài khoản 364 00:19:27,520 --> 00:19:30,980 hack tinh vi kỹ thuật của Google Spider. 365 00:19:30,980 --> 00:19:31,700 Lỗi chính. 366 00:19:31,700 --> 00:19:33,610 >> Khi nó quay ra, Google Spider không sử dụng 367 00:19:33,610 --> 00:19:36,950 cookies, có nghĩa là nó có thể dễ dàng bỏ qua một kiểm tra cho 368 00:19:36,950 --> 00:19:39,840 được đăng nhập trên cookie bộ là sai lầm. 369 00:19:39,840 --> 00:19:42,620 Nó cũng không chú ý đến JavaScript, mà sẽ bình thường 370 00:19:42,620 --> 00:19:45,170 nhắc nhở và chuyển hướng người dùng người chưa đăng nhập. 371 00:19:45,170 --> 00:19:48,610 Tuy nhiên nó theo mỗi siêu liên kết trên mỗi trang mà nó tìm thấy, 372 00:19:48,610 --> 00:19:51,700 bao gồm cả những người có Xóa trang trong tiêu đề. 373 00:19:51,700 --> 00:19:52,650 Lỗi chính. 374 00:19:52,650 --> 00:19:56,070 >> Vì vậy, điều này có nghĩa là trong hơn Về mặt kỹ thuật nhưng khá dễ tiếp cận? 375 00:19:56,070 --> 00:19:58,340 Nó chỉ có nghĩa là trong suốt trang web của họ, 376 00:19:58,340 --> 00:20:02,287 họ có URL không giống như một này bạn có thể thấy trong vấn đề thiết lập bảy. 377 00:20:02,287 --> 00:20:04,620 Nhớ lại trong vấn đề thiết lập bảy hoặc biết trong vấn đề thiết lập bảy 378 00:20:04,620 --> 00:20:06,411 rằng bạn đang bị thách thức, trong số những thứ khác, 379 00:20:06,411 --> 00:20:08,570 bán cổ phiếu thay mặt cho người sử dụng. 380 00:20:08,570 --> 00:20:14,010 Nhưng việc thực hiện mà tính năng này bằng cách của nhận được thông qua các siêu liên kết trong sử dụng của bạn 381 00:20:14,010 --> 00:20:16,880 giao diện, có thể không phải là ý tưởng thông minh 382 00:20:16,880 --> 00:20:20,300 bởi vì nếu trang web của bạn là bằng cách nào đó truy cập, hoặc bởi một con người 383 00:20:20,300 --> 00:20:23,577 những người xung quanh cách nhấn vào hoặc mua một bot như của Google hay một Spider 384 00:20:23,577 --> 00:20:26,160 như chúng được gọi đó chỉ là thu thập dữ liệu web cố gắng để chỉ số 385 00:20:26,160 --> 00:20:29,060 web như một công cụ tìm kiếm, họ có thể rất dễ dàng 386 00:20:29,060 --> 00:20:31,340 nhấn qua nhận được loại URL. 387 00:20:31,340 --> 00:20:33,770 Và đó là chức năng tương đương với, trong trường hợp này, 388 00:20:33,770 --> 00:20:37,000 bán tất cả cổ phiếu của Google. 389 00:20:37,000 --> 00:20:40,030 >> Bây giờ thẳng thắn, nó hoàn toàn ngu si rằng CMS 390 00:20:40,030 --> 00:20:43,240 sử dụng JavaScript và cookie triển khai hệ thống đăng nhập của nó 391 00:20:43,240 --> 00:20:47,100 và không làm điều đó phía máy chủ, như các bạn làm và sẽ ở PSet 7-- 392 00:20:47,100 --> 00:20:49,940 có một login.php file-- luôn luôn, luôn luôn, 393 00:20:49,940 --> 00:20:52,789 luôn luôn an ninh nên thực hiện ở phía máy chủ, 394 00:20:52,789 --> 00:20:56,080 không về phía khách hàng bởi vì, như này bài viết gợi ý và bạn có thể tự mình 395 00:20:56,080 --> 00:20:59,600 nhìn thấy tại một số điểm, nó là tầm thường cho một người sử dụng, tốt hay xấu, 396 00:20:59,600 --> 00:21:02,860 chỉ cần tắt JavaScript không đề cập đến các tập tin cookie. 397 00:21:02,860 --> 00:21:06,020 Vì vậy, đó là WTF hàng ngày của bạn. 398 00:21:06,020 --> 00:21:07,970 >> Có một nhiều hơn, mà chỉ là loại đáng sợ, 399 00:21:07,970 --> 00:21:11,360 vì vậy tôi sẽ đề cập đến nó nếu chỉ như là một bài học cuộc sống. 400 00:21:11,360 --> 00:21:14,850 Bất cứ khi nào bạn sử dụng một ứng dụng gọi là như Snapchat hoặc tương tự 401 00:21:14,850 --> 00:21:19,380 nói rằng những bức ảnh này chỉ kéo dài năm giây, mười giây, hoặc không có điều gì. 402 00:21:19,380 --> 00:21:21,680 Họ là phù du Đó là hoàn toàn không phải là trường hợp. 403 00:21:21,680 --> 00:21:25,670 Giống như không có cách nào, kỹ thuật số, để thực hiện một số hình thức video, 404 00:21:25,670 --> 00:21:30,150 hoặc hình ảnh, văn bản hoặc chia sẻ như vậy rằng một người nhận ở đầu bên kia 405 00:21:30,150 --> 00:21:31,660 không thể bằng cách nào đó lưu dữ liệu. 406 00:21:31,660 --> 00:21:34,300 >> Trong cách ngây thơ nhất, một người nào đó có thể lấy điện thoại của họ. 407 00:21:34,300 --> 00:21:36,850 Và họ có một cửa sổ thứ hai 10 trong khi nhìn vào một số tích tắc 408 00:21:36,850 --> 00:21:39,410 chỉ có một số điện thoại khác và chụp ảnh nó, rõ ràng. 409 00:21:39,410 --> 00:21:41,660 Vì vậy, bạn có thể bảo quản một cái gì đó kỹ thuật số theo cách đó. 410 00:21:41,660 --> 00:21:44,620 Một số bạn biết làm thế nào để có ảnh chụp màn hình trên điện thoại của bạn. 411 00:21:44,620 --> 00:21:49,290 Trong thực tế, nếu bạn không biết điều này, nhận ra rằng ít nhất Snapchat, 412 00:21:49,290 --> 00:21:51,040 và tôi nghĩ khác ứng dụng những ngày này, 413 00:21:51,040 --> 00:21:53,720 ít nhất là cho bạn biết nếu người nhận có thực sự 414 00:21:53,720 --> 00:21:55,310 thực hiện một ảnh chụp màn hình của hình ảnh của bạn. 415 00:21:55,310 --> 00:22:00,870 >> Nhưng tệ hơn nữa, đây là snappening, như một người nào đó đặt ra thời gian gần đây, 416 00:22:00,870 --> 00:22:04,680 nơi mà một số 100.000 snaps đã được phát hành 417 00:22:04,680 --> 00:22:09,310 trong những gì được gọi là một tập tin torrent trên các trang web khác nhau cuối cùng. 418 00:22:09,310 --> 00:22:12,000 Và những chứa toàn bộ một loạt các tin nhắn và bài viết. 419 00:22:12,000 --> 00:22:15,210 Nó chỉ ra hầu hết trong số họ lành tính, vì vậy không phải những gì bạn có thể mong đợi. 420 00:22:15,210 --> 00:22:17,580 Nhưng bởi vì mọi người đã có sử dụng một trang web của bên thứ ba, 421 00:22:17,580 --> 00:22:20,270 đăng nhập với Snapchat của họ tên đăng nhập và mật khẩu và sau đó 422 00:22:20,270 --> 00:22:23,470 tiết kiệm tất cả các snaps của họ trên trang web này của bên thứ ba. 423 00:22:23,470 --> 00:22:26,130 Và nó là bên thứ ba trang web đã bị tấn công, 424 00:22:26,130 --> 00:22:30,710 mà chỉ có nghĩa là ai đó đã tìm ra cách để có được tất cả 100.000 cộng với những hình ảnh 425 00:22:30,710 --> 00:22:33,822 vào ổ đĩa cứng của mình để chia sẻ tiếp theo. 426 00:22:33,822 --> 00:22:36,030 Thành thật mà nói, ở đây cũng vậy, nó là loại của ngu si rằng Snapchat 427 00:22:36,030 --> 00:22:39,360 được thực hiện trong một cách như vậy mà một bên thứ ba có thể sắp xếp các đánh chặn 428 00:22:39,360 --> 00:22:43,310 dữ liệu và rằng nó không gắn liền với bạn ứng dụng của riêng chạy trên điện thoại. 429 00:22:43,310 --> 00:22:46,947 Nhưng ở đây, quá, nhận ra rằng những điều không nên bắt bạn bất ngờ, 430 00:22:46,947 --> 00:22:49,030 hoặc ít nhất là có nên là một bài học cuộc sống ở đây. 431 00:22:49,030 --> 00:22:52,220 Nếu bạn muốn các kỹ thuật chi tiết, hãy truy cập URL mà có 432 00:22:52,220 --> 00:22:53,570 đó là trên các trình diễn ngày hôm nay. 433 00:22:53,570 --> 00:23:00,960 Tất cả các bên phải, bất kỳ câu hỏi về bài học cuộc sống ngày hôm nay trong CS? 434 00:23:00,960 --> 00:23:02,710 Lần lượt là tắt. 435 00:23:02,710 --> 00:23:04,970 Bất cứ điều gì ở tất cả? 436 00:23:04,970 --> 00:23:06,301 Bất cứ điều gì ở tất cả? 437 00:23:06,301 --> 00:23:09,050 Tôi đã có rất nhiều người kiểm tra Snapchat hoặc một cái gì đó của họ bây giờ. 438 00:23:09,050 --> 00:23:11,690 >> Tất cả các quyền, do đó SQL, Structured Query Language. 439 00:23:11,690 --> 00:23:12,509 Hãy bọc này. 440 00:23:12,509 --> 00:23:14,300 Và cũng có thể, mặc dù chúng tôi chỉ trầy xước 441 00:23:14,300 --> 00:23:16,310 bề mặt này ngôn ngữ, chúng tôi sẽ cung cấp cho bạn 442 00:23:16,310 --> 00:23:18,930 đủ của ngôn ngữ trong các hình thức PSet 7 443 00:23:18,930 --> 00:23:22,140 để bạn có thể giải quyết một số chức năng khá phổ biến. 444 00:23:22,140 --> 00:23:24,912 Nhưng nhận ra có một vài điều chúng ta không đòi hỏi các bạn, 445 00:23:24,912 --> 00:23:27,120 nhưng họ sẽ được quan trọng đến các dự án chính thức 446 00:23:27,120 --> 00:23:30,760 và chắc chắn đi làm thực tế các trang web với người sử dụng thực tế 447 00:23:30,760 --> 00:23:32,040 là quyết định thiết kế này. 448 00:23:32,040 --> 00:23:34,460 >> Nó chỉ ra rằng trong một cơ sở dữ liệu MySQL, bạn 449 00:23:34,460 --> 00:23:37,460 có chùm lựa chọn như các kiểu dữ liệu cho các cột của bạn 450 00:23:37,460 --> 00:23:41,670 và những thứ khác, nhưng bạn cũng có lựa chọn một lưu trữ được gọi là 451 00:23:41,670 --> 00:23:44,570 động cơ cho tất cả các dữ liệu của bạn, các loại hệ thống tập tin, 452 00:23:44,570 --> 00:23:46,700 nếu bạn đã quen thuộc, cho tất cả các dữ liệu của bạn. 453 00:23:46,700 --> 00:23:48,830 Định dạng gì là cuối cùng nó được lưu trữ trong? 454 00:23:48,830 --> 00:23:53,300 Và phổ biến nhất, có lẽ, đã được MyISAM và InnoDB, thuật ngữ kỹ thuật 455 00:23:53,300 --> 00:23:56,060 rằng chúng tôi sẽ quan tâm chỉ đến mức một trong đó có 456 00:23:56,060 --> 00:23:58,500 và một không có các tính năng sau đây. 457 00:23:58,500 --> 00:24:00,390 >> Giả sử bạn có một chút ký túc xá tủ lạnh. 458 00:24:00,390 --> 00:24:03,030 Và giả sử rằng bạn và của bạn bạn cùng phòng, những người chia sẻ tủ lạnh này, 459 00:24:03,030 --> 00:24:04,682 thực sự thích sữa nói. 460 00:24:04,682 --> 00:24:07,140 Và đây là, trên thực tế, làm thế nào câu chuyện đã nói với tôi con đường trở lại 461 00:24:07,140 --> 00:24:10,890 trong ngày khi tôi lấy một khóa học gọi CS 161 hệ điều hành, mà 462 00:24:10,890 --> 00:24:12,580 tương tự khám phá chủ đề này. 463 00:24:12,580 --> 00:24:13,760 Vì vậy, bạn đã có tủ lạnh này. 464 00:24:13,760 --> 00:24:14,630 Bạn ra khỏi sữa. 465 00:24:14,630 --> 00:24:17,000 Và bạn về nhà, bạn cùng phòng của bạn vẫn còn ở lớp học hoặc bất cứ điều gì, 466 00:24:17,000 --> 00:24:19,208 và bạn quyết định tôi sẽ đi ra ngoài và nhận được một số sữa. 467 00:24:19,208 --> 00:24:22,630 Vì vậy, bạn đóng tủ lạnh, giam các phòng ký túc xá, đi trên đường phố 468 00:24:22,630 --> 00:24:25,330 CVS hoặc bất cứ nơi nào, và nhận được xếp hàng để mua một ít sữa. 469 00:24:25,330 --> 00:24:28,960 >> Trong khi đó, người bạn cùng phòng của bạn được nhà từ lớp học, được vào phòng ký túc xá, 470 00:24:28,960 --> 00:24:31,802 mở tủ lạnh, cũng nhận ra ooph, chúng tôi ra khỏi sữa. 471 00:24:31,802 --> 00:24:33,760 Vì vậy, anh ta hoặc cô đóng tủ lạnh và sau đó xảy ra 472 00:24:33,760 --> 00:24:35,610 để đi đến CVS khác, đó sẽ xảy ra 473 00:24:35,610 --> 00:24:38,470 một khối đi từ CVS khác trong vuông, và được theo dòng 474 00:24:38,470 --> 00:24:40,230 có để có được một ít sữa. 475 00:24:40,230 --> 00:24:42,524 Bây giờ, tất nhiên, một vài phút sau đó, cả hai trở lại, 476 00:24:42,524 --> 00:24:44,690 và tồi tệ nhất của tất cả có thể kết quả đã xảy ra. 477 00:24:44,690 --> 00:24:45,792 Cả hai bạn có sữa. 478 00:24:45,792 --> 00:24:47,500 Và bạn không thực sự như sữa mà nhiều. 479 00:24:47,500 --> 00:24:49,625 Vì vậy, một trong số họ chỉ là sẽ chua tại một số điểm. 480 00:24:49,625 --> 00:24:55,941 Vì vậy, bây giờ bạn có một số tiền quá sữa trong tủ lạnh bởi vì tất cả các lý do tại sao? 481 00:24:55,941 --> 00:24:57,072 >> [Không nghe được] 482 00:24:57,072 --> 00:24:59,780 DAVID Malan: Yeah, bạn không bằng cách nào đó giao tiếp với nhau 483 00:24:59,780 --> 00:25:00,904 mà bạn đã nhận được sữa. 484 00:25:00,904 --> 00:25:04,320 Vì vậy, trong đơn giản nhất cách trong thế giới con người, 485 00:25:04,320 --> 00:25:08,390 làm thế nào bạn có thể tránh ngớ ngẩn này kịch bản xảy ra như vậy 486 00:25:08,390 --> 00:25:09,750 rằng bạn chỉ kết thúc với một. 487 00:25:09,750 --> 00:25:10,840 Văn bản họ, có tốt. 488 00:25:10,840 --> 00:25:12,877 Nhưng làm thế nào khác? 489 00:25:12,877 --> 00:25:13,460 Sau đó ghi chú. 490 00:25:13,460 --> 00:25:14,626 DAVID Malan: Một Giấy ghi việc. 491 00:25:14,626 --> 00:25:17,150 Bất kỳ hình thức giao tiếp mà nói với bạn cùng phòng của bạn 492 00:25:17,150 --> 00:25:18,670 không đi vào tủ lạnh cho sữa. 493 00:25:18,670 --> 00:25:20,440 Tôi sẽ đi trồng cây lại ngày của riêng tôi. 494 00:25:20,440 --> 00:25:22,770 Vì vậy, bằng cách nào đó bạn cần để khóa tài nguyên này. 495 00:25:22,770 --> 00:25:27,180 Vì vậy, chúng tôi có thể làm cho this-- chúng ta có thể loại làm hỏng những câu chuyện và biến thành một câu chuyện CS 496 00:25:27,180 --> 00:25:30,360 nhờ đó mà nghĩ về điều này như giống như một biến, được lưu trữ một số giá trị. 497 00:25:30,360 --> 00:25:32,570 Và ngay bây giờ, giá trị của sữa là số không, 498 00:25:32,570 --> 00:25:35,410 mà bạn không muốn của bạn bạn cùng phòng để kiểm tra biến 499 00:25:35,410 --> 00:25:38,730 và sau đó đưa ra quyết định chính mình dựa trên trạng thái của biến đó 500 00:25:38,730 --> 00:25:42,430 nếu bạn đang trong quá trình thay đổi trạng thái của biến đó. 501 00:25:42,430 --> 00:25:46,140 >> Vì vậy, một trong những dòng của SQL mà chúng ta cung cấp cho bạn trong PSet 7 đặc điểm kỹ thuật 502 00:25:46,140 --> 00:25:47,310 là một trong những điều này ở đây. 503 00:25:47,310 --> 00:25:49,740 Và chúng tôi không chi tiêu một lớn số lượng thời gian nói về nó. 504 00:25:49,740 --> 00:25:55,100 Nhưng hóa ra, nếu bạn đang cố gắng để mua một số cổ phiếu trong tài chính CS50 505 00:25:55,100 --> 00:25:58,000 rằng bạn đã có một số cổ phần của bạn 506 00:25:58,000 --> 00:26:01,750 muốn để có thể làm một số thứ ngay lập tức với nhau. 507 00:26:01,750 --> 00:26:04,360 Bạn muốn để có thể hiệu quả, trên một mức độ cao, 508 00:26:04,360 --> 00:26:06,700 kiểm tra tất cả các bên phải, nếu tôi muốn mua thêm cổ phiếu của miễn phí 509 00:26:06,700 --> 00:26:08,780 chúng tôi cổ phiếu penny nói về trong spec, 510 00:26:08,780 --> 00:26:10,660 Tôi muốn kiểm tra đầu tiên có bao nhiêu cổ phiếu tôi có. 511 00:26:10,660 --> 00:26:11,810 Và giả sử nó năm. 512 00:26:11,810 --> 00:26:14,600 Và giả sử tôi muốn mua 10 hơn, tôi cuối cùng 513 00:26:14,600 --> 00:26:17,069 muốn có 15 cổ phiếu. 514 00:26:17,069 --> 00:26:18,360 Vì vậy, tôi có hỏi hai câu hỏi. 515 00:26:18,360 --> 00:26:20,230 Trạng thái của biến là gì? 516 00:26:20,230 --> 00:26:21,470 Trạng thái của hàng là gì? 517 00:26:21,470 --> 00:26:22,970 Làm thế nào nhiều cổ phiếu không Tôi hiện đang có? 518 00:26:22,970 --> 00:26:24,636 Sau đó, bạn muốn đi trước và cập nhật nó. 519 00:26:24,636 --> 00:26:27,720 Vì vậy, đó là tương tự đến sữa trong đó bạn kiểm tra hàng, 520 00:26:27,720 --> 00:26:30,730 và sau đó bạn muốn cập nhật nó bởi vì nếu bạn muốn mua 10 cổ phiếu, 521 00:26:30,730 --> 00:26:32,521 bạn không muốn thay đổi hàng đến 10, bạn 522 00:26:32,521 --> 00:26:35,300 muốn thay đổi nó để 5 cộng với 10 hoặc, tất nhiên, 15. 523 00:26:35,300 --> 00:26:40,030 >> Dòng mã này đảm bảo rằng hai ý tưởng khái niệm 524 00:26:40,030 --> 00:26:42,810 xảy ra cùng hoặc không gì cả. 525 00:26:42,810 --> 00:26:46,920 Không một ai, kể cả một số người dùng khác những người đăng nhập vào cùng một trang web, 526 00:26:46,920 --> 00:26:49,900 bằng cách nào đó có thể làm gián đoạn việc kiểm tra hàng 527 00:26:49,900 --> 00:26:52,960 và cập nhật hàng, các lựa chọn và cập nhật nếu bạn sẽ. 528 00:26:52,960 --> 00:26:57,360 Và cú pháp không phải là siêu rõ ràng, nhưng một trong những dòng này, dài là nó là, 529 00:26:57,360 --> 00:27:01,150 đảm bảo rằng hai hoạt động kiểm tra các biến hoặc kiểm tra hàng 530 00:27:01,150 --> 00:27:04,660 và cập nhật hàng xảy ra nguyên tử. 531 00:27:04,660 --> 00:27:06,849 >> Oh ở đây chúng tôi đi một lần nữa. 532 00:27:06,849 --> 00:27:07,890 Tin nhắn văn bản trên điện thoại của tôi. 533 00:27:07,890 --> 00:27:09,954 Vì vậy, chúng ta hãy làm một này ít hơn bê tông. 534 00:27:09,954 --> 00:27:12,120 Giả sử rằng bạn không thực hiện một tủ lạnh, 535 00:27:12,120 --> 00:27:16,400 và bạn không thực hiện PSet 7 nhưng một ngân hàng thực tế, 536 00:27:16,400 --> 00:27:20,000 hoặc máy ATM, một Teller tự động Máy, nhờ đó mà bạn bằng cách nào đó 537 00:27:20,000 --> 00:27:22,960 muốn để có thể trao quyền cho người sử dụng để chuyển tiền 538 00:27:22,960 --> 00:27:24,500 từ một tài khoản khác. 539 00:27:24,500 --> 00:27:25,100 OK, treo trên. 540 00:27:25,100 --> 00:27:26,683 Tôi sẽ tắt này ngay bây giờ, cảm ơn bạn. 541 00:27:26,683 --> 00:27:30,450 Vì vậy, chúng tôi muốn chuyển tiền từ một số tài khoản 542 00:27:30,450 --> 00:27:33,600 vào một tài khoản khác nhau số lượng, đặc biệt là $ 100. 543 00:27:33,600 --> 00:27:37,690 Vì vậy, đây là loại một tùy ý Ví dụ, nhờ đó mà bạn, các máy ATM, 544 00:27:37,690 --> 00:27:41,060 có thể muốn thực hiện hai SQL truy vấn, trừ từ một tài khoản, 545 00:27:41,060 --> 00:27:42,430 và thêm vào các tài khoản khác. 546 00:27:42,430 --> 00:27:46,766 Nhưng bạn muốn đảm bảo rằng những hai dòng cả hai xảy ra hoặc không gì cả. 547 00:27:46,766 --> 00:27:48,640 Bạn không muốn một cái gì đó bị gián đoạn. 548 00:27:48,640 --> 00:27:51,440 Bạn làm không phải là một chàng trai thông minh xấu bằng cách nào đó đứng ở Bank of America 549 00:27:51,440 --> 00:27:53,270 với hai máy ATM trước của ông và bằng cách nào đó 550 00:27:53,270 --> 00:27:55,270 loại bằng cách đánh vào lệnh cùng một lúc, 551 00:27:55,270 --> 00:28:01,230 hy vọng cố gắng để khấu trừ $ 200 thay vì $ 100 và chỉ có $ 100 ghi. 552 00:28:01,230 --> 00:28:04,450 Trong ngắn hạn, bạn muốn điều này cư xử chính xác như bạn mong đợi. 553 00:28:04,450 --> 00:28:06,540 >> Và cách bạn làm này trong cơ sở dữ liệu SQL là 554 00:28:06,540 --> 00:28:09,350 bạn bọc nó trong những gì được gọi là một giao dịch. 555 00:28:09,350 --> 00:28:14,290 Nghĩa là trong SQL, bạn có thể gọi CS50 của chức năng truy vấn với báo bắt đầu unquote 556 00:28:14,290 --> 00:28:15,370 giao dịch. 557 00:28:15,370 --> 00:28:18,640 Sau đó, bạn có thể thực hiện bất kỳ số các truy vấn SQL tiếp theo, 558 00:28:18,640 --> 00:28:20,870 nhưng không ai trong số họ mất ảnh hưởng trên cơ sở dữ liệu 559 00:28:20,870 --> 00:28:25,880 cho đến khi bạn gọi truy vấn quote unquote cam kết, nếu một lần nữa bằng cách sử dụng PHP. 560 00:28:25,880 --> 00:28:29,810 Và bằng cách này, bạn có thể đảm bảo rằng thậm chí nếu bạn có 1.000 người sử dụng tất cả 561 00:28:29,810 --> 00:28:32,080 đánh cơ sở dữ liệu của bạn đồng thời, SQL 562 00:28:32,080 --> 00:28:34,540 sẽ hứa hẹn rằng những hai truy vấn sẽ 563 00:28:34,540 --> 00:28:36,740 thực hiện một trong những quyền sau khi khác. 564 00:28:36,740 --> 00:28:40,330 Vì vậy, bạn không kết thúc với quá sữa hoặc một số tiền sai, cuối cùng, 565 00:28:40,330 --> 00:28:40,830 tiền. 566 00:28:40,830 --> 00:28:43,110 >> Vì vậy, giữ điều này trong tâm trí, không quá nhiều cho PSet 7 567 00:28:43,110 --> 00:28:45,250 nhưng đối với các dự án chính thức nếu bạn thực sự 568 00:28:45,250 --> 00:28:49,690 cố gắng để di chuyển dữ liệu xung quanh trên bảng như bạn có thể ở đây. 569 00:28:49,690 --> 00:28:53,980 Nhưng có lẽ còn đơn giản hơn và nhiều hơn nữa rõ ràng để hiểu với một ví dụ 570 00:28:53,980 --> 00:28:54,860 là một trong những điều này ở đây. 571 00:28:54,860 --> 00:28:57,760 Và một người nào đó gửi qua email cho chúng tôi về này chỉ là ngày khác 572 00:28:57,760 --> 00:28:59,600 khi nhìn thấy một cái gì đó trực tuyến tương tự. 573 00:28:59,600 --> 00:29:03,480 >> Vì vậy, để hiểu biết của tôi, hệ thống pin không phải là dễ bị tấn công này. 574 00:29:03,480 --> 00:29:06,637 Và tôi không có ý tưởng nếu nó thậm chí sử dụng cơ sở dữ liệu SQL bên dưới mui xe. 575 00:29:06,637 --> 00:29:08,470 Nhưng chúng ta hãy sử dụng nó cho vì lợi ích của cuộc thảo luận. 576 00:29:08,470 --> 00:29:10,178 Dưới đây là màn hình Folks Harvard có xu hướng 577 00:29:10,178 --> 00:29:13,620 để xem khi đăng nhập với họ Số Harvard ID và pin của họ. 578 00:29:13,620 --> 00:29:19,020 Và giả sử rằng hệ thống pin là thực hiện trong PHP và MySQL với một 579 00:29:19,020 --> 00:29:22,000 cơ sở dữ liệu, mã mà một người nào đó năm có thể đã được viết trước 580 00:29:22,000 --> 00:29:23,270 có thể trông như thế này. 581 00:29:23,270 --> 00:29:25,230 Đầu tiên, khai báo một biến gọi là tên người dùng. 582 00:29:25,230 --> 00:29:27,560 Và chỉ nhận được rằng từ các superglobal POST. 583 00:29:27,560 --> 00:29:30,140 Sau đó nhận được một biến khác gọi là mật khẩu và làm tương tự. 584 00:29:30,140 --> 00:29:33,080 Và sau đó chỉ cần thực hiện truy vấn dài này ở đây, 585 00:29:33,080 --> 00:29:36,690 chọn sao từ những người dùng nơi Tên truy nhập bằng như vậy và như vậy 586 00:29:36,690 --> 00:29:38,510 và mật khẩu bằng như vậy và như vậy. 587 00:29:38,510 --> 00:29:40,660 >> Chú ý rằng xoăn Tôi đã sử dụng dấu ngoặc ở đây 588 00:29:40,660 --> 00:29:42,880 chỉ có nghĩa là để PHP, đi trước và thay thế 589 00:29:42,880 --> 00:29:45,400 giá trị của hai biến ngay tại đó. 590 00:29:45,400 --> 00:29:50,090 Chúng không hoàn toàn cần thiết, nhưng họ có xu hướng để tránh các lỗi cú pháp tinh tế. 591 00:29:50,090 --> 00:29:53,650 Vì vậy, điều này có vẻ hoàn toàn đúng ở cái nhìn đầu tiên. 592 00:29:53,650 --> 00:29:54,240 Và nó được. 593 00:29:54,240 --> 00:29:56,680 Bạn có thể thực hiện hệ thống pin theo cách này. 594 00:29:56,680 --> 00:30:00,460 >> Nhưng giả sử rằng một siêu sinh viên thông minh và độc hại 595 00:30:00,460 --> 00:30:03,020 đầu vào này như pin của mình. 596 00:30:03,020 --> 00:30:05,550 Vì vậy, tôi đã gỡ bỏ viên đạn dấu hiệu ở đây giả lên, 597 00:30:05,550 --> 00:30:08,760 và tôi đã thực sự tiết lộ những gì anh ta hoặc cô ấy có thể đánh máy. 598 00:30:08,760 --> 00:30:10,350 Và đó là một chút lạ. 599 00:30:10,350 --> 00:30:13,850 Nhưng những gì nhảy ra lúc bạn ở khả năng đáng lo ngại về đầu vào của người dùng, 600 00:30:13,850 --> 00:30:16,450 ngay cả khi bạn không có ý tưởng gì một cuộc tấn công SQL injection nghĩa. 601 00:30:16,450 --> 00:30:20,300 Tại sao điều này nhìn một chút tanh? 602 00:30:20,300 --> 00:30:21,050 Đó là những gì? 603 00:30:21,050 --> 00:30:21,550 [Không nghe được] 604 00:30:21,550 --> 00:30:24,260 DAVID Malan: Các hoặc là một chút nghi ngờ. 605 00:30:24,260 --> 00:30:26,310 Trong thực tế, đó là một từ khóa từ SQL. 606 00:30:26,310 --> 00:30:28,105 Vì vậy, đó không phải là điềm tốt. 607 00:30:28,105 --> 00:30:29,980 Thực tế là có tất cả những dấu nháy đơn 608 00:30:29,980 --> 00:30:32,646 there-- trên thực tế, một trong những đơn giản nhất cách để phá vỡ một số cơ sở dữ liệu 609 00:30:32,646 --> 00:30:35,880 là bằng cách gõ vào một tên như O'Reilly có một dấu nháy đơn trong nó 610 00:30:35,880 --> 00:30:38,600 bởi vì nếu con người đã viết mã đằng sau hậu trường 611 00:30:38,600 --> 00:30:41,570 không đưa vào tài khoản đó có có thể là dấu ngoặc đơn trong một của người sử dụng 612 00:30:41,570 --> 00:30:45,060 đầu vào, và người đó đang sử dụng dấu ngoặc đơn trong mã của họ, 613 00:30:45,060 --> 00:30:46,040 những điều xấu có thể xảy ra. 614 00:30:46,040 --> 00:30:47,870 >> Trong thực tế, tệ hơn nữa, xem xét việc này. 615 00:30:47,870 --> 00:30:50,600 Nếu đây là một lần nữa mã rằng một người nào đó tại Đại học Harvard năm 616 00:30:50,600 --> 00:30:53,100 trước đây đã viết cho pin hệ thống, chú ý những gì 617 00:30:53,100 --> 00:30:56,220 về để thay thế tên đăng nhập và mật khẩu 618 00:30:56,220 --> 00:30:59,780 nếu sử dụng các loại trong một lần nữa skroob như tên người dùng của họ 619 00:30:59,780 --> 00:31:03,960 và sau đó một, hai, ba, bốn, năm, trích dẫn hoặc trích dẫn unquote một equals 620 00:31:03,960 --> 00:31:04,660 trích dẫn một. 621 00:31:04,660 --> 00:31:07,220 Và hãy chú ý những gì quan trọng ở đây là người sử dụng đã không 622 00:31:07,220 --> 00:31:09,900 bắt đầu mật khẩu của họ hoặc pin của họ với một báo giá. 623 00:31:09,900 --> 00:31:12,610 Và họ đã không kết thúc nó với một báo vì anh ta hoặc cô 624 00:31:12,610 --> 00:31:16,315 là giả định rằng nếu lập trình viên không quá sắc nét, 625 00:31:16,315 --> 00:31:18,690 họ sẽ có những dấu ngoặc đơn trong mã của họ. 626 00:31:18,690 --> 00:31:19,860 >> Vì vậy, đây là các mã. 627 00:31:19,860 --> 00:31:23,820 Và thay thế mà bây giờ có thể xảy ra là điều này. 628 00:31:23,820 --> 00:31:26,350 Và tôi đã nhấn mạnh những gì người dùng đã gõ trong. 629 00:31:26,350 --> 00:31:28,480 Vì vậy, trước, sau. 630 00:31:28,480 --> 00:31:33,330 Và hãy chú ý những gì nhẹ nhàng đáng lo ngại hiện nay về nửa bên phải của mã SQL này? 631 00:31:33,330 --> 00:31:36,300 Đó là một chút phức tạp hơn, phải thừa nhận rằng, hơn các truy vấn, chúng tôi đã nhìn thấy. 632 00:31:36,300 --> 00:31:38,550 Nhưng điều này không có thể có thể là một điều tốt nếu bạn 633 00:31:38,550 --> 00:31:42,240 nói chọn ngôi sao, mà là chọn tất cả mọi thứ từ bảng của người dùng 634 00:31:42,240 --> 00:31:46,630 nơi tên người dùng bằng skroob và mật khẩu bằng một, hai, ba, bốn, 635 00:31:46,630 --> 00:31:49,610 năm hoặc một bằng với một. 636 00:31:49,610 --> 00:31:53,860 Hàm ý logic là gì trong đó điều khoản cuối cùng có lẽ? 637 00:31:53,860 --> 00:31:55,650 Nó chỉ là luôn luôn đúng. 638 00:31:55,650 --> 00:31:59,930 >> Và bởi vì chúng tôi đã loại đoán hoặc tìm ra bằng cách thử và sai 639 00:31:59,930 --> 00:32:02,760 mà các lập trình viên đã viết mã này đã không 640 00:32:02,760 --> 00:32:07,250 dự đoán một con người hay xấu gõ trong dấu ngoặc đơn là tốt, 641 00:32:07,250 --> 00:32:10,350 chúng ta có thể cú pháp hoàn thành các truy vấn SQL 642 00:32:10,350 --> 00:32:12,260 với một cái gì đó vô nghĩa nhưng cái gì đó 643 00:32:12,260 --> 00:32:15,930 là cú pháp không chính xác mà luôn luôn đánh giá đúng sự thật. 644 00:32:15,930 --> 00:32:19,130 Vì vậy, nếu mã này đang được sử dụng để trả lời các câu hỏi đúng hay sai nên 645 00:32:19,130 --> 00:32:22,930 người sử dụng này được cho phép để vượt qua, các Câu trả lời là luôn luôn rõ ràng đi 646 00:32:22,930 --> 00:32:26,930 là đúng vì đây là luôn luôn đi để chọn một cái gì đó từ cơ sở dữ liệu 647 00:32:26,930 --> 00:32:29,280 bởi vì một trong những quá trình luôn luôn tương đương với một. 648 00:32:29,280 --> 00:32:30,360 >> Vì vậy, giải pháp là gì? 649 00:32:30,360 --> 00:32:33,290 Cũng trong PSet 7, chúng tôi thực sự tránh điều này tất cả cùng nhau. 650 00:32:33,290 --> 00:32:37,360 Chúng tôi cung cấp cho bạn một chức năng truy vấn, và chúng tôi khuyến khích bạn sử dụng dấu hỏi 651 00:32:37,360 --> 00:32:40,430 như giữ chỗ, tương tự trong tinh thần của printf% s, 652 00:32:40,430 --> 00:32:43,710 nhưng những gì là quan trọng về các dấu hỏi ở đây là nếu bạn thực sự đọc qua 653 00:32:43,710 --> 00:32:46,950 functions.php, nơi chúng tôi chức năng truy vấn được thực hiện, 654 00:32:46,950 --> 00:32:52,780 những dấu hỏi đang trốn thoát, theo đó bất cứ điều gì nguy hiểm tiềm tàng 655 00:32:52,780 --> 00:32:58,210 như một giá duy nhất được bật vào một giá duy nhất trốn thoát. 656 00:32:58,210 --> 00:33:00,590 >> Vì vậy, đây là những gì thực sự xảy ra nếu bạn 657 00:33:00,590 --> 00:33:04,850 sử dụng chức năng truy vấn CS50 hoặc bất kỳ số của bên thứ ba thư viện miễn phí 658 00:33:04,850 --> 00:33:06,000 làm như vậy. 659 00:33:06,000 --> 00:33:09,850 Không quan trọng trong trường hợp này, màu xanh lá cây, nếu người dùng đã gõ vào một giá duy nhất 660 00:33:09,850 --> 00:33:12,070 vì các truy vấn chức năng mà chúng tôi đã viết là 661 00:33:12,070 --> 00:33:15,120 sẽ thêm gạch chéo ngược trước bất kỳ báo nguy hiểm như vậy. 662 00:33:15,120 --> 00:33:17,360 Vì vậy, đây không phải là, trong Trên thực tế, sẽ là hợp pháp. 663 00:33:17,360 --> 00:33:20,910 Điều này giống như cách gõ một tìm kiếm điên mật khẩu đó là, tất nhiên, sẽ không 664 00:33:20,910 --> 00:33:23,490 được mật khẩu thực tế của skroob. 665 00:33:23,490 --> 00:33:28,260 >> Vì vậy, các takeaway cho CS50 là một, hoàn toàn luôn luôn sử dụng một cái gì đó 666 00:33:28,260 --> 00:33:30,860 giống như chức năng truy vấn của CS50 hoặc các thư viện cơ bản, 667 00:33:30,860 --> 00:33:32,560 mà xảy ra được gọi là PDO. 668 00:33:32,560 --> 00:33:35,880 Nhưng không bao giờ, không bao giờ, không bao giờ làm mã như thế này 669 00:33:35,880 --> 00:33:39,472 mà không cần thoát ra hoặc cọ rửa như họ nói đầu vào của bạn. 670 00:33:39,472 --> 00:33:42,430 Và bạn sẽ ở một số điểm có thể đi qua một số trang web như thế này. 671 00:33:42,430 --> 00:33:46,060 Trong thực tế, nó có vẻ là trường hợp như tại các sân bay và khách sạn ở những nơi 672 00:33:46,060 --> 00:33:48,880 nơi họ có Wi-Fi miễn phí truy cập mà bạn có để đăng nhập vào, 673 00:33:48,880 --> 00:33:51,010 các trang web này là luôn luôn thực hiện khủng khiếp. 674 00:33:51,010 --> 00:33:55,680 Và do đó, một loại vui vẻ tại nhà tập thể dục, không nhằm mục đích độc hại hoặc nhiều hơn 675 00:33:55,680 --> 00:33:59,170 của một niềm vui trên đường tập thể dục, là để chỉ cần gõ 676 00:33:59,170 --> 00:34:02,850 một dấu nháy đơn, một giá duy nhất, thành một hình thức trên một số trang web 677 00:34:02,850 --> 00:34:03,810 và xem những gì sẽ xảy ra. 678 00:34:03,810 --> 00:34:06,660 Và nếu máy chủ bị treo hoặc cho bạn một số loại thông báo lỗi, 679 00:34:06,660 --> 00:34:09,690 nó rất tốt có thể là ai đó đã không dự đoán này. 680 00:34:09,690 --> 00:34:15,239 Và sau đó bạn nên cảnh báo thích hợp quyền hạn và tham gia thảo luận thêm. 681 00:34:15,239 --> 00:34:20,843 >> Vì vậy bây giờ các bạn nên hy vọng hiểu thêm một chút đam mê hài hước ở đây. 682 00:34:20,843 --> 00:34:24,120 >> [Cười] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID Malan: Bạn biết bạn là một geek. 685 00:34:29,070 --> 00:34:30,944 Đối với một số tiếp theo năm, bạn sẽ nhớ 686 00:34:30,944 --> 00:34:33,520 người ít Bobby Bàn là vì phim hoạt hình này ở đây. 687 00:34:33,520 --> 00:34:36,760 Vì vậy, giữ cho rằng trong tâm trí như chúng tôi bối cảnh chuyển đổi một lần cuối cùng 688 00:34:36,760 --> 00:34:38,770 ngày hôm nay để JavaScript. 689 00:34:38,770 --> 00:34:41,600 Chúng tôi đã dành tương đối ít thời gian về cú pháp của PHP 690 00:34:41,600 --> 00:34:43,440 bởi vì nó thực sự siêu tương tự như C. 691 00:34:43,440 --> 00:34:47,300 Và độc đáo đủ, JavaScript quá là siêu tương tự như cú pháp của C 692 00:34:47,300 --> 00:34:49,639 cũng như chúng ta sẽ thấy trong chỉ là một thời điểm và như chúng ta sẽ thấy 693 00:34:49,639 --> 00:34:51,205 xem cuối tuần này nói riêng. 694 00:34:51,205 --> 00:34:54,080 Những gì bạn có thể làm với ngôn ngữ này, Mặc dù vậy, là tất cả các mạnh hơn, 695 00:34:54,080 --> 00:34:55,790 đặc biệt là với các API. 696 00:34:55,790 --> 00:34:56,960 >> Nhưng đầu tiên một tour du lịch nhanh chóng. 697 00:34:56,960 --> 00:35:00,450 Vì vậy, một trong JavaScript, có không có chức năng chính, đó là tốt đẹp. 698 00:35:00,450 --> 00:35:02,650 Như với PHP, bạn chỉ có thể viết mã. 699 00:35:02,650 --> 00:35:04,310 Điều kiện giống như thế này. 700 00:35:04,310 --> 00:35:07,100 Và biểu thức Boolean might giống như thế này hoặc như thế này. 701 00:35:07,100 --> 00:35:09,530 Thiết bị chuyển mạch tồn tại, và họ có thể trông như thế này. 702 00:35:09,530 --> 00:35:10,970 Bốn vòng giống như thế này. 703 00:35:10,970 --> 00:35:12,390 Trong khi vòng giống như thế này. 704 00:35:12,390 --> 00:35:14,160 Làm tuy rằng giống như thế này. 705 00:35:14,160 --> 00:35:16,850 Và sau đó mảng trông giống như này, rất giống với PHP. 706 00:35:16,850 --> 00:35:20,740 Nhưng chú ý, rằng trong JavaScript bạn khai báo một biến không có một đồng đô la 707 00:35:20,740 --> 00:35:25,190 đăng ký, không phải với một kiểu dữ liệu nhưng theo nghĩa đen bằng cách nói var cho biến trước khi nó. 708 00:35:25,190 --> 00:35:27,900 Nó cũng là loại lỏng lẻo trong đó có các loại, 709 00:35:27,900 --> 00:35:29,729 nhưng bạn không khai báo rõ ràng họ. 710 00:35:29,729 --> 00:35:31,520 Và sau đó là một chuỗi, cho Ví dụ, có thể trông 711 00:35:31,520 --> 00:35:34,350 như thế này, chuỗi được gọi là s trong trường hợp này. 712 00:35:34,350 --> 00:35:35,410 Và sau đó một đối tượng. 713 00:35:35,410 --> 00:35:37,010 Và những chúng ta sẽ thấy nhiều hơn trước khi dài. 714 00:35:37,010 --> 00:35:41,470 Và một đối tượng có lẽ là một trong những phổ biến nhất là nhìn thấy cấu trúc dữ liệu 715 00:35:41,470 --> 00:35:44,050 trong một JavaScript dựa chương trình vì nó cho phép 716 00:35:44,050 --> 00:35:46,680 bạn kết hợp tùy ý cặp giá trị quan trọng chỉ 717 00:35:46,680 --> 00:35:51,240 như mảng kết hợp PHP và cũng giống như bảng băm của riêng bạn 718 00:35:51,240 --> 00:35:54,042 hoặc cố gắng như chúng tôi thực hiện một vài tuần trở lại. 719 00:35:54,042 --> 00:35:56,250 Vì vậy, hãy thực sự nhìn thấy những gì chúng ta có thể làm gì với JavaScript. 720 00:35:56,250 --> 00:35:59,410 Và đặc biệt, đây là một danh sách dài dằng dặc các tính năng 721 00:35:59,410 --> 00:36:02,300 mà các trình duyệt có mà cho phép chúng tôi để treo JavaScript 722 00:36:02,300 --> 00:36:05,470 vào một trang web theo cách sau. 723 00:36:05,470 --> 00:36:09,340 JavaScript thường được sử dụng như một phía khách hàng ngôn ngữ kịch bản. 724 00:36:09,340 --> 00:36:10,130 Nó không được biên dịch. 725 00:36:10,130 --> 00:36:11,370 Nó cũng được giải thích. 726 00:36:11,370 --> 00:36:15,740 Nhưng không giống như PHP, đã được chạy trên máy chủ, trong máy chủ web, 727 00:36:15,740 --> 00:36:18,220 hoặc bên trong sâu sắc của khách hàng, JavaScript 728 00:36:18,220 --> 00:36:22,190 là khác nhau ở chỗ nó thường chạy trong trình duyệt. 729 00:36:22,190 --> 00:36:26,060 >> Vì vậy, bất kỳ mã JavaScript bạn bắt đầu viết cho PSet 8, hoặc dự án cuối cùng của bạn, 730 00:36:26,060 --> 00:36:29,890 hoặc trong thế giới thực thường đi được lưu trên máy chủ, hoàn toàn 731 00:36:29,890 --> 00:36:33,110 trong một HTML dấu chấm hoặc dấu chấm JS cho tập tin JavaScript. 732 00:36:33,110 --> 00:36:35,770 Tuy nhiên, trình duyệt sẽ để tải về JavaScript 733 00:36:35,770 --> 00:36:39,530 mã để dụ của riêng bạn của Chrome, hoặc IE hoặc Firefox, hoặc bất cứ điều gì. 734 00:36:39,530 --> 00:36:43,870 Và đang thực sự sẽ nhận được thực hiện bên trong trình duyệt của bạn. 735 00:36:43,870 --> 00:36:46,560 Chỉ cần thực hiện điều này thực tế hơn, chúng ta thấy điều này trong hình thức cụ thể. 736 00:36:46,560 --> 00:36:50,120 >> Chúng tôi không có ý tưởng những gì mã này không mà không thực sự đọc qua nó. 737 00:36:50,120 --> 00:36:52,670 Nhưng hãy để tôi đi đến Facebook.com mà không cần đăng nhập. 738 00:36:52,670 --> 00:37:00,440 Hãy để tôi đi đến Kiểm tra Element và đi đến, hãy nói, mạng và nạp lại trang. 739 00:37:00,440 --> 00:37:04,150 Và chúng ta sẽ see-- cho tôi chuyển Nạp lại các Trang để có được tất cả các yêu cầu mới. 740 00:37:04,150 --> 00:37:08,850 Và đầu tiên tập tin tôi thấy là CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Đây là lần đầu tiên Tập tin JavaScript, và tôi có 742 00:37:10,880 --> 00:37:14,600 không biết điều này không, nhưng ở đây là một số mã JavaScript 743 00:37:14,600 --> 00:37:16,180 mà các ổ đĩa Facebook. 744 00:37:16,180 --> 00:37:18,400 Nó thậm chí không thực sự tiết lộ để phóng to. 745 00:37:18,400 --> 00:37:20,260 Nó vẫn chỉ là vô nghĩa. 746 00:37:20,260 --> 00:37:24,341 >> Nhưng bạn sẽ thấy thậm chí xuống dưới, có thậm chí nhiều hơn các tập tin JavaScript. 747 00:37:24,341 --> 00:37:24,840 Lỗi chính. 748 00:37:24,840 --> 00:37:25,440 Đó là một ping. 749 00:37:25,440 --> 00:37:28,550 Hãy đi xuống một chút hơn nữa, hơn nữa, hơn nữa. 750 00:37:28,550 --> 00:37:29,894 Có một. 751 00:37:29,894 --> 00:37:31,238 Có một. 752 00:37:31,238 --> 00:37:31,880 Có một. 753 00:37:31,880 --> 00:37:35,820 >> Vì vậy, mặc dù Facebook, đằng sau cảnh, được viết bằng một phần trong PHP 754 00:37:35,820 --> 00:37:39,100 và phiên bản riêng đó của Facebook, có một số tiền rất lớn của JavaScript. 755 00:37:39,100 --> 00:37:41,330 Trong thực tế, bất kỳ trò chuyện bạn làm trên Facebook, 756 00:37:41,330 --> 00:37:45,520 bất kỳ bản cập nhật nội tuyến thời gian điều đó xảy ra trong thời gian thực, tất cả điều đó 757 00:37:45,520 --> 00:37:47,944 được thúc đẩy bởi JavaScript. 758 00:37:47,944 --> 00:37:48,444 Yeah? 759 00:37:48,444 --> 00:37:50,235 >> Đung Tôi không chắc chắn nếu điều này là Facebook, 760 00:37:50,235 --> 00:37:53,624 nhưng tôi nghĩ rằng Facebook phát triển ngôn ngữ trong nhà mã? riêng mình 761 00:37:53,624 --> 00:37:54,540 DAVID Malan: Họ đã làm. 762 00:37:54,540 --> 00:37:58,110 Vì vậy, đó là lý do tại sao tôi nói một phương sai của PHP gọi là Hip Hop rằng họ thực sự 763 00:37:58,110 --> 00:38:03,440 tính năng thêm vào như vậy mà khi Đánh dấu đầu tiên thực hiện Facebook, 764 00:38:03,440 --> 00:38:04,710 nó được viết bằng PHP. 765 00:38:04,710 --> 00:38:07,370 Và đó là loại vẫn các loại ngôn ngữ kết thúc trước 766 00:38:07,370 --> 00:38:09,030 mà họ sử dụng cho nhiều mã hóa của họ, nhưng nó 767 00:38:09,030 --> 00:38:11,870 không phải là một ngôn ngữ đó là quy mô đặc biệt tốt với tỷ 768 00:38:11,870 --> 00:38:12,630 của người dân. 769 00:38:12,630 --> 00:38:15,300 Và vì vậy họ đã thêm của mình cải tiến đằng sau hậu trường. 770 00:38:15,300 --> 00:38:17,049 Và họ sử dụng bất kỳ số các ngôn ngữ khác 771 00:38:17,049 --> 00:38:19,170 cho phần khác nhau của cơ sở hạ tầng của họ. 772 00:38:19,170 --> 00:38:24,080 Vì vậy, có, đó là một sai của những gì chúng ta biết như PHP. 773 00:38:24,080 --> 00:38:26,610 >> Vì vậy, chúng ta hãy có một cái nhìn ở một vài ví dụ 774 00:38:26,610 --> 00:38:28,890 làm thế nào chúng ta có thể sử dụng JavaScript ở đây. 775 00:38:28,890 --> 00:38:32,530 Trong mã nguồn của ngày hôm nay, chúng ta có một bó của tập tin, người đầu tiên trong số đó, 776 00:38:32,530 --> 00:38:34,090 chúng ta hãy gọi là DOM không. 777 00:38:34,090 --> 00:38:36,770 Vì vậy, DOM không trông như sau. 778 00:38:36,770 --> 00:38:40,730 Hãy để tôi đi vào thư mục này và mở ra domzero.html, 779 00:38:40,730 --> 00:38:44,970 đầu trong đó có một loại doc tuyên bố, nói rằng ở đây có HTML 5. 780 00:38:44,970 --> 00:38:46,440 Và giờ đây là một thẻ HTML. 781 00:38:46,440 --> 00:38:47,540 Đây là thẻ đầu. 782 00:38:47,540 --> 00:38:49,210 Và đây là những gì ngày hôm nay là mới. 783 00:38:49,210 --> 00:38:52,620 >> Bây giờ chúng ta có một thẻ script bên trong của người đứng đầu của trang. 784 00:38:52,620 --> 00:38:55,290 Và điều này dường như không rất ít, nhưng thông báo 785 00:38:55,290 --> 00:38:58,410 mà tôi đã xác định một kịch bản, một JavaScript. 786 00:38:58,410 --> 00:39:01,050 Và như một sang một bên, vì đây là một quan niệm sai lầm phổ biến, 787 00:39:01,050 --> 00:39:05,220 JavaScript đã hoàn toàn không có gì để làm với Java, ngôn ngữ 788 00:39:05,220 --> 00:39:08,010 rằng một số bạn có thể đã học được ở APCS. 789 00:39:08,010 --> 00:39:10,480 Đó là chi tiết của một thị điều hơn bất cứ điều gì, 790 00:39:10,480 --> 00:39:12,980 cưỡi coattails của Java năm trước. 791 00:39:12,980 --> 00:39:17,300 Nhưng JavaScript, không có gì để làm với Java, chỉ tương tự, và khó chịu, 792 00:39:17,300 --> 00:39:18,480 gây nhầm lẫn với tên. 793 00:39:18,480 --> 00:39:21,890 >> Vì vậy, đây là cách bạn khai báo một hàm trong JavaScript, nghĩa là nói năng, 794 00:39:21,890 --> 00:39:24,556 sau đó tên của các chức năng, sau đó bất kỳ đối số nó có thể mất, 795 00:39:24,556 --> 00:39:25,530 giống như trong PHP. 796 00:39:25,530 --> 00:39:28,990 Hóa ra trong JavaScript, một trong những nhất chức năng gây phiền nhiễu mà tồn tại là thông báo. 797 00:39:28,990 --> 00:39:31,392 Đây là một cửa sổ nhỏ mà sẽ bật lên và cảnh báo bạn 798 00:39:31,392 --> 00:39:32,600 một số mẩu thông tin. 799 00:39:32,600 --> 00:39:33,766 Nó thường được tán thành. 800 00:39:33,766 --> 00:39:35,980 Nhưng chúng tôi sẽ sử dụng nó như của chúng tôi tập thể dục đầu tiên ở đây. 801 00:39:35,980 --> 00:39:37,900 >> Chú ý một vài tính năng của JavaScript. 802 00:39:37,900 --> 00:39:41,524 Dấu nháy đơn và dấu ngoặc kép không thực sự là vấn đề nữa. 803 00:39:41,524 --> 00:39:43,690 Dấu nháy đơn và đôi dấu ngoặc kép có thể được thay đổi cho nhau, 804 00:39:43,690 --> 00:39:46,220 trong khi ở C, bạn phải sử dụng dấu ngoặc kép cho chuỗi, 805 00:39:46,220 --> 00:39:48,150 và bạn có hai đơn trích dẫn cho các ký tự. 806 00:39:48,150 --> 00:39:51,150 Trong thế giới JavaScript, nhiều người, hầu hết mọi người 807 00:39:51,150 --> 00:39:54,970 sử dụng dấu ngoặc kép xung quanh dây chỉ vì nó là một điều phong cách. 808 00:39:54,970 --> 00:39:58,330 Tuy nhiên, các nhà điều hành cộng với những gì ở đây, mà chúng tôi đã không nhìn thấy trước? 809 00:39:58,330 --> 00:39:59,836 >> Đung Nối. 810 00:39:59,836 --> 00:40:00,960 DAVID Malan: Nối. 811 00:40:00,960 --> 00:40:02,450 Vì vậy, C thậm chí không có điều này. 812 00:40:02,450 --> 00:40:04,820 PHP có dấu chấm, thực hiện điều này. 813 00:40:04,820 --> 00:40:09,710 JavaScript có các nhà điều hành cộng, đó gây nhầm lẫn là giống như Java. 814 00:40:09,710 --> 00:40:11,440 Bây giờ những gì đang xảy ra ở đây? 815 00:40:11,440 --> 00:40:14,260 >> Vì vậy, đây là nơi mà một cơ bản sự hiểu biết về hình ảnh mà 816 00:40:14,260 --> 00:40:17,010 chúng tôi đã ném lên một vài ngày trước đến chơi. 817 00:40:17,010 --> 00:40:19,620 Nhớ khi chúng ta đã có một đơn giản phiên bản của một HTML page-- 818 00:40:19,620 --> 00:40:20,830 nó chỉ nói, xin chào thế giới. 819 00:40:20,830 --> 00:40:22,770 Và sau đó chúng tôi đã vẽ một cây bên phải, mà 820 00:40:22,770 --> 00:40:27,320 đã có một loạt các hình chữ nhật và dòng kết nối chúng như một cây gia đình. 821 00:40:27,320 --> 00:40:30,820 Vì vậy, đó là cái gọi là DOM hoặc Document Object Model. 822 00:40:30,820 --> 00:40:36,759 Và nó chỉ ra rằng bạn có thể truy cập hình chữ nhật ở cây đó với cú pháp 823 00:40:36,759 --> 00:40:37,550 như sau. 824 00:40:37,550 --> 00:40:41,370 Bạn có nghĩa là nói tài liệu, mà là một biến toàn cầu đặc biệt trong JavaScript 825 00:40:41,370 --> 00:40:45,890 chương trình có một chức năng liên kết với nó mà bạn có thể truy cập 826 00:40:45,890 --> 00:40:50,280 tương tự như một cấu trúc, nhưng bạn chỉ đơn giản nói dấu chấm và sau đó tên của chức năng, 827 00:40:50,280 --> 00:40:52,390 có được yếu tố của ID. 828 00:40:52,390 --> 00:40:55,460 >> Các yếu tố tôi muốn nhận được là rõ ràng trích dẫn tên unquote. 829 00:40:55,460 --> 00:40:57,150 Và sau đó tôi muốn để có được giá trị của nó. 830 00:40:57,150 --> 00:40:58,330 Bây giờ chúng tôi đang nhận trước của mình. 831 00:40:58,330 --> 00:41:00,038 Tôi thậm chí không chắc chắn những gì tất cả điều này là về. 832 00:41:00,038 --> 00:41:03,000 Hãy đến HTML nhanh về phía trước trên trang, mà là siêu đơn giản. 833 00:41:03,000 --> 00:41:05,370 >> Chú ý rằng tôi đã xác định một hình xuống đây. 834 00:41:05,370 --> 00:41:07,940 Thông báo của tôi đã cho nó một độc đáo ID, mặc dù chúng tôi đã không được sử dụng 835 00:41:07,940 --> 00:41:08,870 thuộc tính này trước đây. 836 00:41:08,870 --> 00:41:11,300 Nhưng điều này tồn tại trong HTML. 837 00:41:11,300 --> 00:41:15,570 Bạn duy nhất có thể xác định một số đoạn của HTML với một định danh như thế này. 838 00:41:15,570 --> 00:41:19,880 >> Thông báo tại this-- quay ra HTML hỗ trợ, mỗi rằng danh sách giặt ủi 839 00:41:19,880 --> 00:41:22,490 một thời điểm trước đây, toàn bộ loạt các xử lý sự kiện. 840 00:41:22,490 --> 00:41:25,060 Và xử lý sự kiện này nói trên nộp. 841 00:41:25,060 --> 00:41:28,730 Trên trình sử dụng này hình thức, gọi đoạn mã sau. 842 00:41:28,730 --> 00:41:31,360 Và mã số đó đang xảy ra để được gọi là hoặc thực hiện 843 00:41:31,360 --> 00:41:35,260 là chính xác này, Hy Lạp chức năng sau đó trở về sai. 844 00:41:35,260 --> 00:41:37,360 Mọi thứ khác nên được khá quen thuộc. 845 00:41:37,360 --> 00:41:42,050 >> Dưới đây là một đầu vào của các loại văn bản, mà ID, trong trường hợp này, là có được tên. 846 00:41:42,050 --> 00:41:45,430 Chúng tôi không có một thuộc tính tên thực tế time-- này và một nút gửi. 847 00:41:45,430 --> 00:41:48,330 Vì vậy, trang kết quả sẽ như thế này. 848 00:41:48,330 --> 00:41:52,890 Và hành vi đưa, bạn sẽ thấy, trông như thế này. 849 00:41:52,890 --> 00:41:56,940 Các trang web nó host địa phương cho biết, hello David, hầu như không một thẩm mỹ 850 00:41:56,940 --> 00:41:58,340 cách để chào đón một người sử dụng. 851 00:41:58,340 --> 00:41:59,950 Nhưng những gì đang thực sự xảy ra? 852 00:41:59,950 --> 00:42:01,360 >> Vâng, hãy xem xét điều này. 853 00:42:01,360 --> 00:42:02,310 Đây là một lĩnh vực văn bản. 854 00:42:02,310 --> 00:42:04,635 Và theo HTML ở đây, tôi đã cho nó 855 00:42:04,635 --> 00:42:07,350 một định danh duy nhất gọi là quote tên unquote. 856 00:42:07,350 --> 00:42:09,770 Trong khi đó, tôi đã nói khi người dùng gửi biểu mẫu này 857 00:42:09,770 --> 00:42:13,820 bằng cách nhấn Enter hoặc nhấp chuột Gửi nút, gọi hàm gọi là Greet 858 00:42:13,820 --> 00:42:15,410 và sau đó trở về False. 859 00:42:15,410 --> 00:42:16,870 Hãy xem xét những ngược lại. 860 00:42:16,870 --> 00:42:20,590 Chú ý khi tôi bấm Submit, URL của trang này không thay đổi. 861 00:42:20,590 --> 00:42:22,420 Biểu tượng của trình duyệt đã không bắt đầu quay. 862 00:42:22,420 --> 00:42:27,050 Tôi đã không đi bất cứ nơi nào, và đó là nghĩa đen bởi vì tôi nói trở lại False. 863 00:42:27,050 --> 00:42:31,534 Quay trở lại mạch ngắn False hoặc dừng hành vi mặc định của một hình thức. 864 00:42:31,534 --> 00:42:33,700 Vì vậy mà sau đó lại cho chúng ta một câu hỏi cuối cùng này. 865 00:42:33,700 --> 00:42:34,764 Không Greet làm gì? 866 00:42:34,764 --> 00:42:36,680 Vâng, chào rõ ràng gọi một chức năng được gọi là 867 00:42:36,680 --> 00:42:39,250 Alert, đi qua một tranh luận dài đó là 868 00:42:39,250 --> 00:42:43,950 kết quả của việc ghép lại với nhau một loạt các chuỗi con, xin chào không gian dấu phẩy, 869 00:42:43,950 --> 00:42:45,810 sau đó bất cứ điều gì này trả về. 870 00:42:45,810 --> 00:42:51,490 Vì vậy, tài liệu giống như một toàn cầu biến cho rằng gốc rễ của cây, 871 00:42:51,490 --> 00:42:55,560 gọi một chức năng đặc biệt, nếu không thì bây giờ được gọi là một phương pháp. 872 00:42:55,560 --> 00:42:57,650 Một chức năng mà bên trong của một biến là 873 00:42:57,650 --> 00:42:59,640 được gọi là một phương pháp thay vì một chức năng. 874 00:42:59,640 --> 00:43:01,570 >> Vì vậy, có được yếu tố của ID. 875 00:43:01,570 --> 00:43:03,940 Yếu tố gì làm bạn muốn nhận được bằng ID của nó? 876 00:43:03,940 --> 00:43:06,970 Trích dẫn tên và unquote sau đó đặc biệt có giá trị. 877 00:43:06,970 --> 00:43:12,000 Vì vậy, nói cách khác, quy tắc mà chỉ đơn giản tìm thấy lĩnh vực văn bản có ID là tên 878 00:43:12,000 --> 00:43:13,380 và sau đó nhận được giá trị của nó. 879 00:43:13,380 --> 00:43:16,460 Vì vậy, nếu tôi được là để thay đổi điều này và nói Davin thay vì David, 880 00:43:16,460 --> 00:43:20,670 và nhấn Submit, bây giờ chúng tôi có một lời chào cho Davin. 881 00:43:20,670 --> 00:43:22,890 >> Tất cả các bên phải, vì vậy tất cả tốt và tốt. 882 00:43:22,890 --> 00:43:25,480 Nhưng chúng ta hãy xem nếu chúng ta có thể làm cho này một chút sạch hơn kể từ khi chỉ 883 00:43:25,480 --> 00:43:28,190 viết code như thế này là nói chung sẽ được tán thành. 884 00:43:28,190 --> 00:43:30,060 Điều này sẽ trông đáng sợ. 885 00:43:30,060 --> 00:43:32,330 Nhưng điều đầu tiên sự khác biệt mà bạn lưu ý ở đây 886 00:43:32,330 --> 00:43:35,970 trong phiên bản này ngoài tên thay đổi để DOM một? 887 00:43:35,970 --> 00:43:41,110 Những gì cấu trúc trông khác nhau về điều này so với người khác? 888 00:43:41,110 --> 00:43:41,932 Yeah? 889 00:43:41,932 --> 00:43:43,890 Đung là các hình thức trên đầu của kịch bản bây giờ? 890 00:43:43,890 --> 00:43:46,570 DAVID Malan: Yeah, hình thức là trên đầu trang của kịch bản cho một số lý do tò mò. 891 00:43:46,570 --> 00:43:48,736 Vì vậy, đó là điều đầu tiên mà nhảy ra khỏi tôi, quá. 892 00:43:48,736 --> 00:43:50,990 Và may mắn ít nhất, phần này là giống hệt nhau. 893 00:43:50,990 --> 00:43:53,470 Vì vậy, điều duy nhất có thể là khác nhau là điều này. 894 00:43:53,470 --> 00:43:55,296 >> Vì vậy, đây là những gì gọn gàng về JavaScript 2. 895 00:43:55,296 --> 00:43:57,420 Và nó làm cho nó khó khăn để hiểu ở cái nhìn đầu tiên, 896 00:43:57,420 --> 00:44:00,670 đặc biệt là cho các dự án cuối cùng nếu bạn đang tìm kiếm mẫu mã trực tuyến, 897 00:44:00,670 --> 00:44:04,200 nhưng nó nắm đến một số tính năng cơ bản cú pháp. 898 00:44:04,200 --> 00:44:06,230 Ở đây một lần nữa là tài liệu biến toàn cầu. 899 00:44:06,230 --> 00:44:09,540 Ở đây lại là phương pháp hay chức năng mà nói được những yếu tố của ID. 900 00:44:09,540 --> 00:44:11,570 Thời gian này tôi muốn có được ID gọi là demo. 901 00:44:11,570 --> 00:44:12,490 Ở đâu đó? 902 00:44:12,490 --> 00:44:15,400 Đó là rõ ràng ngay ở đây, hình thức riêng của mình. 903 00:44:15,400 --> 00:44:20,010 >> Và bây giờ nhận thấy rằng dường như nếu tôi lấy lại nút đó từ cây 904 00:44:20,010 --> 00:44:22,940 đại diện cho các hình thức chính nó, không phải là một trường văn bản, 905 00:44:22,940 --> 00:44:26,970 nó quay ra hình thức đó, mà nút hoặc hình chữ nhật từ cây, 906 00:44:26,970 --> 00:44:30,450 có những gì chúng ta sẽ gọi một tài sản, rất, rất, rất tương tự 907 00:44:30,450 --> 00:44:35,390 trong tinh thần một cấu trúc trong C. Nó chỉ một thành viên dữ liệu bên trong của hình chữ nhật này. 908 00:44:35,390 --> 00:44:38,300 >> Vì vậy, tôi đã có những hình thức ở đây, và tôi đang gắn, 909 00:44:38,300 --> 00:44:44,650 hoặc tôi giao, để On của nó Gửi xử lý hoặc thay On Gửi tài sản 910 00:44:44,650 --> 00:44:45,740 các chức năng sau đây. 911 00:44:45,740 --> 00:44:49,000 Và đây là, bởi đến nay, điên rồ nhất Điều vậy, đến nay cú pháp. 912 00:44:49,000 --> 00:44:53,610 Hóa ra trong JavaScript và trong PHP, và thẳng thắn cho rằng vấn đề trong C, 913 00:44:53,610 --> 00:44:58,990 mặc dù chúng ta không làm điều đó, bạn có thể thêm vô danh, vô danh, hoặc AKA lambda 914 00:44:58,990 --> 00:45:03,000 chức năng mà không có một tên nhưng có thể được gọi là dù sao. 915 00:45:03,000 --> 00:45:07,050 >> Vì vậy, những gì tôi đang làm ở đây là tôi đang giao Ngày này Gửi tài sản, mà 916 00:45:07,050 --> 00:45:14,330 là bên trong của nút này của cây DOM của tôi, một chức năng, chức năng con trỏ nếu bạn sẽ. 917 00:45:14,330 --> 00:45:16,310 Đó là chức năng không có tên, nhưng điều đó không 918 00:45:16,310 --> 00:45:19,110 quan trọng bởi vì chúng ta sẽ thấy trong một thời điểm như thế nào để gọi nó. 919 00:45:19,110 --> 00:45:21,780 Khi chức năng này được gọi là, mã này được thực thi, sau đó 920 00:45:21,780 --> 00:45:24,210 false được trả về giống như trước đây. 921 00:45:24,210 --> 00:45:25,800 >> Nhưng cần chú ý những gì tôi đã làm. 922 00:45:25,800 --> 00:45:27,830 Tại thời điểm này trong câu chuyện, tôi có một hình thức. 923 00:45:27,830 --> 00:45:30,190 Nó có một ID duy nhất được gọi là demo. 924 00:45:30,190 --> 00:45:33,740 Xuống đây, tôi có một thẻ script thực thi đoạn mã sau. 925 00:45:33,740 --> 00:45:37,720 Nó gắn với nút trong cây để nó On Gửi 926 00:45:37,720 --> 00:45:40,260 sở hữu chức năng này tại đây. 927 00:45:40,260 --> 00:45:44,310 Và chỉ bằng cách tự nhiên như thế nào trình duyệt làm việc, khi tôi bây giờ nhấn Submit hoặc nhấn Enter, 928 00:45:44,310 --> 00:45:45,889 chức năng có nghĩa là sẽ được gọi. 929 00:45:45,889 --> 00:45:48,680 Nó không cần một tên bởi vì người có hề quan tâm đến những gì nó được gọi là. 930 00:45:48,680 --> 00:45:52,540 Thời gian duy nhất nó bao giờ sẽ nhận được gọi là khi tôi nộp đơn. 931 00:45:52,540 --> 00:45:55,130 Không cần phải cho tôi, phát triển con người, 932 00:45:55,130 --> 00:45:57,330 để thực sự gọi nó bất cứ nơi nào khác. 933 00:45:57,330 --> 00:46:00,720 >> Bây giờ chỉ cần là một lời trêu ghẹo, như thể đó đã không quan tâm uốn đủ, 934 00:46:00,720 --> 00:46:03,330 chúng tôi thậm chí có thể thực hiện điều này nhìn khó hiểu hơn khi sử dụng 935 00:46:03,330 --> 00:46:05,850 một thư viện siêu phổ biến được gọi là jQuery. 936 00:46:05,850 --> 00:46:08,760 Trong thực tế jQuery và JavaScript thường được đem lồng. 937 00:46:08,760 --> 00:46:12,790 Và những gì chúng tôi sẽ làm vào ngày thứ tư bắt đầu là sử dụng ngôn ngữ này và các thư viện 938 00:46:12,790 --> 00:46:16,030 để xây dựng ngày càng đồng bộ và các ứng dụng năng động 939 00:46:16,030 --> 00:46:18,950 như bản đồ nhận được các ứng dụng, các ứng dụng 940 00:46:18,950 --> 00:46:22,360 đó cập nhật các trang web trong thời gian thực thời gian, giống như Facebook hay Gchat 941 00:46:22,360 --> 00:46:27,130 làm, và không còn nhốt mình với nhấn Gửi bởi một nhận hoặc chỉ bài 942 00:46:27,130 --> 00:46:27,630 một mình. 943 00:46:27,630 --> 00:46:29,055 Vì vậy, tôi sẽ nhìn thấy bạn vào ngày thứ Tư. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [MUSIC CHƠI] 946 00:46:35,550 --> 00:48:09,728