1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [MUSIC CHƠI] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID Malan: Đây là CS50, và đây là khởi đầu của tuần tám. 5 00:00:13,350 --> 00:00:17,510 Và chúng tôi rất vui mừng chào đón trở lại, bất ngờ lớn, Ramon riêng của CS50 6 00:00:17,510 --> 00:00:22,160 Galvan, một cấp cao tăng người đã được chi tiêu trong nhiều tháng qua 7 00:00:22,160 --> 00:00:26,190 kể từ tháng Bảy ở LA, ở Hollywood, nghĩa là làm việc trên một TV thương hiệu mới 8 00:00:26,190 --> 00:00:31,930 chương trình gọi là Colony, người sáng tạo ra mà thực sự là một phèn Harvard mình. 9 00:00:31,930 --> 00:00:36,610 Và vì vậy chúng tôi rất vui mừng để xem này ra mắt trên mạng Mỹ vào tháng Một này. 10 00:00:36,610 --> 00:00:40,370 Vì vậy, chơ cho rằng, và cho Ramon hơn trong những tuần tới. 11 00:00:40,370 --> 00:00:42,550 >> Biết bây giờ mà cuối cùng là gần. 12 00:00:42,550 --> 00:00:47,400 Và điều này có nghĩa là có không tất cả những gì nhiều trái của CS50, buồn nói. 13 00:00:47,400 --> 00:00:49,400 Chúng tôi chỉ có ba vấn đề bộ left-- có 14 00:00:49,400 --> 00:00:52,510 Vấn đề đặt six-- mà là ở bàn tay của bạn ngay bây giờ hoặc sẽ sớm được, 15 00:00:52,510 --> 00:00:56,080 do sau này week-- là có nghĩa là để cầu thế giới của chúng ta về các dòng lệnh, trong đó 16 00:00:56,080 --> 00:00:59,450 chúng tôi đã dành hầu hết thời gian của chúng tôi sử dụng C, và thế giới của lập trình web. 17 00:00:59,450 --> 00:01:02,350 Vâng, bạn sẽ thấy rất nhiều ý tưởng mượn từ công việc dòng lệnh, 18 00:01:02,350 --> 00:01:04,560 nhưng cũng có rất nhiều mới và những ý tưởng thú vị 19 00:01:04,560 --> 00:01:07,929 đó cũng đang có được Gecman cho ứng dụng di động và công nghệ, 20 00:01:07,929 --> 00:01:10,470 nói chung, với đó bạn chàng trai đều quen thuộc ngày nay 21 00:01:10,470 --> 00:01:12,090 trên máy tính xách tay và điện thoại và muốn. 22 00:01:12,090 --> 00:01:15,220 >> Vì vậy, bạn sẽ thực hiện không một trang web, hoặc một trang web 23 00:01:15,220 --> 00:01:17,620 mỗi gia nhập, nhưng một máy chủ web thực sự. 24 00:01:17,620 --> 00:01:21,590 Bạn sẽ viết phần còn lại của một máy chủ web viết bằng C, mà mục đích trong cuộc sống 25 00:01:21,590 --> 00:01:25,410 là để nhận được các yêu cầu HTTP, những phong bì ảo, chúng tôi tiếp tục nói chuyện 26 00:01:25,410 --> 00:01:29,780 về, và thực sự đáp ứng hoặc với một số content-- tĩnh như một dấu chấm HTML 27 00:01:29,780 --> 00:01:32,310 tập tin, hoặc một dấu chấm hoặc JPEG bất kỳ số nào khác của các tập tin, 28 00:01:32,310 --> 00:01:37,070 hoặc thậm chí là một tập tin PHP theo đó web của bạn máy chủ sẽ giải thích rằng PHP 29 00:01:37,070 --> 00:01:38,332 mã và nhổ ra kết quả. 30 00:01:38,332 --> 00:01:40,540 Bây giờ, chúng tôi đã cung cấp cho bạn khá nhiều khung 31 00:01:40,540 --> 00:01:43,100 cho it-- thực sự Mã phân phối cho vấn đề 32 00:01:43,100 --> 00:01:47,496 thiết lập sáu là dài hơn 1.000 dòng, một rất nhiều trong số đó là cảm nhận, để được fair-- 33 00:01:47,496 --> 00:01:49,370 nhưng điều này thực sự có nghĩa là một cơ hội 34 00:01:49,370 --> 00:01:52,570 để có được bàn tay của bạn lặn bẩn vào một dự án khá lớn 35 00:01:52,570 --> 00:01:55,570 rằng chúng tôi đã rất cụ thể khắc ra mẩu cho bạn, 36 00:01:55,570 --> 00:01:59,046 để thực sự khi bạn thoát khỏi CS50 và nhập vào thế giới thực của lập trình 37 00:01:59,046 --> 00:02:00,920 và muốn đến lĩnh vực bất kỳ số lượng các dự án, 38 00:02:00,920 --> 00:02:03,253 bạn sẽ phải lớn hơn nhiều thoải mái tải một số nguồn 39 00:02:03,253 --> 00:02:05,020 mã, số mã nguồn mở dự án trên web, 40 00:02:05,020 --> 00:02:08,174 và lặn trong và làm thay đổi mà bạn thấy phù hợp. 41 00:02:08,174 --> 00:02:11,340 Vấn đề đặt bảy là có được về việc ứng dụng dựa trên web của riêng bạn 42 00:02:11,340 --> 00:02:14,140 mà có đầu vào và năng động sản lượng sản xuất động dưới dạng 43 00:02:14,140 --> 00:02:16,920 của một trang web etrade.com giống. 44 00:02:16,920 --> 00:02:20,800 Và vấn đề thiết lập tám sẽ tập trung vào chưa một ngôn ngữ được gọi là JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Trong khi đó, trận chung kết dự án là trên đường chân trời. 46 00:02:24,170 --> 00:02:26,800 Cái được gọi là tiền đề nghị là do một tuần kể từ hôm nay. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- mỗi đặc điểm kỹ thuật, mà là trên website-- CS50 của 48 00:02:29,930 --> 00:02:33,260 là một cơ hội khá giản dị cho bạn gửi một email khá gọn gàng 49 00:02:33,260 --> 00:02:35,170 để giáo viên giảng dạy của bạn chỉ để thông báo cho nhóm anh 50 00:02:35,170 --> 00:02:38,250 mình về những gì bạn đang suy nghĩ, để sử dụng anh ta hoặc cô như một cái loa. 51 00:02:38,250 --> 00:02:40,980 Và có một sự tỉnh táo check-- cho dù bạn đang suy nghĩ 52 00:02:40,980 --> 00:02:43,210 về cắn off quá nhiều hoặc có thể quá ít, 53 00:02:43,210 --> 00:02:46,480 hoặc có thể bạn không có ý tưởng nào và muốn tham gia vào một cuộc trò chuyện. 54 00:02:46,480 --> 00:02:48,480 >> Sau đó là một đề nghị và báo cáo tình trạng, 55 00:02:48,480 --> 00:02:51,860 cái gọi là CS50 hackathon ở đây Cambridge cho Harvard và Yale sinh viên 56 00:02:51,860 --> 00:02:52,362 như nhau. 57 00:02:52,362 --> 00:02:54,320 Các dự án cuối cùng của thực hiện là sau đó do. 58 00:02:54,320 --> 00:02:59,290 Và sau đó một hội chợ CS50 ở đây, ở Cambridge, cũng như nhau ở New Haven. 59 00:02:59,290 --> 00:03:02,500 Vì vậy, đề xuất này, hãy xem các trang web cho những người cụ thể. 60 00:03:02,500 --> 00:03:06,530 >> Nhưng sôi nổi hơn, quá, là một cơ hội để có được bàn tay của bạn bẩn, 61 00:03:06,530 --> 00:03:09,350 và tâm trí của bạn mở một toàn bó của các chủ đề và các công cụ 62 00:03:09,350 --> 00:03:12,920 và kỹ thuật mà là phụ trợ để giáo trình cốt lõi của khóa học, 63 00:03:12,920 --> 00:03:14,810 nhưng dù sao cũng liên quan. 64 00:03:14,810 --> 00:03:18,400 Và cũng những nền tảng tuyệt vời để làm dự án cuối cùng thực sự mát mẻ mà 65 00:03:18,400 --> 00:03:22,020 vượt xa tài liệu chúng tôi đã được bảo hiểm chính thức trong vấn đề đặt ra hoặc trong bài giảng. 66 00:03:22,020 --> 00:03:24,446 Vì vậy, đi đến trang web của CS50 cho toàn bộ danh sách các hội thảo. 67 00:03:24,446 --> 00:03:26,070 Nếu bạn không đăng ký được nêu ra, đó là tốt. 68 00:03:26,070 --> 00:03:29,860 Đi trước và đăng ký vẫn còn và chúng tôi sẽ theo dõi với một liên kết trực tuyến trực tiếp, 69 00:03:29,860 --> 00:03:31,844 ngày và thời gian là trên các trang web. 70 00:03:31,844 --> 00:03:33,760 Và tất cả mọi thứ sẽ được ghi lại và đưa lên mạng 71 00:03:33,760 --> 00:03:35,800 nếu bạn không thể làm cho ngày cụ thể và thời gian. 72 00:03:35,800 --> 00:03:39,380 >> Như những gì nằm phía trước thereafter-- tốt, Tất nhiên, có những hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Bức ảnh này, thu hồi, từ tuần không lấy khoảng 4:00 một buổi tối trong những năm qua. 74 00:03:43,560 --> 00:03:46,900 Hội chợ CS50, mà một lần nữa sẽ diễn ra tại cả hai thành phố. 75 00:03:46,900 --> 00:03:49,760 Và sau đó, chỉ để trồng hạt giống, mặc dù chúng tôi vẫn 76 00:03:49,760 --> 00:03:54,080 có một tháng cộng lại của học kỳ, nếu bạn muốn tham gia giảng dạy riêng của CS50 77 00:03:54,080 --> 00:03:56,770 nhân viên, và bạn muốn bắt đầu suy nghĩ về việc trở thành một CA, 78 00:03:56,770 --> 00:03:59,550 hoặc giảng dạy đồng, biết rằng chúng ta sẽ bắt đầu nói chuyện nhiều hơn về điều đó 79 00:03:59,550 --> 00:04:00,630 sau học kỳ này. 80 00:04:00,630 --> 00:04:03,470 Nhưng hình ở đây được hầu hết các đội bóng năm nay. 81 00:04:03,470 --> 00:04:06,950 >> Và như vậy, PHP-- và tôi đã rất buồn Tuần trước, [? Allyse?] Vui lòng 82 00:04:06,950 --> 00:04:09,370 đã đi vào nỗ lực của nhận chúng tôi những đạo cụ tuyệt vời 83 00:04:09,370 --> 00:04:11,720 mà tôi đã không kết thúc bằng cách sử dụng, vì vậy nó thực sự chỉ nhìn ngu ngốc 84 00:04:11,720 --> 00:04:15,160 rằng chúng tôi đã có một cái xẻng ngồi ở đây cả ngày thứ Tư tuần trước, và một ít thìa. 85 00:04:15,160 --> 00:04:17,709 Nhưng điều này là ẩn dụ của tôi cách cố gắng vẽ 86 00:04:17,709 --> 00:04:21,600 hình ảnh của chúng tôi lý do tại sao tôi đang chuyển từ C đến một ngôn ngữ như PHP. 87 00:04:21,600 --> 00:04:25,480 Và cũng có thể nói bất kỳ số languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 hoặc chùm others-- nhưng trong khi ở C, ví dụ, viết một chương trình trong C 89 00:04:31,270 --> 00:04:34,050 thường có thể được như thế lấy một thìa như thế này 90 00:04:34,050 --> 00:04:36,770 và đào một lỗ trong mặt đất, trong cát hoặc bụi bẩn. 91 00:04:36,770 --> 00:04:39,770 PHP cho phép bạn mất nhiều cắn lớn ra khỏi vấn đề, 92 00:04:39,770 --> 00:04:42,842 viết ít mã bằng cách sử dụng một công cụ nhỏ hơn rất nhiều, 93 00:04:42,842 --> 00:04:45,050 vì có rất nhiều hơn nữa chức năng ghép trong. 94 00:04:45,050 --> 00:04:47,633 >> Bây giờ, nếu chúng ta thực sự ấn tượng, chúng tôi muốn có cái gì để xẻng 95 00:04:47,633 --> 00:04:48,760 ở đây, nhưng như vậy đi. 96 00:04:48,760 --> 00:04:51,370 Trong khi đó, người kia ẩn dụ, chúng tôi đã đưa ra 97 00:04:51,370 --> 00:04:53,770 là, tất nhiên, bạn có thể sử dụng giống như một cái cờ lê 98 00:04:53,770 --> 00:04:56,610 để búa trong một cái gì đó giống như móng tay. 99 00:04:56,610 --> 00:04:58,980 Nhưng tất nhiên, bên phải công cụ để sử dụng được đi 100 00:04:58,980 --> 00:05:01,360 là không quá nhiều ngôn ngữ được gọi C-- 101 00:05:01,360 --> 00:05:03,590 và bây giờ tôi chỉ bực mình [? Sanders,?] Có lẽ, 102 00:05:03,590 --> 00:05:07,890 chúng tôi sẽ khắc phục điều đó later-- vậy các công cụ thích hợp để sử dụng thường xuyên 103 00:05:07,890 --> 00:05:09,640 sẽ không được công cụ mức thấp nhất này. 104 00:05:09,640 --> 00:05:13,720 Và quả thực, C không phải là một ngôn ngữ nhất của bạn là bao giờ sẽ sử dụng, 105 00:05:13,720 --> 00:05:15,590 hay nhất thiết phải sử dụng một lần nữa. 106 00:05:15,590 --> 00:05:18,350 >> Và trên thực tế, một chút secret-- lần duy nhất 107 00:05:18,350 --> 00:05:23,160 Tôi sử dụng C bản thân mình là khá nhiều giữa Tháng Chín và tháng Mười Hai của mỗi mùa thu 108 00:05:23,160 --> 00:05:23,870 học kỳ. 109 00:05:23,870 --> 00:05:25,790 Và đó là bởi vì chúng tôi sử dụng nó như một cơ hội 110 00:05:25,790 --> 00:05:27,852 để dạy các nguyên tắc cơ bản lập trình, 111 00:05:27,852 --> 00:05:29,810 và cùng với nó máy tính nguyên tắc cơ bản về khoa học, dữ liệu 112 00:05:29,810 --> 00:05:32,435 cấu trúc, thuật toán và các like-- nhưng rất nhanh chóng sẽ bạn 113 00:05:32,435 --> 00:05:35,010 thấy bây giờ mà cú pháp và những ý tưởng cơ bản C 114 00:05:35,010 --> 00:05:37,530 rất tuyệt vời chuyển nhượng cho hiện đại hơn 115 00:05:37,530 --> 00:05:41,130 ngôn ngữ cấp cao hơn, như PHP và Python và Perl và Java 116 00:05:41,130 --> 00:05:46,750 và Objective-C-- thực sự, không quá nhiều Objective-C-- nhưng Swift, các phiên bản mới hơn 117 00:05:46,750 --> 00:05:50,010 ngôn ngữ mà nhiều bạn sẽ sau đó vọc với bạn dự án cuối cùng. 118 00:05:50,010 --> 00:05:55,070 >> Vì vậy, không có thêm ado, chúng ta hãy thực sự sử dụng PHP để giải quyết một số vấn đề. 119 00:05:55,070 --> 00:06:00,230 Nhớ lại rằng sớm, cuối cùng tuần, chúng tôi chỉ sử dụng CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 chúng tôi đã viết một chương trình nhỏ dinky mà chỉ nói, "Xin chào thế giới." 121 00:06:02,990 --> 00:06:05,680 Và sau đó tôi đã lưu nó trong một tập tin gọi là hello.php. 122 00:06:05,680 --> 00:06:07,280 Và sau đó tôi chạy lệnh này. 123 00:06:07,280 --> 00:06:08,080 >> Và tại sao? 124 00:06:08,080 --> 00:06:09,900 Trong tiếng Anh, những gì đang xảy ra ở đây? 125 00:06:09,900 --> 00:06:12,760 Tôi đã làm gì khi Tôi chạy lệnh này? 126 00:06:12,760 --> 00:06:13,405 >> Yeah? 127 00:06:13,405 --> 00:06:16,572 >> Đung Có một số chức năng PHP mà đọc những gì in-- hiểu rằng. 128 00:06:16,572 --> 00:06:19,696 DAVID Malan: Tốt, có một số chức năng PHP-- và cho tôi được cụ thể hơn, 129 00:06:19,696 --> 00:06:21,810 có một chương trình gọi là PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 Một thông dịch viên, mà hiểu các nội dung của hello.php, 131 00:06:25,872 --> 00:06:27,830 và diễn giải nó trên xuống phía dưới, từ trái sang phải, 132 00:06:27,830 --> 00:06:29,590 và làm những gì các lệnh nói. 133 00:06:29,590 --> 00:06:33,320 Các lệnh trong hello.php, tất nhiên, chỉ là nguồn code-- chức năng 134 00:06:33,320 --> 00:06:35,750 và các biến và các vòng lặp và như thế, mà chính chúng tôi 135 00:06:35,750 --> 00:06:37,460 đã bắt đầu viết trong PHP. 136 00:06:37,460 --> 00:06:40,240 >> Nhưng không giống như C, đó là một ngôn ngữ biên dịch, 137 00:06:40,240 --> 00:06:42,810 PHP bạn chỉ cần viết nó, và chạy nó. 138 00:06:42,810 --> 00:06:46,420 Bạn bỏ qua bước trung gian của chuyển đổi nó thành số không và những người thân, 139 00:06:46,420 --> 00:06:47,790 và sau đó chạy nó. 140 00:06:47,790 --> 00:06:50,510 Và do đó, một lộn ngược của việc này là gì? 141 00:06:50,510 --> 00:06:52,690 Tại sao chúng ta bỏ qua các bước? 142 00:06:52,690 --> 00:06:55,238 Tại sao ngôn ngữ hiện đại có xu hướng bỏ qua bước này? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Lợi ích là gì? 145 00:07:01,220 --> 00:07:02,080 >> Hoặc chỉ cần trực giác? 146 00:07:02,080 --> 00:07:04,200 Ngay cả khi chúng tôi đã không viết nhiều PHP trước, 147 00:07:04,200 --> 00:07:07,210 những gì có lợi về không biên dịch mã của bạn để bạn nghĩ? 148 00:07:07,210 --> 00:07:08,520 Không có? 149 00:07:08,520 --> 00:07:09,610 Không phạm? 150 00:07:09,610 --> 00:07:11,350 Gãi đầu của bạn? 151 00:07:11,350 --> 00:07:12,614 Yeah. 152 00:07:12,614 --> 00:07:13,600 >> Đung More năng động. 153 00:07:13,600 --> 00:07:14,683 >> DAVID Malan: More năng động? 154 00:07:14,683 --> 00:07:16,032 Ý bạn là gì? 155 00:07:16,032 --> 00:07:17,000 >> Đung [Không nghe thấy] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID Malan: OK, tốt, vì vậy tùy thuộc vào đầu vào, 158 00:07:22,390 --> 00:07:23,470 bạn không cần phải biên dịch nó mỗi lần. 159 00:07:23,470 --> 00:07:24,990 Và nó thực sự là như đơn giản như những gì that-- 160 00:07:24,990 --> 00:07:26,990 là điểm của việc tiếp tục để biên dịch mã của bạn? 161 00:07:26,990 --> 00:07:29,480 Đây chỉ là một bước đó là making-- này được yêu cầu, 162 00:07:29,480 --> 00:07:31,900 cho một số quá khứ tuần, hai lần như nhiều bước 163 00:07:31,900 --> 00:07:33,820 như chỉ chạy chương trình của bạn. 164 00:07:33,820 --> 00:07:36,940 Nó rất hữu ích trong thấy rằng bạn xem các thông báo lỗi và vv, 165 00:07:36,940 --> 00:07:38,720 nhưng nó vẫn chỉ là một bước khó chịu. 166 00:07:38,720 --> 00:07:41,810 >> Và do đó, các lập trình viên nhận theo thời gian, tại sao chúng ta không 167 00:07:41,810 --> 00:07:45,327 bắt đầu viết các ngôn ngữ mà không làm cần có bước khá cơ khí, 168 00:07:45,327 --> 00:07:47,160 do đó chỉ có thể viết mã của bạn và chạy nó. 169 00:07:47,160 --> 00:07:48,920 Nhưng là những gì giá mà chúng ta đã thấy chúng tôi trả tiền 170 00:07:48,920 --> 00:07:50,910 cuối tuần, với một ví dụ cụ thể? 171 00:07:50,910 --> 00:07:51,650 Vâng? 172 00:07:51,650 --> 00:07:52,370 >> Speed. 173 00:07:52,370 --> 00:07:54,690 Vì thế [? ] phiên dịch? là những gì chậm hơn một chút, 174 00:07:54,690 --> 00:07:57,330 trong đó số không và những người đang có tốt đẹp và nhanh chóng cho một máy tính 175 00:07:57,330 --> 00:08:00,070 hiểu, bởi vì các Intel CPU, hoặc bất cứ điều gì nó là, 176 00:08:00,070 --> 00:08:03,070 chỉ hiểu những gì đang xảy ra trên với những người mẫu của các bit. 177 00:08:03,070 --> 00:08:05,370 Trong khi đó, một thông dịch viên là một chương trình thực sự 178 00:08:05,370 --> 00:08:07,980 có để đọc các nguồn Ascii mã mà bạn đã viết, 179 00:08:07,980 --> 00:08:12,700 và chuyển đổi nó, do đó, để nói chuyện, hoặc tìm hiểu làm thế nào nó chuyển đổi cuối cùng 180 00:08:12,700 --> 00:08:13,525 đến số không và những người thân. 181 00:08:13,525 --> 00:08:15,650 Vì vậy, nó chỉ mất một ít bit của một hiệu suất hit. 182 00:08:15,650 --> 00:08:16,858 Vì vậy, đó là một chút của một thương mại-off. 183 00:08:16,858 --> 00:08:21,570 Bây giờ nếu chúng ta làm điều này ở đây, cho tôi đi trước và làm một ví dụ như sau. 184 00:08:21,570 --> 00:08:26,610 Nếu tôi đi ở đây, tập tin mới, tôi sẽ để cứu này một lần nữa là hello.php. 185 00:08:26,610 --> 00:08:31,450 Và bây giờ tôi sẽ đi trước và nói, "in hello world" - 186 00:08:31,450 --> 00:08:35,130 và nhớ lại rằng tôi có thể sử dụng in, tôi không phải sử dụng in-F. Và bây giờ xuống đây, 187 00:08:35,130 --> 00:08:42,039 nếu tôi làm PHP của hello.php, huh-- tôi không có vẻ như đã giải thích nó. 188 00:08:42,039 --> 00:08:43,412 Tôi đã làm sai cái gì? 189 00:08:43,412 --> 00:08:44,710 >> Đung Các vòng đeo tay góc cạnh. 190 00:08:44,710 --> 00:08:47,015 >> DAVID Malan: Yeah, bạn cần mà góc khung lên hàng đầu. 191 00:08:47,015 --> 00:08:49,390 Vì vậy, nó là loại gây phiền nhiễu, nhưng bạn đã quen với nó một cách nhanh chóng. 192 00:08:49,390 --> 00:08:53,500 Nếu tôi phải viết mã PHP, tôi nói chung là cần phải cho các chương trình, 193 00:08:53,500 --> 00:08:56,950 hay nói với người phiên dịch, hey PHP, ở đây có một số mã PHP. 194 00:08:56,950 --> 00:09:00,440 Và sau đó cho các biện pháp tốt, tôi sẽ đóng cửa này không phải với điều này, nhưng thay 195 00:09:00,440 --> 00:09:03,740 với góc dấu chỉ câu hỏi khung, vì vậy mà bây giờ xuống đây, 196 00:09:03,740 --> 00:09:06,840 nếu tôi chạy này một lần nữa, bây giờ Tôi nhận được kết quả mong muốn. 197 00:09:06,840 --> 00:09:09,820 >> Bây giờ chúng ta hãy làm một tối ưu hóa nhẹ, chỉ như vậy mà bạn đã nhìn thấy nó trước. 198 00:09:09,820 --> 00:09:14,040 Đây là loại gây phiền nhiễu mà tôi phải chạy PHP gian hello.php, 199 00:09:14,040 --> 00:09:16,060 bởi vì trong quá khứ tôi chỉ có thể viết dot slash 200 00:09:16,060 --> 00:09:17,560 Tên chương trình, đó là loại tốt đẹp. 201 00:09:17,560 --> 00:09:19,420 Đó là loại một kinh nghiệm người dùng tốt hơn. 202 00:09:19,420 --> 00:09:24,160 >> Vì vậy, nó quay ra bạn có thể làm điều này trong PHP với tôi following-- 203 00:09:24,160 --> 00:09:28,780 có thể sử dụng điều này khá khó hiểu câu thần chú ở trên đây, 204 00:09:28,780 --> 00:09:31,740 mà thường được gọi là một công việc, theo đó đây là một biểu tượng sắc nét, 205 00:09:31,740 --> 00:09:34,270 có thể nói, đây là một tiếng nổ hoặc một dấu chấm than. 206 00:09:34,270 --> 00:09:38,490 Và điều này bây giờ là con đường dẫn tới một chương trình trên một hệ thống Linux điển hình 207 00:09:38,490 --> 00:09:41,500 được gọi là môi trường, hoặc env. 208 00:09:41,500 --> 00:09:43,920 Và điều này line-- câu chuyện dài dòng một short-- chỉ 209 00:09:43,920 --> 00:09:48,710 nói, hey máy tính, tìm PHP thông dịch viên cho tôi trong môi trường, 210 00:09:48,710 --> 00:09:50,610 tìm thấy nó trong bộ nhớ của bạn, do đó, để nói chuyện. 211 00:09:50,610 --> 00:09:54,130 >> Và những gì là tốt đẹp hiện nay, được rằng nếu tôi đi xuống đây, 212 00:09:54,130 --> 00:09:57,750 Tôi có thể làm chấm slash xin chào dot php, or-- hmm. 213 00:09:57,750 --> 00:09:59,000 Cho phép từ chối. 214 00:09:59,000 --> 00:10:02,350 Vâng, bạn sẽ thấy nhiều hơn về điều này với vấn đề thiết lập bảy, nếu bạn 215 00:10:02,350 --> 00:10:04,060 chưa có, với các điều khoản. 216 00:10:04,060 --> 00:10:06,510 Nó chỉ ra rằng tôi cần để thực hiện lệnh này 217 00:10:06,510 --> 00:10:10,779 gọi [? chamod?] cho sự thay đổi mode-- một cộng x hello.php. 218 00:10:10,779 --> 00:10:13,820 Tôi cần [không nghe được] này thêm bước mà là nói cho máy tính của tôi, 219 00:10:13,820 --> 00:10:16,400 làm hello.php thực thi. 220 00:10:16,400 --> 00:10:21,310 Và bây giờ xem những gì happens-- dot giảm hello.php, nó chỉ chạy. 221 00:10:21,310 --> 00:10:23,310 Tôi không cần phải xác định các thông dịch viên nữa. 222 00:10:23,310 --> 00:10:26,680 Và tôi có thể làm cho nó thậm chí còn đẹp hơn, vẫn còn, nếu tôi đổi tên điều này. 223 00:10:26,680 --> 00:10:30,570 Nếu tôi chuyển hello.php chỉ Hello-- để thông báo trong góc trên bên trái, 224 00:10:30,570 --> 00:10:32,860 Tên của chương trình là thực sự bây giờ chỉ cần Hello. 225 00:10:32,860 --> 00:10:37,300 Bây giờ tôi có thể làm cho nó trông giống như một chương trình C, mặc dù nó được viết bằng PHP-- 226 00:10:37,300 --> 00:10:39,210 hoặc thẳng thắn bất kỳ số các ngôn ngữ khác. 227 00:10:39,210 --> 00:10:41,480 >> Vì vậy, tăng cường biên, không có khác biệt chức năng. 228 00:10:41,480 --> 00:10:44,460 Nhưng nó chỉ là một chút tò mò bây giờ, do đó bạn có thể viết chương trình 229 00:10:44,460 --> 00:10:48,989 trong bất kỳ ngôn ngữ, và người dùng không phải biết hoặc quan tâm những gì người đang có. 230 00:10:48,989 --> 00:10:51,030 Vâng, chúng ta hãy nhìn vào một hơn ví dụ hấp dẫn doanh nghiệp 231 00:10:51,030 --> 00:10:52,850 mà tôi đánh lên trước. 232 00:10:52,850 --> 00:10:54,955 Và điều này được gọi là quote.php. 233 00:10:54,955 --> 00:10:56,740 Và nó có sẵn trực tuyến. 234 00:10:56,740 --> 00:11:00,299 Và nhận thấy rằng nó khá short-- nhưng đó là một chương trình dòng lệnh đó là 235 00:11:00,299 --> 00:11:02,840 sẽ xem xét giá cổ phiếu đối với tôi, đó là thực sự đi 236 00:11:02,840 --> 00:11:04,230 được Gecman cho vấn đề thiết lập bảy. 237 00:11:04,230 --> 00:11:05,396 >> Vì vậy, chúng ta hãy xem những gì tôi đang làm. 238 00:11:05,396 --> 00:11:08,640 Ở phía trên tôi đã có mở khung dấu hỏi PHP. 239 00:11:08,640 --> 00:11:13,372 Sau đó, tôi đã có dòng này, nhờ đó mà tôi đòi hỏi phải có một tập tin gọi là functions.php-- 240 00:11:13,372 --> 00:11:15,080 chúng ta sẽ thấy thêm về điều này trong một chút, 241 00:11:15,080 --> 00:11:17,340 nhưng điều này cũng giống như C của Phiên bản sắc bao gồm, 242 00:11:17,340 --> 00:11:19,090 bạn muốn đi đâu bao gồm các tập tin khác. 243 00:11:19,090 --> 00:11:23,720 PHP gọi nó đòi hỏi, mặc dù nó cũng có một bao gồm các chức năng. 244 00:11:23,720 --> 00:11:26,861 Và nó chỉ ra rằng function.php là chỉ một cái gì đó tôi đã viết trước khi đến lớp. 245 00:11:26,861 --> 00:11:29,860 Tôi đặt nó trong cùng một thư mục, bởi vì Tôi muốn yếu tố ra một số mã 246 00:11:29,860 --> 00:11:31,800 rằng chúng ta có thể muốn sử dụng ở những nơi khác. 247 00:11:31,800 --> 00:11:34,560 >> Trong khi đó, bạn có thể có lẽ suy ra điều gì đang xảy ra ở đây. 248 00:11:34,560 --> 00:11:39,200 Đây là một chút khác nhau từ C-- nhưng những gì tôi có nghĩa là đảm bảo sử dụng đúng đắn? 249 00:11:39,200 --> 00:11:41,180 Dịch này về mặt kỹ thuật. 250 00:11:41,180 --> 00:11:45,950 Trong hoàn cảnh nào tôi bỏ chương trình, hoặc xuất cảnh? 251 00:11:45,950 --> 00:11:47,074 Yeah? 252 00:11:47,074 --> 00:11:47,990 >> Đung Khi bạn không có hai đối số dòng lệnh. 253 00:11:47,990 --> 00:11:49,480 >> DAVID Malan: Khi tôi không có để chỉ huy đối số dòng. 254 00:11:49,480 --> 00:11:52,396 Và hãy nhớ rằng một trong những đối số là tên của chương trình chính nó. 255 00:11:52,396 --> 00:11:55,340 Và thứ hai là có được từ khác tôi gõ sau dấu nhắc. 256 00:11:55,340 --> 00:11:57,460 Vì vậy, giống như C, điều này là cách của tôi trong việc kiểm tra, 257 00:11:57,460 --> 00:12:00,022 đã hợp tác và người sử dụng chạy chương trình như tôi dự định? 258 00:12:00,022 --> 00:12:01,730 Bây giờ, có một cái gì đó một chút khác nhau 259 00:12:01,730 --> 00:12:04,020 với C-- đầu tiên của tất cả chúng ta có ký hiệu đô la này, 260 00:12:04,020 --> 00:12:07,710 và những gì một đồng đô la ký biểu thị trong PHP? 261 00:12:07,710 --> 00:12:08,440 Chỉ cần một biến. 262 00:12:08,440 --> 00:12:11,731 Đó là all-- chỉ là một biến tiếp theo bất cứ điều gì bạn muốn thực sự gọi nó. 263 00:12:11,731 --> 00:12:14,000 Chú có cái gì đó thiếu từ chương trình PHP của tôi, 264 00:12:14,000 --> 00:12:18,210 giống như nó đã mất tích cuối cùng tuần, so với C, đó là những gì? 265 00:12:18,210 --> 00:12:21,620 >> Một loại, nhưng cũng có cái gì khác. 266 00:12:21,620 --> 00:12:26,409 Không có một cái gì đó function-- chức năng chính. 267 00:12:26,409 --> 00:12:27,450 Không có chức năng chính. 268 00:12:27,450 --> 00:12:29,680 Bạn chỉ cần bắt đầu viết code của bạn mà không cần phải 269 00:12:29,680 --> 00:12:32,790 lo lắng về một cách khá tùy tiện ước đặt tên một số mặc định 270 00:12:32,790 --> 00:12:33,880 Chức năng chính. 271 00:12:33,880 --> 00:12:36,720 Vì vậy, arg C là chỉ thực sự một biến toàn cầu 272 00:12:36,720 --> 00:12:39,049 rằng các thông dịch viên làm cho có sẵn cho tôi. 273 00:12:39,049 --> 00:12:40,090 Bây giờ, đây là thú vị. 274 00:12:40,090 --> 00:12:41,140 Vì vậy, nhìn lên công cụ. 275 00:12:41,140 --> 00:12:43,370 Chứng khoán ký hiệu đô la là trên trái, đó là biến của tôi. 276 00:12:43,370 --> 00:12:45,120 Ở phía bên tay phải, có rõ ràng 277 00:12:45,120 --> 00:12:50,270 một hàm trong PHP gọi là tra cứu Tôi đang đi qua dòng lệnh cuối cùng của tôi 278 00:12:50,270 --> 00:12:51,902 lập luận đối với: bất cứ điều gì từ đó. 279 00:12:51,902 --> 00:12:53,610 Và chúng ta sẽ thấy cách này làm việc trong một thời điểm. 280 00:12:53,610 --> 00:12:55,380 >> Và rồi cuối cùng tôi báo cáo giá. 281 00:12:55,380 --> 00:12:58,650 Tôi in ra một phần như vậy và như vậy. 282 00:12:58,650 --> 00:13:02,082 Và hãy nhớ, đây là cách PHP-- một cách PHP-- 283 00:13:02,082 --> 00:13:04,290 nơi mà bạn không phải làm dấu $ S nữa. 284 00:13:04,290 --> 00:13:06,782 Bạn chỉ có thể sử dụng dấu ngoặc nhọn và cắm trong một số biến. 285 00:13:06,782 --> 00:13:09,240 Bạn không cần phải lo lắng về sử dụng printf trong cùng một cách. 286 00:13:09,240 --> 00:13:13,530 >> Và như một sang một bên, khi bạn đặt một biến bên trong dấu ngoặc kép như thế này, 287 00:13:13,530 --> 00:13:17,370 bạn đang sử dụng một kỹ thuật ưa thích gọi là suy biến. 288 00:13:17,370 --> 00:13:20,380 Nó chỉ có nghĩa là cắm biến ở đây. 289 00:13:20,380 --> 00:13:23,760 Và như một sang một bên, một số bạn của những người đi từ nền lập trình khác, 290 00:13:23,760 --> 00:13:26,960 bạn có thể không sử dụng dấu ngoặc đơn xung quanh dây để làm điều này. 291 00:13:26,960 --> 00:13:30,290 Bạn phải sử dụng dấu ngoặc kép cho suy biến để làm việc. 292 00:13:30,290 --> 00:13:32,740 Nếu không, bạn sẽ thấy nghĩa đen nhìn thấy những dấu ngoặc nhọn. 293 00:13:32,740 --> 00:13:34,500 >> Vì vậy, cuối cùng, chúng ta hãy đi trước và chạy này. 294 00:13:34,500 --> 00:13:36,690 Hãy để tôi làm cho thiết bị đầu cuối của tôi lớn hơn một chút. 295 00:13:36,690 --> 00:13:41,940 Hãy để tôi đi trước và chạy bên trong thư mục báo giá của tôi. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? quote?] PHP quote dot PHP, 297 00:13:46,950 --> 00:13:50,290 và tôi đang đi để tìm kiếm một cái gì đó như GOOG, mà là biểu tượng ticker của nó, 298 00:13:50,290 --> 00:13:55,510 và một phần của tên mới của nó, Alphabet Inc, giá $ 717, cho đến hôm nay. 299 00:13:55,510 --> 00:13:58,680 Được rồi, nếu chúng ta muốn chạy này một lần nữa, bất cứ ai 300 00:13:58,680 --> 00:14:02,600 có một ticker chứng khoán họ muốn tìm kiếm? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft Tôi nghĩ là này, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Tôi nghĩ có lẽ đó là Yahoo. 303 00:14:09,720 --> 00:14:12,130 Và Facebook là. 304 00:14:12,130 --> 00:14:13,740 >> Vì vậy, chương trình này đang làm là gì? 305 00:14:13,740 --> 00:14:16,306 Sự kỳ diệu dường như được nhúng trong đó chức năng tra cứu. 306 00:14:16,306 --> 00:14:17,430 Vì vậy, chúng ta hãy có một cái nhìn nhanh chóng. 307 00:14:17,430 --> 00:14:21,815 >> Nó chỉ ra rằng không đến với PHP, đó là trong functions.php. 308 00:14:21,815 --> 00:14:23,690 Và chúng ta sẽ không đi qua này rất chi tiết, 309 00:14:23,690 --> 00:14:28,040 nhưng thông báo từ phẫu ở đây được mà trên dòng sáu của functions.php-- 310 00:14:28,040 --> 00:14:29,440 Tôi nghĩa rằng chức năng. 311 00:14:29,440 --> 00:14:31,050 Tôi chỉ định tên của chức năng của tôi. 312 00:14:31,050 --> 00:14:34,330 Sau đó tôi chỉ định bất kỳ đối số, hoặc các thông số, 313 00:14:34,330 --> 00:14:36,480 Tôi muốn chức năng đó để take-- không có các loại. 314 00:14:36,480 --> 00:14:37,580 Và sau đó tôi thực hiện nó. 315 00:14:37,580 --> 00:14:39,240 >> Và tôi sẽ vẫy tay vào thực hiện, 316 00:14:39,240 --> 00:14:42,115 vì nó khá cao ngay bây giờ, nhưng chúng ta sẽ nhìn thấy nó một lần nữa thực sự 317 00:14:42,115 --> 00:14:44,700 trong một tuần trong vấn đề thiết lập bảy. 318 00:14:44,700 --> 00:14:47,490 Nhưng tôi có thể làm sạch này lên, quá. 319 00:14:47,490 --> 00:14:49,590 Tôi cũng bao gồm trong hôm nay mã nguồn một phiên bản 320 00:14:49,590 --> 00:14:52,340 các trích dẫn, không có tập tin dot PHP. 321 00:14:52,340 --> 00:14:57,270 Bởi vì những gì là lẽ tại đầu của chương trình được gọi là chỉ trích? 322 00:14:57,270 --> 00:15:00,140 Rằng cái gọi là các shebang-- bùa khá khó hiểu 323 00:15:00,140 --> 00:15:04,590 mà nói tìm PHP và sau đó chạy nó trên mã của tôi ở đây. 324 00:15:04,590 --> 00:15:07,360 >> Tất cả các quyền, do đó sẽ đem lại chúng tôi đến nơi, chúng tôi rời đi 325 00:15:07,360 --> 00:15:09,560 time-- cuối cùng dù với một số ví dụ nâng cao hơn. 326 00:15:09,560 --> 00:15:13,980 Bất kỳ câu hỏi như vậy, cho đến nay về PHP hoặc những gì chúng tôi đang làm? 327 00:15:13,980 --> 00:15:15,570 No-- tất cả các quyền. 328 00:15:15,570 --> 00:15:16,180 Yeah? 329 00:15:16,180 --> 00:15:19,610 >> Đung Bên trong File HTML, làm you-- 330 00:15:19,610 --> 00:15:22,226 [? làm bạn?] [? chỉ cần gọi nó?] a [Không nghe thấy] PHP tập tin? 331 00:15:22,226 --> 00:15:23,350 DAVID Malan: Câu hỏi rất hay. 332 00:15:23,350 --> 00:15:26,070 Trong một bối cảnh web, trong đó chúng tôi nghĩa là sắp chuyển đến, 333 00:15:26,070 --> 00:15:28,028 bạn không sử dụng cái gọi là công việc ở phía trên, 334 00:15:28,028 --> 00:15:31,980 vì server-- web thường là một chương trình gọi là Apache hoặc Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, hoặc bất kỳ số lượng các phần mềm máy chủ web khác, 336 00:15:37,470 --> 00:15:40,636 biết rằng khi nó thấy một tập tin dot PHP, mà nó 337 00:15:40,636 --> 00:15:42,010 nên chạy các thông dịch viên trên đó. 338 00:15:42,010 --> 00:15:43,468 Nó không nhìn vào dòng đầu tiên. 339 00:15:43,468 --> 00:15:45,580 Vì vậy, dòng trick đầu tiên này chỉ là khi bạn đang 340 00:15:45,580 --> 00:15:48,330 viết dòng lệnh programs-- mà chúng tôi sẽ không làm điều siêu thường, 341 00:15:48,330 --> 00:15:52,510 nhưng nó là cách chúng tôi làm cầu nối C ví dụ của chúng tôi cho đến nay chúng tôi PHP. 342 00:15:52,510 --> 00:16:00,680 >> Vì vậy, hãy thực sự là cầu nối thế giới này từ dòng lệnh để thế giới web 343 00:16:00,680 --> 00:16:02,230 bằng cách làm như sau. 344 00:16:02,230 --> 00:16:05,090 Hãy để tôi đi trước và vẽ trên đây chỉ là một khoảnh khắc. 345 00:16:05,090 --> 00:16:09,940 Vì vậy, nếu chúng ta có một máy chủ web, hay đúng hơn nếu chúng ta có máy tính xách tay của tôi trên đây, 346 00:16:09,940 --> 00:16:11,280 mà tôi sẽ vẽ như thế này. 347 00:16:11,280 --> 00:16:14,250 Và ở đây chúng tôi có internet trong một số hình thức. 348 00:16:14,250 --> 00:16:18,210 Và sau đó ở đây, chúng tôi có một máy chủ trong một building-- 349 00:16:18,210 --> 00:16:20,760 đây là cách mà Internet works-- và ở đây 350 00:16:20,760 --> 00:16:23,120 là một máy chủ với một số đèn có thể. 351 00:16:23,120 --> 00:16:27,530 Thực sự là những gì xảy ra giữa hai kết nối này? 352 00:16:27,530 --> 00:16:29,240 >> Vì vậy, trong tòa nhà này là một máy chủ web. 353 00:16:29,240 --> 00:16:31,420 Đó chỉ là một máy tính đó là chạy một số hoạt động 354 00:16:31,420 --> 00:16:34,561 system-- có lẽ các phần mềm miễn phí được gọi là Apache, mà CS50 IDE đang chạy. 355 00:16:34,561 --> 00:16:36,310 Vì vậy, bạn có thể thực sự nghĩ của tòa nhà này 356 00:16:36,310 --> 00:16:38,579 như đang được xây dựng ở mà CSt0 IDE được lưu trữ. 357 00:16:38,579 --> 00:16:40,870 Đó là nơi mà tất cả các bạn có tài khoản, nơi mà tất cả các bạn 358 00:16:40,870 --> 00:16:43,130 có máy chủ web của riêng bạn chạy, tất cả các bạn 359 00:16:43,130 --> 00:16:45,730 có các URL độc đáo của riêng bạn, khi chúng tôi bắt đầu để thảo luận, 360 00:16:45,730 --> 00:16:47,280 và bạn sẽ thấy nhiều hơn ở P. đặt sáu. 361 00:16:47,280 --> 00:16:49,450 >> Đây là máy tính xách tay của tôi ở đâu đó khác trên internet. 362 00:16:49,450 --> 00:16:54,550 Và như vậy khi tôi truy cập một URL mà thuộc với tôi, rằng lưu lượng truy cập internet sẽ 363 00:16:54,550 --> 00:16:58,360 trên máy chủ, máy chủ của nhận được một HTTP request-- 364 00:16:58,360 --> 00:17:02,900 như một nhận index.html và nó trả lời rằng trang web. 365 00:17:02,900 --> 00:17:04,280 Vì vậy, đó là mô hình chung. 366 00:17:04,280 --> 00:17:07,089 Trong khi tất cả mọi thứ lên cho đến bây giờ ngày hôm nay, tất cả mọi thứ 367 00:17:07,089 --> 00:17:09,660 chỉ xảy ra trong hạn chế của tòa nhà này. 368 00:17:09,660 --> 00:17:12,910 Tôi đã sử dụng máy tính xách tay của tôi, nhưng Tôi đã được kết nối với CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 vì vậy tất cả những chương trình tôi đã chạy đã được bên trong của máy chủ, chính nó. 370 00:17:17,369 --> 00:17:22,660 >> Nhưng bây giờ, chúng ta hãy bắt đầu việc tái sử dụng PHP để viết một số chương trình thực tế mà 371 00:17:22,660 --> 00:17:24,230 được phục vụ bởi một máy chủ web. 372 00:17:24,230 --> 00:17:30,320 Và để làm được điều này, tôi sẽ đi thành một bó toàn bộ các ví dụ 373 00:17:30,320 --> 00:17:33,710 mà giới thiệu ý tưởng này ở đây. 374 00:17:33,710 --> 00:17:38,500 Vì vậy, đây là loại một cách ưa thích của mô tả một mô hình lập trình. 375 00:17:38,500 --> 00:17:41,540 >> Và trên thực tế, khi bạn thoát khỏi CS50 hoặc làm việc trên các dự án cuối cùng, 376 00:17:41,540 --> 00:17:43,520 hoặc có một số theo trên lớp, bạn sẽ bắt đầu 377 00:17:43,520 --> 00:17:45,740 để thấy rằng world-- đặc biệt là đã trưởng thành 378 00:17:45,740 --> 00:17:48,300 với các ngôn ngữ như C đó là level-- siêu thấp 379 00:17:48,300 --> 00:17:51,290 nhận ra rằng có tốt hơn cách viết phần mềm. 380 00:17:51,290 --> 00:17:53,290 Có một số mẫu mà bạn có thể làm theo, 381 00:17:53,290 --> 00:17:57,640 những cách nhất định của tổ chức các file của bạn và cách đặt tên chức năng của bạn, 382 00:17:57,640 --> 00:18:00,300 vì vậy mà câu chuyện dài ngắn, thế giới đã đưa ra 383 00:18:00,300 --> 00:18:04,340 với một bó toàn bộ các từ viết tắt và tên cho cách lập trình. 384 00:18:04,340 --> 00:18:06,260 Đây chỉ là kỹ thuật mà bạn có thể sử dụng. 385 00:18:06,260 --> 00:18:09,660 >> Và một trong số họ được gọi là MVC, cho Model View Controller. 386 00:18:09,660 --> 00:18:12,270 Và đây chỉ là, đối với Hiện tại, một quá phức tạp 387 00:18:12,270 --> 00:18:18,960 cách nói như thế nào, bạn nên đặt ra một trang web dựa trên PHP, trong trường hợp của chúng tôi. 388 00:18:18,960 --> 00:18:22,140 Làm thế nào để bạn tổ chức các tập tin của bạn, làm thế nào để bạn tổ chức logic của bạn, 389 00:18:22,140 --> 00:18:26,220 trong một cách mà làm cho nó dễ dàng hơn để viết các trang web phức tạp hơn? 390 00:18:26,220 --> 00:18:28,550 Và quả thực, chúng tôi sẽ nhanh chóng nhận được ở đó với p-thiết lập bảy. 391 00:18:28,550 --> 00:18:32,020 >> Vì vậy, trong thế giới của MVC, bạn đang đi để thấy rằng mã của chúng tôi có thể nói chung 392 00:18:32,020 --> 00:18:38,290 được mô tả như là một trong hai mã mô hình, hoặc mã điều khiển, hoặc mã xem. 393 00:18:38,290 --> 00:18:40,200 Và tôi sẽ oversimplify nó như follows-- 394 00:18:40,200 --> 00:18:42,074 bộ điều khiển là não của chương trình của bạn, 395 00:18:42,074 --> 00:18:44,100 đó là nơi mà tất cả các Logic thú vị xảy ra. 396 00:18:44,100 --> 00:18:46,110 Vì vậy, tất cả mọi thứ chúng tôi đã viết vậy, đến nay trong lớp, 397 00:18:46,110 --> 00:18:48,210 là loại giống như bộ điều khiển code-- nó kiểm soát 398 00:18:48,210 --> 00:18:50,585 chương trình của bạn, vòng lặp của bạn, của bạn điều kiện, chức năng của bạn 399 00:18:50,585 --> 00:18:52,100 và các biến và tất cả điều đó. 400 00:18:52,100 --> 00:18:56,160 >> Views, bây giờ, đang có được một chút rõ ràng hơn trong thế giới của web. 401 00:18:56,160 --> 00:18:59,360 Một quan điểm là thẩm mỹ của trang web của bạn. 402 00:18:59,360 --> 00:19:04,080 Đó là những gì người dùng sees-- các hình ảnh, các bảng HTML, các thẻ HTML, và tất cả 403 00:19:04,080 --> 00:19:08,220 trong đó, tất cả các thẩm mỹ fluffy những thứ đó không phải là khó để viết, 404 00:19:08,220 --> 00:19:11,380 nhưng chỉ là những gì bạn đang tạo ra, là quan điểm được gọi là, tính thẩm mỹ. 405 00:19:11,380 --> 00:19:13,880 Và mô hình, cuối cùng, sẽ là cơ sở dữ liệu mà stuff-- 406 00:19:13,880 --> 00:19:16,510 chúng tôi sẽ bắt đầu lặn vào tất cả càng có nhiều thứ Tư này. 407 00:19:16,510 --> 00:19:19,740 Vì vậy, điều khiển là logic, view là những thứ thẩm mỹ, 408 00:19:19,740 --> 00:19:23,500 và mô hình sẽ là nơi chúng tôi lưu trữ dữ liệu thực tế của chúng tôi. 409 00:19:23,500 --> 00:19:26,410 >> Vì vậy, chúng ta hãy nhìn vào điều này cụ thể hơn với các ví dụ sau đây. 410 00:19:26,410 --> 00:19:34,700 Tôi sẽ đi vào thư mục của tôi ở đây các nguồn hiện nay code-- tất cả trong số đó 411 00:19:34,700 --> 00:19:35,770 là có sẵn trực tuyến. 412 00:19:35,770 --> 00:19:37,800 Và tôi sẽ đi vào phiên bản zero. 413 00:19:37,800 --> 00:19:41,500 Và đây is-- chúng ta hãy gọi nó là phiên bản không của website CS50 của. 414 00:19:41,500 --> 00:19:43,010 Không có nhiều ở đây cả. 415 00:19:43,010 --> 00:19:46,810 Đó là một trang web rất đơn giản đó là có thể sử dụng những gì HTML tags-- chỉ 416 00:19:46,810 --> 00:19:48,970 đoán từ các ví dụ trong quá khứ? 417 00:19:48,970 --> 00:19:49,890 >> Cái gì thế? 418 00:19:49,890 --> 00:19:53,920 H1-- lẽ cho rằng lớn, in đậm tiêu đề, biểu tượng đó lên hàng đầu, CS50. 419 00:19:53,920 --> 00:19:55,080 Và những gì khác là lúc chơi? 420 00:19:55,080 --> 00:19:55,799 Yeah? 421 00:19:55,799 --> 00:19:56,840 Đung danh sách không có thứ tự. 422 00:19:56,840 --> 00:19:59,990 DAVID Malan: list-- Unordered nên Tag UL và có thể một vài thẻ LI. 423 00:19:59,990 --> 00:20:01,840 Và nếu bạn không nhớ những, nó thật không quan trọng. 424 00:20:01,840 --> 00:20:04,170 Đây là những bông loại chi tiết thi hành HTML 425 00:20:04,170 --> 00:20:06,378 bạn nhanh chóng tìm kiếm và bạn đang trở lại trên con đường của bạn. 426 00:20:06,378 --> 00:20:10,040 Chúng tôi sẽ tập trung hơn vào các chương trình ý kiến ​​cho rằng các mảnh juicier. 427 00:20:10,040 --> 00:20:12,890 >> Vì vậy, chúng ta hãy chỉ mất một cách nhanh chóng nhìn vào HTML-- và thực sự 428 00:20:12,890 --> 00:20:16,880 nếu tôi mở ra xem mã nguồn ở đây, yup, đó là chính xác những gì đang xảy ra ở đây. 429 00:20:16,880 --> 00:20:18,440 Có một thẻ UL. 430 00:20:18,440 --> 00:20:20,630 Lồng vào bên trong của nó là tạo tags LI. 431 00:20:20,630 --> 00:20:24,470 Và sau đó tôi mượn URL của giáo trình thực tế ở đây. 432 00:20:24,470 --> 00:20:27,570 >> Và sau đó trong lectures.php là rõ ràng 433 00:20:27,570 --> 00:20:31,640 một trang khác tạo động đó là sẽ có, hãy see-- ah, 434 00:20:31,640 --> 00:20:33,170 Trong hai tuần đầu tiên của bài giảng. 435 00:20:33,170 --> 00:20:36,600 Vì vậy, tuần không và tuần thứ nhất, chúng ta hãy nhìn vào this-- nếu tôi xem mã nguồn trang web, 436 00:20:36,600 --> 00:20:38,120 cũng siêu đơn giản. 437 00:20:38,120 --> 00:20:42,430 Đây là những dẫn đến hai trang gọi week0.php, và week1.php. 438 00:20:42,430 --> 00:20:44,040 Vì vậy, xem xét bây giờ những gì đang xảy ra. 439 00:20:44,040 --> 00:20:50,630 >> Khi tôi bấm vào week0.php, máy tính xách tay của tôi được thực hiện một yêu cầu cho week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Các máy chủ web, a.k.a., CS50 IDE, đang nhận rằng phong bì ảo. 442 00:20:58,110 --> 00:21:01,040 Nó nhìn thấy một tin nhắn như thế nào, có được week0.php. 443 00:21:01,040 --> 00:21:05,060 Sau đó nó được giải thích các tập tin, đầu xuống dưới, từ trái sang right-- file 444 00:21:05,060 --> 00:21:07,720 gọi week0.php-- và phun ra các kết quả. 445 00:21:07,720 --> 00:21:10,510 Vì vậy, bên trong của tập tin này, week0.php, phải 446 00:21:10,510 --> 00:21:15,410 logic điều khiển được tạo ra HTML này, và chúng tôi sẽ sớm thấy rằng. 447 00:21:15,410 --> 00:21:19,340 >> Nhưng bây giờ, hãy để tôi bấm vào tuần zero, và bây giờ chúng tôi có thứ Tư và thứ Sáu, 448 00:21:19,340 --> 00:21:25,260 và bây giờ chúng tôi có các slide dần dần từ tuần zero. 449 00:21:25,260 --> 00:21:27,400 Và bạn có thể gọi lại này từ cách trở lại khi nào. 450 00:21:27,400 --> 00:21:29,340 Vì vậy, đó là tất cả trang web này đang làm. 451 00:21:29,340 --> 00:21:31,120 >> Vì vậy, hãy xem xét làm thế nào nó làm điều này. 452 00:21:31,120 --> 00:21:34,290 Tôi sẽ quay trở lại vào mã nguồn ở đây, trong CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 và tôi sẽ mở index.php. 454 00:21:36,660 --> 00:21:38,910 Ở phía trên cùng của tập tin này là một loạt các ý kiến. 455 00:21:38,910 --> 00:21:43,000 Và sau đó ở giữa của tập tin này, nó Hóa ra, không có mã PHP nào. 456 00:21:43,000 --> 00:21:47,380 Bởi vì nếu bạn không có bất kỳ mở khung tags dấu hỏi PHP, 457 00:21:47,380 --> 00:21:49,180 bạn đang tự do chỉ cần đặt HTML. 458 00:21:49,180 --> 00:21:51,480 >> Bởi vì những gì các PHP thông dịch viên là phải làm, 459 00:21:51,480 --> 00:21:53,938 là khi nó đọc file-- này trên xuống dưới, từ trái sang right-- 460 00:21:53,938 --> 00:21:59,100 nó chỉ diễn giải mã nó thấy giữa những dấu ngoặc góc đặt câu hỏi mark. 461 00:21:59,100 --> 00:22:02,380 Và bất cứ điều gì khác mà nó không nhận như PHP, nó chỉ phun ra. 462 00:22:02,380 --> 00:22:05,080 Và HTML là một trong những công cụ nó sẽ chỉ nhổ ra. 463 00:22:05,080 --> 00:22:09,090 >> Vì vậy, tập tin này có thể có được gọi là index.html, 464 00:22:09,090 --> 00:22:11,690 nhưng tôi đặt tên tất cả mọi thứ dot PHP như là một bước đệm. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- tương tự tượng, nó chỉ là một số HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, tương tự như chỉ số HTML. 467 00:22:19,840 --> 00:22:22,300 >> Nhưng bây giờ chúng ta hãy đặt trên hat kỹ thuật phương ngôn, 468 00:22:22,300 --> 00:22:24,400 và xem xét làm thế nào chúng ta có thể cải thiện điều này. 469 00:22:24,400 --> 00:22:28,541 Nó không khó để làm điều này, nhưng tôi loại của thoái hóa thành sao chép và dán. 470 00:22:28,541 --> 00:22:31,540 Và trên thực tế, nếu tôi làm cho tuần thứ hai, bạn biết những gì tôi đang có lẽ sẽ làm gì? 471 00:22:31,540 --> 00:22:34,940 Tôi sẽ đi đến week1.php, tôi sẽ làm nổi bật tất cả mọi thứ. 472 00:22:34,940 --> 00:22:39,110 Tôi sẽ sao chép nó, dán nó vào một tập tin mới gọi week2.php, 473 00:22:39,110 --> 00:22:42,440 tinh chỉnh một số URL, và được trên con đường của tôi. 474 00:22:42,440 --> 00:22:45,240 >> Vì vậy, dựa vào những gì chúng tôi đã nhìn thấy trong C đã có, 475 00:22:45,240 --> 00:22:46,860 này không cảm thấy đúng, hy vọng. 476 00:22:46,860 --> 00:22:49,610 Sao chép, dán hiếm khi các giải pháp đúng. 477 00:22:49,610 --> 00:22:51,429 Vì vậy, những gì chúng ta có thể bắt đầu phải làm gì để cải thiện điều này? 478 00:22:51,429 --> 00:22:53,345 Đâu là những cơ hội cho thiết kế tốt hơn? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Bởi thời gian tôi nhận được để tuần tám, nó sẽ 481 00:22:58,760 --> 00:23:00,910 để được thực sự gây phiền nhiễu nếu tôi muốn thay đổi 482 00:23:00,910 --> 00:23:03,930 font chữ của mỗi người trang của tôi, hoặc nếu tôi muốn 483 00:23:03,930 --> 00:23:06,522 thay đổi cấu trúc của bố trí. 484 00:23:06,522 --> 00:23:08,396 Vì vậy, nơi là cơ hội cho thiết kế tốt hơn? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Vâng, chúng ta hãy xem xét những gì chia sẻ trên tất cả các file. 487 00:23:15,160 --> 00:23:21,696 >> Đây là tuần thứ nhất, đây là tuần bằng không, đây là lectures.php, 488 00:23:21,696 --> 00:23:25,790 đây là index.php-- gì là như nhau và những gì là khác nhau, khoảng nói, 489 00:23:25,790 --> 00:23:26,760 trong mỗi của các tập tin? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Yeah? 492 00:23:32,060 --> 00:23:34,560 >> Đung [Không nghe thấy] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID Malan: OK, tốt. 495 00:23:42,160 --> 00:23:46,115 Vì vậy, có một mô hình, chắc chắn, nhờ đó mà mỗi khi tôi chọn bài giảng tôi, 496 00:23:46,115 --> 00:23:48,250 Tôi nên tạo ra một rất giống trang tìm kiếm. 497 00:23:48,250 --> 00:23:50,375 Và như vậy có lẽ tôi có thể tận dụng thực tế là thực sự, 498 00:23:50,375 --> 00:23:53,060 chúng tôi cố tình bằng số lập chỉ mục của chúng tôi lectures-- 499 00:23:53,060 --> 00:23:55,290 nếu tôi có thể đặt nhiều hơn từ trong câu trả lời của bạn. 500 00:23:55,290 --> 00:23:59,984 Và điều duy nhất là những gì, thực sự, đó đang thay đổi giữa tuần one-- 501 00:23:59,984 --> 00:24:02,400 và cho tôi di chuyển xuống để nó gần ở place-- cùng 502 00:24:02,400 --> 00:24:05,480 do đó, đây là tuần không, khoảng ở đầu trang. 503 00:24:05,480 --> 00:24:12,370 Dưới đây là một tuần, tuần bằng không, một tuần, tuần không. 504 00:24:12,370 --> 00:24:14,370 OK, nghĩa là nếu bạn biết không có chương trình nào, 505 00:24:14,370 --> 00:24:16,286 đây là bây giờ giống như một mô hình kết hợp trò chơi. 506 00:24:16,286 --> 00:24:17,200 Vì vậy, những gì khác nhau? 507 00:24:17,200 --> 00:24:18,765 Yeah? 508 00:24:18,765 --> 00:24:19,777 >> Đung [Không nghe thấy] 509 00:24:19,777 --> 00:24:22,360 DAVID Malan: Tốt, vì vậy tiêu đề đang thay đổi, bao giờ nên hơi. 510 00:24:22,360 --> 00:24:24,010 Zero là đi, tất nhiên, để một. 511 00:24:24,010 --> 00:24:25,570 Điều tương tự cũng đang xảy ra trong thẻ H1. 512 00:24:25,570 --> 00:24:28,790 Và chúng tôi hoàn toàn không nhìn thấy nó như là một cách dễ dàng, vì các URL là một ít lâu. 513 00:24:28,790 --> 00:24:30,670 Nhưng các URL đang thay đổi một chút. 514 00:24:30,670 --> 00:24:34,490 >> Nhưng những gì không thay đổi là, tôi dám nói, hầu hết các nội dung của page-- 515 00:24:34,490 --> 00:24:38,530 các tag HTML là cùng, người đứng đầu là cùng, tiêu đề là gần như giống nhau, 516 00:24:38,530 --> 00:24:40,659 cơ thể là như nhau, và hầu như tất cả mọi thứ khác 517 00:24:40,659 --> 00:24:42,450 là như nhau ngoại trừ những tinh chỉnh nhỏ. 518 00:24:42,450 --> 00:24:45,310 Vậy làm thế nào chúng ta có thể đi về bao thanh toán một số điều này ra? 519 00:24:45,310 --> 00:24:48,740 >> Vâng cho tôi đề xuất một cách chính xác mà trong các phiên bản tiếp theo. 520 00:24:48,740 --> 00:24:53,890 Vì vậy, ở đây trong phiên bản một, tôi có chính xác cùng một tập tin, cộng với một vài người khác. 521 00:24:53,890 --> 00:24:59,730 Dưới đây là index.php-- và thậm chí nếu bạn đã bao giờ nhìn thấy PHP trước, 522 00:24:59,730 --> 00:25:05,511 những gì tôi có thể làm gì để giải quyết điều này problem-- dựa trên những gì bạn thấy ở đây? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Vâng, đó là một cam nhẹ? 525 00:25:12,760 --> 00:25:13,450 Không có? 526 00:25:13,450 --> 00:25:16,020 Có, đi vào. 527 00:25:16,020 --> 00:25:17,380 >> Đung [Không nghe thấy] 528 00:25:17,380 --> 00:25:18,380 >> DAVID Malan: Yep. 529 00:25:18,380 --> 00:25:20,380 >> Đung [Không nghe thấy] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID Malan: Tôi cần bạn nói chỉ to hơn một chút. 532 00:25:28,669 --> 00:25:31,084 >> Đung [Không nghe thấy] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID Malan: OK, tốt. 535 00:25:36,660 --> 00:25:38,620 Và tôi think-- nó là khó nghe you-- nhưng tôi 536 00:25:38,620 --> 00:25:42,690 nghĩ rằng những gì bạn đang nhận được lúc là các thẻ đó đã được phổ biến lên hàng đầu, 537 00:25:42,690 --> 00:25:47,710 và các thẻ đó đã được phổ biến trên phía dưới, hiện nay đã được yếu tố ra ngoài, 538 00:25:47,710 --> 00:25:51,140 hoặc xuống hạng với những tập tin? 539 00:25:51,140 --> 00:25:53,476 Header.php và footer.php-- và chúng ta sẽ 540 00:25:53,476 --> 00:25:55,600 thực hiện một số điều chỉnh cho giải quyết các mối quan tâm bạn chỉ 541 00:25:55,600 --> 00:25:59,370 nêu lên về số thay đổi, cho Ví dụ, nếu tôi nghe bạn một cách chính xác. 542 00:25:59,370 --> 00:26:02,060 >> Nhưng điều đó có vẻ là ý chính của nó. 543 00:26:02,060 --> 00:26:04,820 Nếu có một số tiền khổng lồ dư thừa ở đầu trang, 544 00:26:04,820 --> 00:26:06,736 và một số tiền rất lớn của dự phòng ở phía dưới, 545 00:26:06,736 --> 00:26:09,280 chúng ta hãy theo nghĩa đen chỉ nổi bật và cắt giảm nội dung mà ra, 546 00:26:09,280 --> 00:26:13,270 đặt nó trong một file-- riêng biệt giống như ý tưởng của CSS, mà chúng ta yếu tố ra 547 00:26:13,270 --> 00:26:16,710 thẩm mỹ rất giống nhau, đặt nó trong một tập tin PHP chấm riêng biệt, 548 00:26:16,710 --> 00:26:20,340 sử dụng các yêu cầu mà mechanism-- giống như C include-- sắc nét mà 549 00:26:20,340 --> 00:26:23,570 về cơ bản là giống như nói đi lấy nội dung của header.php, 550 00:26:23,570 --> 00:26:25,370 và sao chép và dán chúng ở đây. 551 00:26:25,370 --> 00:26:29,490 >> Nhưng điều này có nghĩa là bây giờ trong là index.php, tôi có hai dòng. 552 00:26:29,490 --> 00:26:32,130 Trong lectures.php, tôi cũng có hai dòng. 553 00:26:32,130 --> 00:26:35,230 Trong week0.php, tôi cũng có hai dòng. 554 00:26:35,230 --> 00:26:38,380 >> Vì vậy, bây giờ, nếu tôi muốn thay đổi tiêu đề của tất cả các trang của tôi, 555 00:26:38,380 --> 00:26:40,530 hoặc tôi muốn thay đổi cấu trúc cơ bản, 556 00:26:40,530 --> 00:26:44,380 Tôi có thể thay đổi nó bây giờ chỉ trong một nơi, hoặc hai places-- header và footer, 557 00:26:44,380 --> 00:26:45,429 tương ứng. 558 00:26:45,429 --> 00:26:47,970 Bây giờ bắt đầu của mã để tìm một chút bí ẩn hơn, phải không? 559 00:26:47,970 --> 00:26:53,590 Nhưng nếu bạn nghĩ về những gì trang được doing-- nếu tôi yêu cầu week0.php, 560 00:26:53,590 --> 00:26:59,880 giống như trên các bản vẽ trên here-- khi week0.php được yêu cầu, 561 00:26:59,880 --> 00:27:00,960 điều đó có nghĩa là gì? 562 00:27:00,960 --> 00:27:04,410 >> Theo nghĩa đen, tập tin này là trình duyệt yêu cầu. 563 00:27:04,410 --> 00:27:06,240 A.k.a. web server-- 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- grabs này file, week0.php, và lần đọc 565 00:27:09,250 --> 00:27:10,780 nó trên xuống dưới, từ trái sang phải. 566 00:27:10,780 --> 00:27:15,400 Trên một dòng, nó ngay lập tức gặp mở khung dấu hỏi PHP, yêu cầu 567 00:27:15,400 --> 00:27:17,872 tiêu đề dot PHP, và như vậy những gì các thông dịch viên PHP 568 00:27:17,872 --> 00:27:20,580 does-- đó là xây dựng vào web máy chủ, bởi vì chúng tôi cấu hình sẵn 569 00:27:20,580 --> 00:27:24,580 nó cho you-- nó sẽ tự động chuyển vào header.php, bản sao nội dung, 570 00:27:24,580 --> 00:27:25,640 dán chúng ở đây. 571 00:27:25,640 --> 00:27:28,790 >> Nhưng sau đó các cuộc gặp gỡ thông dịch viên dấu hỏi dấu đóng ngoặc, 572 00:27:28,790 --> 00:27:30,320 do đó, nó làm tất cả suy nghĩ. 573 00:27:30,320 --> 00:27:33,400 Bây giờ nó chỉ mù quáng spits ra đường hai đến bảy, 574 00:27:33,400 --> 00:27:35,240 bởi vì nó chỉ là mã HTML. 575 00:27:35,240 --> 00:27:38,470 Được xếp hàng tám, và làm thế cùng kỳ diệu again-- mở tập tin, 576 00:27:38,470 --> 00:27:41,460 grabbing các nội dung, và yêu cầu họ hoặc dán chúng 577 00:27:41,460 --> 00:27:42,480 ngay sau đó hoặc có. 578 00:27:42,480 --> 00:27:44,210 >> Nhưng tôi chỉ ám chỉ một lỗi. 579 00:27:44,210 --> 00:27:48,610 Đây là một bước tiến từng phần lạc hậu, bởi vì nếu chúng ta nhìn vào header.php, 580 00:27:48,610 --> 00:27:50,850 Tôi đã loại cắt một góc. 581 00:27:50,850 --> 00:27:56,250 Tính năng đã làm những gì tôi bỏ để để đạt được thiết kế này tốt hơn đáng tranh cãi? 582 00:27:56,250 --> 00:27:57,305 Yeah? 583 00:27:57,305 --> 00:27:58,180 Đung [Không nghe thấy] 584 00:27:58,180 --> 00:28:00,570 DAVID Malan: Yeah, tôi loại của cắt một góc không tầm thường. 585 00:28:00,570 --> 00:28:04,489 Bạn đã chỉ ra rằng những gì đã được thay đổi là tiêu đề, số lượng trong tiêu đề, 586 00:28:04,489 --> 00:28:05,530 và số lượng trong H1. 587 00:28:05,530 --> 00:28:08,170 Vì vậy, giải pháp của tôi là, OK, chúng ta chỉ cần đổi tên trang, 588 00:28:08,170 --> 00:28:10,080 và không phải đối phó với điều đó vấn đề gì. 589 00:28:10,080 --> 00:28:12,130 Vì vậy, đó là một phần bước lùi cho chắc chắn. 590 00:28:12,130 --> 00:28:14,300 >> Nhưng điều đáng chú ý ở đây được rằng những gì tôi đã làm 591 00:28:14,300 --> 00:28:17,200 nếu không được yếu tố ra tất cả các công cụ phổ biến. 592 00:28:17,200 --> 00:28:21,520 Và trong footer.php, nhận thấy tôi yếu tố ra tất cả điều đó, mặc dù ít hơn, 593 00:28:21,520 --> 00:28:22,790 công cụ phổ biến. 594 00:28:22,790 --> 00:28:26,070 Vì vậy, tôi cần phải bằng cách nào đó bây giờ có thể mất một bước về phía trước, và sửa chữa 595 00:28:26,070 --> 00:28:27,160 mà vấn đề tiêu đề. 596 00:28:27,160 --> 00:28:28,180 Vì vậy, hãy làm điều đó. 597 00:28:28,180 --> 00:28:35,060 >> Hãy để tôi đi vào phiên bản thứ hai của tôi ở đây, trong đó, một lần nữa, có các tập tin cùng 598 00:28:35,060 --> 00:28:36,825 ngoại trừ một bổ sung mới. 599 00:28:36,825 --> 00:28:38,950 Và nó là nhiều hơn một chút dài dòng, nhưng chúng ta hãy xem chúng tôi 600 00:28:38,950 --> 00:28:40,550 có thể trêu chọc nhau những gì đang xảy ra ở đây. 601 00:28:40,550 --> 00:28:45,370 Vì vậy, thay vì yêu cầu header.php và footer.php, 602 00:28:45,370 --> 00:28:50,180 Tôi dường như chỉ cần một file-- gọi là, tất nhiên, helpers.php. 603 00:28:50,180 --> 00:28:52,560 Và hãy để tôi định bây giờ, những gì bên trong của helpers.php 604 00:28:52,560 --> 00:28:55,330 chỉ là một loạt các chức năng mà tôi đã viết, giống như trước đây. 605 00:28:55,330 --> 00:28:57,550 Nhưng tôi gọi nó là helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Bây giờ rõ ràng, trong dòng ba và 10, tôi 607 00:29:00,370 --> 00:29:02,840 gọi hai functions-- làm tiêu đề, làm cho chân. 608 00:29:02,840 --> 00:29:05,040 Những không đi kèm với PHP, tôi đã viết những bản thân mình. 609 00:29:05,040 --> 00:29:07,880 Và tôi đặt chúng trong helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Bây giờ, chúng tôi đã chỉ nhìn thấy cú pháp này một lần, và nó đã được siêu ngắn. 611 00:29:11,210 --> 00:29:15,330 Nhưng điều này dường như là một đối số để làm tiêu đề, các chức năng. 612 00:29:15,330 --> 00:29:16,450 Tại sao tôi biết được? 613 00:29:16,450 --> 00:29:18,522 Vâng đây là một dấu ngoặc đóng, đây là một dấu ngoặc mở. 614 00:29:18,522 --> 00:29:21,230 Và tất nhiên, cũng giống như trong C, bất cứ điều gì giữa những dấu ngoặc đơn 615 00:29:21,230 --> 00:29:23,350 là một input-- hoặc một đối số cho hàm. 616 00:29:23,350 --> 00:29:26,710 >> Kiểu dữ liệu của tham số này là gì, dựa trên những gì tôi đã nêu bật? 617 00:29:26,710 --> 00:29:30,820 Làm gì những dấu ngoặc vuông chỉ ra, dựa vào tuần trước? 618 00:29:30,820 --> 00:29:33,390 Vâng, đó là một array-- cụ thể là một mảng kết hợp. 619 00:29:33,390 --> 00:29:35,700 Và cú pháp này thừa nhận là một chút funky, 620 00:29:35,700 --> 00:29:38,860 nhưng điều này chỉ là đi qua trong một cặp giá trị quan trọng. 621 00:29:38,860 --> 00:29:43,530 Điều quan trọng là, báo unquote tiêu đề, và giá trị là CS50. 622 00:29:43,530 --> 00:29:46,220 >> Nếu chúng tôi đã làm điều này trong C, nó có thể thay 623 00:29:46,220 --> 00:29:49,400 trông như thế này, chỉ quote unquote CS50-- 624 00:29:49,400 --> 00:29:52,460 hoặc thực sự nó sẽ xoăn niềng răng, hoặc một cái gì đó như thế trong C, 625 00:29:52,460 --> 00:29:55,580 mà chính là số không, và giá trị là CS50. 626 00:29:55,580 --> 00:29:59,840 Nhưng một lần nữa, trong PHP, mặc dù Cú pháp là, một lần nữa, một chút lạ, 627 00:29:59,840 --> 00:30:02,860 nó cho phép bạn vượt qua trong từ thay vì số 628 00:30:02,860 --> 00:30:05,120 để kết hợp các phím với các giá trị. 629 00:30:05,120 --> 00:30:06,390 >> Vì vậy, điều này có nghĩa là tất cả? 630 00:30:06,390 --> 00:30:09,750 Nếu tôi đi vào helpers.php, chúng ta hãy xem xét chức năng này. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, thay renderHeader là chức năng của tôi, 632 00:30:13,620 --> 00:30:16,220 và tôi biết điều đó vì tôi thấy các chức năng từ khóa ở đây. 633 00:30:16,220 --> 00:30:19,450 Đây là mới từ C-- nó rõ ràng có một đối số gọi data-- 634 00:30:19,450 --> 00:30:22,400 nhưng tôi có thể gọi này bất cứ điều gì, nhưng tôi gọi nó là dữ liệu, 635 00:30:22,400 --> 00:30:25,090 chỉ có một chút clean-- và chỉ mất một đoán, đặc biệt 636 00:30:25,090 --> 00:30:28,173 nếu bạn đã lập trình một số khác ngôn ngữ cấp cao hơn trước, một cái gì đó 637 00:30:28,173 --> 00:30:29,820 trên C, khái niệm. 638 00:30:29,820 --> 00:30:33,820 >> Mở khung bằng gì khung vuông có nghĩa là gì? 639 00:30:33,820 --> 00:30:35,540 Hoặc những gì nó có thể có nghĩa là? 640 00:30:35,540 --> 00:30:39,660 Chúng tôi đã không nhìn thấy điều này trong C. Yeah? 641 00:30:39,660 --> 00:30:40,480 >> Một mảng trống rỗng. 642 00:30:40,480 --> 00:30:45,440 Cụ thể, điều này có nghĩa rằng nếu người sử dụng không gọi renderHeader 643 00:30:45,440 --> 00:30:49,340 với một đối số, tôi vẫn đi để có một đối số được gọi là dữ liệu, 644 00:30:49,340 --> 00:30:52,327 nhưng giá trị mặc định của nó là sẽ là một mảng trống rỗng. 645 00:30:52,327 --> 00:30:53,660 Vì vậy, nó chỉ là một tiện nghi tốt đẹp. 646 00:30:53,660 --> 00:30:56,493 Tôi không cần phải hét lên với người sử dụng, hay nói rằng bạn sử dụng chức năng của tôi sai. 647 00:30:56,493 --> 00:30:59,849 Tôi chỉ có thể cung cấp cho người dùng một sự mặc định giá trị, nếu tôi không đặc biệt quan tâm. 648 00:30:59,849 --> 00:31:01,890 Bây giờ chức năng này, tôi sẽ vẫy tay của tôi tại. 649 00:31:01,890 --> 00:31:07,620 Nhưng chức năng chiết xuất này cho phép chúng ta vượt qua những biến trong dữ liệu 650 00:31:07,620 --> 00:31:10,360 vào header.php trong các cách sau đây. 651 00:31:10,360 --> 00:31:13,100 Và đây là phần cuối cùng, Tôi nghĩ rằng, trong cú pháp funky. 652 00:31:13,100 --> 00:31:15,860 Dưới đây là phiên bản mới của tôi header.php-- của nó 653 00:31:15,860 --> 00:31:20,140 được sử dụng để nói, theo nghĩa đen, mở khung tiêu đề CS50, và đó là nó. 654 00:31:20,140 --> 00:31:21,766 Và điều tương tự cho các H1. 655 00:31:21,766 --> 00:31:24,310 >> Bây giờ nó dường như nói một cái gì đó khá sôi nổi. 656 00:31:24,310 --> 00:31:28,030 Và hãy để tôi đơn giản hóa này cho một thời điểm như sau. 657 00:31:28,030 --> 00:31:31,020 Đây là những gì tôi đã thay đổi tiêu đề của tôi được. 658 00:31:31,020 --> 00:31:35,140 Tuy nhiên, nó nhận được một chút xấu xí để liên tục mở ngoặc với PHP, 659 00:31:35,140 --> 00:31:36,610 và sau đó sử dụng các chức năng in. 660 00:31:36,610 --> 00:31:40,810 Nó chỉ ra rằng PHP có một cách viết tắt ký hiệu cho điều này, mà chỉ là 661 00:31:40,810 --> 00:31:45,050 một dấu bằng, mà là một kỹ thuật chức năng gọi là vang vọng thay vì in ấn, 662 00:31:45,050 --> 00:31:46,800 nhưng nó là điều tương tự, có hiệu quả. 663 00:31:46,800 --> 00:31:48,440 >> Điều đó chỉ có vẻ tốt hơn. 664 00:31:48,440 --> 00:31:50,510 Nó chỉ là một cú pháp đường, nếu bạn muốn, 665 00:31:50,510 --> 00:31:52,260 mà làm cho mã của tôi tốt hơn một chút. 666 00:31:52,260 --> 00:31:54,010 Nhưng hóa ra, và chúng ta sẽ thấy điều này một lần nữa 667 00:31:54,010 --> 00:31:57,420 Không lâu sau, chúng tôi phải gọi này annoyingly hàm dài gọi là 668 00:31:57,420 --> 00:32:00,582 HTML ký tự đặc biệt trong PHP, vì thực ra 669 00:32:00,582 --> 00:32:02,790 có đầu vào nhất định mà người sử dụng có thể cung cấp cho chúng tôi, 670 00:32:02,790 --> 00:32:05,160 hoặc người dùng có thể cung cấp cho chúng tôi, rằng sẽ phá vỡ trang web của chúng tôi. 671 00:32:05,160 --> 00:32:07,035 Nhưng chúng ta sẽ thấy rằng bên cạnh tuần với JavaScript. 672 00:32:07,035 --> 00:32:10,740 Nhưng bây giờ, chỉ biết rằng tập tin này, headers.php, đơn giản 673 00:32:10,740 --> 00:32:13,040 mất danh hiệu mà Tôi đã có, nó làm cho 674 00:32:13,040 --> 00:32:17,380 chắc chắn là an toàn khi được tiêm vào một web trang, và nó nhổ nó ra như là tiêu đề của tôi 675 00:32:17,380 --> 00:32:18,640 và như H1 của tôi. 676 00:32:18,640 --> 00:32:24,440 Vì vậy, nếu tôi đi vào phiên bản này ngay bây giờ, nhận thấy rằng các bài giảng có tiêu đề của nó trở lại, 677 00:32:24,440 --> 00:32:28,630 tuần không có tiêu đề của nó lại, và thực sự, HTML tôi là tạo 678 00:32:28,630 --> 00:32:32,110 giống hệt với những phiên bản đầu tiên của tôi was-- trừ khoảng trắng của tôi, 679 00:32:32,110 --> 00:32:35,150 bởi vì tôi đã bắt đầu định dạng mã của tôi hơi khác một chút. 680 00:32:35,150 --> 00:32:38,082 Nhưng tôi đã tạo ra tất cả mã tôi quan tâm. 681 00:32:38,082 --> 00:32:39,790 Vì vậy, hãy để tôi dừng lại chỉ một lúc và thấy 682 00:32:39,790 --> 00:32:42,200 nếu có bất kỳ câu hỏi hoặc nhầm lẫn tôi đã tạo ra. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Được rồi, vậy chúng ta hãy xoay một chút khó khăn hơn ở đây 685 00:32:48,150 --> 00:32:51,500 để xem nếu có một cơ hội để cải thiện. 686 00:32:51,500 --> 00:32:56,130 Helpers.php cũng đã có điều này chức năng, được gọi là renderFooter. 687 00:32:56,130 --> 00:32:59,652 Và những gì đáng chú ý về renderHeader, và renderFooter? 688 00:32:59,652 --> 00:33:02,610 Và một lần nữa, vì mục đích của ngày hôm nay, biết rằng các chức năng giải nén chỉ là 689 00:33:02,610 --> 00:33:08,280 cách của tôi đối số qua vào header.php và footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Lấy làm tiếc? 692 00:33:11,780 --> 00:33:13,056 >> Đung [Không nghe thấy] 693 00:33:13,056 --> 00:33:15,180 DAVID Malan: Yeah, tôi chỉ thay đổi các yêu cầu dòng. 694 00:33:15,180 --> 00:33:19,410 Vì vậy, theo nghĩa đen, tôi đã phạm phải lỗi sao chép và dán, nhưng một lần nữa. 695 00:33:19,410 --> 00:33:21,920 Nó không phải là một con số khổng lồ dòng, nhưng đến on-- 696 00:33:21,920 --> 00:33:25,220 nếu tôi là sao chép và dán tất cả mọi thứ chỉ thay đổi một số từ ít, 697 00:33:25,220 --> 00:33:28,610 và một từ nhỏ mà Alan chỉ ra là chân trang ở đây, so với tiêu đề ở đây. 698 00:33:28,610 --> 00:33:30,670 Nếu không, tất cả mọi thứ là giống hệt nhau, ngoại trừ, 699 00:33:30,670 --> 00:33:32,180 tất nhiên, tên của hàm. 700 00:33:32,180 --> 00:33:33,690 Vì vậy, những gì chúng ta có thể làm tốt hơn? 701 00:33:33,690 --> 00:33:39,810 >> Vâng cho tôi mở lên phiên bản này ở đây, theo đó trong helpers.php, 702 00:33:39,810 --> 00:33:42,300 tại sao tôi không chỉ có được một ít thông minh hơn về điều này? 703 00:33:42,300 --> 00:33:46,410 Viết hơi phức tạp hơn code, nhưng gọi nó render? 704 00:33:46,410 --> 00:33:48,470 Vì vậy, những gì tôi có thay đổi cơ bản? 705 00:33:48,470 --> 00:33:51,770 >> Nó có một đối now-- hai đối số, dữ liệu vẫn còn. 706 00:33:51,770 --> 00:33:54,444 Và sau đó những gì là đầu tiên Tên có thể được sử dụng cho, 707 00:33:54,444 --> 00:33:55,860 dựa trên những gì bạn đang đọc đây? 708 00:33:55,860 --> 00:33:58,452 Ngay cả khi một số cú pháp vẫn còn mới. 709 00:33:58,452 --> 00:33:59,660 Đồng đô la dấu hiệu mẫu là gì? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Lấy làm tiếc? 712 00:34:03,016 --> 00:34:03,710 >> Đung Header hoặc Footer. 713 00:34:03,710 --> 00:34:04,510 >> DAVID Malan: Header hoặc Footer. 714 00:34:04,510 --> 00:34:07,134 Vì vậy, rõ ràng, tôi đã quyết định rằng nếu điều duy nhất đó đang thay đổi 715 00:34:07,134 --> 00:34:10,159 là những gì tôi muốn mẫu để print-- và mẫu 716 00:34:10,159 --> 00:34:13,100 Tôi có nghĩa là đây là kế hoạch chi tiết cho mã mà tôi muốn đến đầu ra, 717 00:34:13,100 --> 00:34:16,350 nhưng tôi muốn cắm trong một số values-- vì vậy nếu nó chỉ có tiêu đề 718 00:34:16,350 --> 00:34:20,440 hoặc footer, tại sao tôi không tham số đó và gọi các ký hiệu đô la đối số 719 00:34:20,440 --> 00:34:21,409 bản mẫu? 720 00:34:21,409 --> 00:34:26,250 Và sau đó sôi nổi cú pháp này cho phép tôi để tạo ra một đường dẫn trong biến ở đây. 721 00:34:26,250 --> 00:34:28,030 >> Vì vậy, con đường ký hiệu đô la là một biến. 722 00:34:28,030 --> 00:34:31,120 Những gì hiện cú pháp này làm, nếu bạn đã quen thuộc? 723 00:34:31,120 --> 00:34:32,512 Yeah? 724 00:34:32,512 --> 00:34:34,065 >> Đung [Không nghe thấy] 725 00:34:34,065 --> 00:34:34,940 DAVID Malan: Chính xác. 726 00:34:34,940 --> 00:34:37,600 Nếu mẫu là, quote unquote, tiêu đề, hoặc nếu mẫu là, 727 00:34:37,600 --> 00:34:41,170 quote unquote, footer, rằng dòng có mà tôi đã nêu bật, dòng tám, 728 00:34:41,170 --> 00:34:46,330 chỉ đơn giản là lấy tên đó, như tiêu đề, và cách nối nó với dấu chấm PHP. 729 00:34:46,330 --> 00:34:49,750 Vì vậy, chúng tôi không có nhà điều hành này trong C. dot điều hành này là 730 00:34:49,750 --> 00:34:54,520 một điều tuyệt vời trong PHP-- nếu bạn quen thuộc với JavaScript hoặc Java, 731 00:34:54,520 --> 00:34:56,949 bạn có thể sử dụng các cộng ký làm nối. 732 00:34:56,949 --> 00:34:59,974 >> Trong C, nó là một nỗi đau trong neck-- và tôi rất xin lỗi, trong p-thiết sáu, 733 00:34:59,974 --> 00:35:02,390 bạn sẽ phải làm this-- nó là một cơn đau ở cổ 734 00:35:02,390 --> 00:35:03,930 để nối dây. 735 00:35:03,930 --> 00:35:04,670 Tại sao? 736 00:35:04,670 --> 00:35:06,580 Vâng, bởi vì nếu bạn đã có một chuỗi đó là lâu nay, 737 00:35:06,580 --> 00:35:09,538 và một chuỗi đó là lâu nay, bạn không thể chỉ cần cắm chúng với nhau. 738 00:35:09,538 --> 00:35:11,070 Điều gì làm bạn thay vì phải làm trong C? 739 00:35:11,070 --> 00:35:11,680 Yeah? 740 00:35:11,680 --> 00:35:12,380 >> Đung [Không nghe thấy] 741 00:35:12,380 --> 00:35:15,090 >> DAVID Malan: Bạn có để malloc bộ nhớ, hoặc sử dụng một mảng trên stack. 742 00:35:15,090 --> 00:35:17,214 Và bạn thực sự phải làm cho mảng đó đủ lớn 743 00:35:17,214 --> 00:35:20,940 để phù hợp với điều này cộng với điều này, cộng với dấu gạch chéo ngược zero. 744 00:35:20,940 --> 00:35:24,994 Sau đó ghép chúng lại với nhau bằng cách sử dụng khuấy động con mèo hoặc bằng tay với một vòng lặp for, 745 00:35:24,994 --> 00:35:26,160 hoặc bất kỳ số kỹ thuật. 746 00:35:26,160 --> 00:35:27,760 Và chúng tôi cho bạn một vài trong p-thiết sáu. 747 00:35:27,760 --> 00:35:29,080 >> Đó là một cơn đau ở cổ. 748 00:35:29,080 --> 00:35:34,190 Và đây thực sự là những gì tôi có ý nghĩa về này so với this-- như C so với PHP. 749 00:35:34,190 --> 00:35:36,870 Bạn chỉ nhận được nhiều hơn nữa chức năng miễn phí, 750 00:35:36,870 --> 00:35:39,030 để bạn có thể tập trung, lý tưởng, những ngày vui vẻ 751 00:35:39,030 --> 00:35:41,190 một phần của mã hóa, các dự án bạn muốn giải quyết, 752 00:35:41,190 --> 00:35:43,190 chứ không phải là những chi tiết vụn vặt ở mức độ thấp. 753 00:35:43,190 --> 00:35:49,840 >> Vì vậy, điều này chỉ tạo ra header.php hay footer.php dựa trên đó người ta gọi tôi. 754 00:35:49,840 --> 00:35:52,280 Và quả thực nếu tôi đi vào index.php, thông báo 755 00:35:52,280 --> 00:35:56,230 tất cả những gì changed-- Thay vì gọi làm cho tiêu đề hoặc làm footer, 756 00:35:56,230 --> 00:36:00,230 Tôi gọi render, tiếp theo là tên của mẫu mà tôi muốn làm. 757 00:36:00,230 --> 00:36:02,370 Và bạn sẽ thấy điều này, quá, trong vấn đề thiết lập bảy, 758 00:36:02,370 --> 00:36:05,530 nhờ đó mà chúng tôi cho phép bạn sử dụng các cùng chức năng để làm cho chùm 759 00:36:05,530 --> 00:36:07,550 và chùm trang web khác nhau. 760 00:36:07,550 --> 00:36:10,570 >> Vì vậy, thay vì quá nhấn nhiều hơn nữa về những details-- 761 00:36:10,570 --> 00:36:13,210 trong đó bạn sẽ thấy một lần nữa trong Vấn đề đặt seven-- hãy nhìn 762 00:36:13,210 --> 00:36:16,850 tại bây giờ là khởi đầu của một giải pháp cho một vấn đề thú vị hơn. 763 00:36:16,850 --> 00:36:19,310 Như vậy đến nay, không có gì chúng tôi đã thực hiện có dữ liệu đã lưu. 764 00:36:19,310 --> 00:36:22,920 Trong thực tế, thời gian duy nhất mà chúng tôi từng lưu một cái gì đó chúng tôi đã thực hiện trong lớp này 765 00:36:22,920 --> 00:36:31,030 là khi chúng tôi đã có một bản demo rất đơn giản một lúc trở lại, nhờ đó mà chúng tôi sử dụng file IO trong C, 766 00:36:31,030 --> 00:36:34,520 và tôi nghĩ rằng tôi đã gõ vào tên của tôi, và Tên của Hannah, và tên của Maria, 767 00:36:34,520 --> 00:36:37,610 hoặc có lẽ tên của Andy, và sau đó chúng tôi tiết kiệm được một file-- CSV 768 00:36:37,610 --> 00:36:39,430 dấu phẩy tách giá trị file. 769 00:36:39,430 --> 00:36:43,530 >> Và chúng tôi sử dụng fopen-- tôi nghĩ chúng tôi sử dụng fprintf khi tôi gọi lại, 770 00:36:43,530 --> 00:36:44,910 và chúng tôi lưu một tập tin. 771 00:36:44,910 --> 00:36:46,920 Bây giờ, đó là đơn giản nhất hình thức của một cơ sở dữ liệu. 772 00:36:46,920 --> 00:36:50,230 Nếu bạn muốn tạo ra một trang web cho các Chương trình Frosh nhắn tức thì, theo đó sinh viên năm nhất 773 00:36:50,230 --> 00:36:53,390 có thể đăng ký cho một môn thể thao, bạn lý tưởng muốn làm một cái gì đó với dữ liệu đó. 774 00:36:53,390 --> 00:36:55,370 Tuần trước, chúng tôi đã không làm gì với data-- chúng ta chỉ nói, 775 00:36:55,370 --> 00:36:56,661 bạn được đăng ký, không thực sự. 776 00:36:56,661 --> 00:36:58,950 Hoặc có thể gửi qua email của tôi giám thị, và đó là nó. 777 00:36:58,950 --> 00:37:02,110 >> Nhưng nó sẽ được tốt đẹp nếu tôi có thể cung cấp cho giám thị rằng một tập tin CSV, 778 00:37:02,110 --> 00:37:03,340 giống như một tập tin Excel. 779 00:37:03,340 --> 00:37:05,090 Hoặc tốt hơn, nó sẽ được tốt đẹp nếu tôi có thể 780 00:37:05,090 --> 00:37:08,830 đặt tên những người sử dụng và dorm tên và tất cả điều đó 781 00:37:08,830 --> 00:37:11,740 vào một cơ sở dữ liệu chỉ sống mãi mãi, 782 00:37:11,740 --> 00:37:13,530 cho đến khi tôi chọn để xóa các dữ liệu. 783 00:37:13,530 --> 00:37:15,645 Một cơ sở dữ liệu cho phép tôi để truy vấn thông tin. 784 00:37:15,645 --> 00:37:18,070 Và quả thực, đó là những gì một cơ sở dữ liệu là. 785 00:37:18,070 --> 00:37:20,470 >> Chúng tôi giới thiệu hôm nay, và Tuần tiếp theo, quá, một công nghệ 786 00:37:20,470 --> 00:37:25,020 gọi SQL-- một Query Structured Ngôn ngữ, nó là một ngôn ngữ khác. 787 00:37:25,020 --> 00:37:28,750 Đó là bản chất là một lập trình ngôn ngữ, nhưng đối với cơ sở dữ liệu. 788 00:37:28,750 --> 00:37:31,760 Và một cơ sở dữ liệu cho doanh nghiệp, chỉ nghĩ đến như là một phiên bản siêu lạ mắt 789 00:37:31,760 --> 00:37:35,710 của Microsoft Excel, hoặc Google Bảng tính, hay Numbers Apple. 790 00:37:35,710 --> 00:37:39,950 Nó thường là một chương trình cho phép bạn lưu trữ một bó toàn bộ các dữ liệu 791 00:37:39,950 --> 00:37:43,960 trong hàng và cột, khá như bạn có thể trong Excel. 792 00:37:43,960 --> 00:37:47,100 >> Nhưng những gì là tốt đẹp, đặc biệt là nếu chúng tôi không phải là siêu quen thuộc với Excel, 793 00:37:47,100 --> 00:37:52,040 những gì SQL cho phép bạn làm là truy vấn này thông tin bằng cách viết dòng mã 794 00:37:52,040 --> 00:37:55,220 nơi bạn có thể, ngay cả khi bạn cơ sở dữ liệu có một triệu hàng trong nó, 795 00:37:55,220 --> 00:37:57,190 bạn có thể tìm thấy những thứ siêu nhanh. 796 00:37:57,190 --> 00:37:59,950 Trong thực tế, đặc biệt là Excel xấu tại các tập dữ liệu lớn. 797 00:37:59,950 --> 00:38:02,460 Và trên thực tế, cho đến một vài năm trước đây, hóa ra 798 00:38:02,460 --> 00:38:08,890 Excel sẽ chỉ cho phép bạn lưu trữ lên đến 65.535 hàng data-- mà 799 00:38:08,890 --> 00:38:12,020 Nghe có vẻ như rất nhiều, nhưng đồng Hiện tôi đang là sinh viên grad, 800 00:38:12,020 --> 00:38:14,920 và tôi nhớ vấp điều này vì tôi đã tạo ra 801 00:38:14,920 --> 00:38:17,900 File CSV cho nghiên cứu của tôi và tôi muốn phân tích chúng một cách nhanh chóng 802 00:38:17,900 --> 00:38:19,530 bằng cách chỉ mở ra trong Excel. 803 00:38:19,530 --> 00:38:23,730 Tất nhiên, máy tính của tôi chỉ bị rơi, bởi vì tôi đã có hơn 65.000 dòng. 804 00:38:23,730 --> 00:38:27,210 >> Nhưng đâu là 65.535 đến từ đâu? 805 00:38:27,210 --> 00:38:29,670 Microsoft đã làm những gì, có lẽ? 806 00:38:29,670 --> 00:38:32,430 Nếu bạn tốt với quyền hạn của hai người? 807 00:38:32,430 --> 00:38:37,160 Vâng, họ đã sử dụng một 16-bit giá trị để đại diện cho số liên tiếp. 808 00:38:37,160 --> 00:38:41,310 Và hai đến 16 là 65,536-- trừ một, bởi vì nếu bạn 809 00:38:41,310 --> 00:38:45,414 chỉ số không có nghĩa đó là số lượng nhất của hàng tôi có thể có. 810 00:38:45,414 --> 00:38:46,830 Và đó chỉ là một quyết định thiết kế. 811 00:38:46,830 --> 00:38:52,760 Bằng cách tiết kiệm 16 bit, chúng tôi giới hạn 16.000 hàng, thay vì 4 tỷ đồng, 812 00:38:52,760 --> 00:38:54,322 mà tôi đã có thể có lý tưởng. 813 00:38:54,322 --> 00:38:57,030 Nhưng hiện nay, chúng ta sẽ giới thiệu đề này trong một bối cảnh web. 814 00:38:57,030 --> 00:39:00,390 Và những gì tốt đẹp về SQL mà thậm chí là mặc dù nó khá mạnh mẽ và khá 815 00:39:00,390 --> 00:39:04,050 tinh vi, nó thực sự nắm xuống đến bốn hoạt động chính, bốn 816 00:39:04,050 --> 00:39:08,060 chức năng quan trọng, nếu bạn will-- chọn, để lấy dữ liệu, tìm kiếm 817 00:39:08,060 --> 00:39:12,510 cho dữ liệu; xóa hoặc xóa dữ liệu; chèn thêm hàng cho các cơ sở dữ liệu; 818 00:39:12,510 --> 00:39:13,410 và cập nhật. 819 00:39:13,410 --> 00:39:17,010 Vì vậy, nếu bạn đã từng sử dụng Google Spreadsheets, Apple Numbers, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, bạn đã thực hiện, rất có thể, tất cả 821 00:39:19,310 --> 00:39:22,530 của các hoạt động này như là một con người bằng chỉ cần sử dụng bàn phím và mouse-- của bạn 822 00:39:22,530 --> 00:39:26,050 chèn dữ liệu, sử dụng đôi mắt của bạn để chọn hoặc tìm kiếm các dữ liệu, 823 00:39:26,050 --> 00:39:28,360 hoặc cập nhật dữ liệu, hoặc xóa dữ liệu. 824 00:39:28,360 --> 00:39:29,870 >> Vì vậy, điều này có nghĩa là gì? 825 00:39:29,870 --> 00:39:34,300 Vâng, cài đặt sẵn trong CS50 IDE là một chương trình được gọi là MySQL. 826 00:39:34,300 --> 00:39:37,050 Đó là một mã nguồn mở miễn phí cơ sở dữ liệu đó là siêu phổ biến. 827 00:39:37,050 --> 00:39:40,590 Facebook, ví dụ, sử dụng nó thế này ngày, trong số các công cụ khác mà họ sử dụng. 828 00:39:40,590 --> 00:39:44,300 Và rất nhiều các trang web rất phổ biến sử dụng nó trong phần lớn bởi vì nó nhanh chóng, 829 00:39:44,300 --> 00:39:45,230 và bởi vì nó hoàn toàn miễn phí. 830 00:39:45,230 --> 00:39:46,820 Mặc dù chắc chắn lựa chọn thay thế tồn tại. 831 00:39:46,820 --> 00:39:49,580 Và một số bạn có thể vọc với lựa chọn thay thế cho các dự án cuối cùng. 832 00:39:49,580 --> 00:39:55,330 >> Đây là một ảnh chụp màn hình, trong khi đó, các một công cụ dựa trên web được gọi là phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Nó là một trùng hợp ngẫu nhiên mà công cụ dựa trên web này cũng là 834 00:39:58,260 --> 00:40:01,720 viết bằng một ngôn ngữ, PHP, nhưng những gì nó có nghĩa là để làm 835 00:40:01,720 --> 00:40:04,620 được cung cấp cho chúng ta một dựa trên nền web giao diện cho một cơ sở dữ liệu. 836 00:40:04,620 --> 00:40:07,180 Vì MySQL thường là một cái gì đó, lịch sử, bạn 837 00:40:07,180 --> 00:40:08,770 sẽ tương tác với chỉ với một dòng lệnh. 838 00:40:08,770 --> 00:40:10,811 Và nó sẽ là siêu gây phiền nhiễu và phức tạp để có 839 00:40:10,811 --> 00:40:14,487 gõ lệnh văn bản để chọn dữ liệu, chèn dữ liệu, và xóa dữ liệu. 840 00:40:14,487 --> 00:40:16,820 Vì vậy, một số người trên internet đã viết một chương trình dựa trên web 841 00:40:16,820 --> 00:40:18,900 mà chỉ cần cho chúng tôi quản lý các dữ liệu trong cơ sở dữ liệu của chúng tôi. 842 00:40:18,900 --> 00:40:23,040 Nó giống như cách nhấp đúp vào Excel, và chạy một phiên bản dựa trên web đó. 843 00:40:23,040 --> 00:40:26,370 >> Và những gì bạn đang sử dụng này cho cuối cùng vào tuần tới, không phải trong p-thiết sáu, 844 00:40:26,370 --> 00:40:28,680 nhưng là để xây dựng một cái gì đó gọi là CS50 Tài chính, 845 00:40:28,680 --> 00:40:32,630 là sẽ có một cơ sở dữ liệu của người sử dụng, với tên người dùng và mật khẩu, 846 00:40:32,630 --> 00:40:34,860 số tiền đô la mà họ có trong tài khoản ngân hàng của họ. 847 00:40:34,860 --> 00:40:37,280 Nó sẽ một cái gì đó bạn sử dụng để lưu trữ 848 00:40:37,280 --> 00:40:39,910 các biểu tượng và số lượng các cổ phiếu mà người dùng 849 00:40:39,910 --> 00:40:42,567 đã mua sử dụng ảo đô la mà bạn sẽ cung cấp cho họ. 850 00:40:42,567 --> 00:40:44,900 Và nó sẽ cho phép người dùng đăng ký cho trang web của bạn, 851 00:40:44,900 --> 00:40:47,190 vì vậy mà ngay cả bạn bè của bạn có thể điều chỉnh để trang web của bạn 852 00:40:47,190 --> 00:40:49,360 và thực sự đăng ký, đăng nhập và chơi xung quanh 853 00:40:49,360 --> 00:40:52,807 và cố gắng để tìm lỗi trong mã của bạn, và cố gắng tìm lỗi trong trang web của bạn. 854 00:40:52,807 --> 00:40:55,390 Và họ sẽ chỉ cần đăng ký bằng thêm bản thân, có hiệu quả, 855 00:40:55,390 --> 00:40:58,120 thông qua mã bạn viết thư cho cơ sở dữ liệu của bạn. 856 00:40:58,120 --> 00:41:02,470 >> Ví dụ, đây là một ảnh chụp màn hình nhanh chóng của những gì một cơ sở dữ liệu có thể trông như thế nào. 857 00:41:02,470 --> 00:41:05,190 Đây là một trong những từ solutions-- năm ngoái 858 00:41:05,190 --> 00:41:07,760 điều này giống như một Excel nhỏ nộp, lưu trữ trong cơ sở dữ liệu của chúng tôi, 859 00:41:07,760 --> 00:41:09,950 được lưu trữ trong phần mềm này được gọi là MySQL. 860 00:41:09,950 --> 00:41:13,260 Ở phía bên tay trái, tôi đã rõ ràng cho mỗi người sử dụng một số duy nhất. 861 00:41:13,260 --> 00:41:16,200 Trong cột thứ hai, tôi đã cho tất cả mọi người một người dùng name-- của riêng tôi 862 00:41:16,200 --> 00:41:16,880 trong số đó. 863 00:41:16,880 --> 00:41:21,430 Và phía bên tay phải, Tôi đã cho họ một hash. 864 00:41:21,430 --> 00:41:26,760 >> Bây giờ điều này thực sự là một mật khẩu, nhưng nó không phải là một mật khẩu văn bản đơn giản. 865 00:41:26,760 --> 00:41:30,160 Đó là một mật khẩu được mã hóa, nếu bạn sẽ, hoặc một mật khẩu băm. 866 00:41:30,160 --> 00:41:32,000 Mà chúng ta sẽ trở lại trước khi dài. 867 00:41:32,000 --> 00:41:34,340 >> Nhưng nếu bạn đã từng đọc một bài viết về cách 868 00:41:34,340 --> 00:41:37,950 mật khẩu của bạn tại một số ngân hàng hoặc một số trang web có thể đã bị xâm nhập, 869 00:41:37,950 --> 00:41:39,630 nó thường có thể có nghĩa là một trong hai điều. 870 00:41:39,630 --> 00:41:42,780 Vì vậy, đây chỉ là một đoạn trích của sáu người. 871 00:41:42,780 --> 00:41:45,460 Tất cả các bạn bây giờ có thể hình dung ra qua hack hay nứt 872 00:41:45,460 --> 00:41:47,690 gì các mật khẩu sáu người của chúng ta đang có. 873 00:41:47,690 --> 00:41:49,720 Nhưng nếu bạn đã bao giờ nhận được một cảnh báo hoặc một lời xin lỗi 874 00:41:49,720 --> 00:41:52,803 từ một công ty hoặc trang web của câu nói, xin lỗi, một hacker đã đột nhập vào cơ sở dữ liệu của chúng tôi, 875 00:41:52,803 --> 00:41:56,360 có lẽ bạn nên thay đổi của bạn mật khẩu, những gì có nghĩa là gì? 876 00:41:56,360 --> 00:41:59,670 >> Vâng, một, có nghĩa là sự công ty đã được moronic hơn, 877 00:41:59,670 --> 00:42:03,630 và đã được lưu trữ mật khẩu của bạn trong một cột như thế này, không được mã hóa. 878 00:42:03,630 --> 00:42:05,840 Có nghĩa là kẻ thù, người đã ăn cắp cơ sở dữ liệu, 879 00:42:05,840 --> 00:42:07,440 nghĩa là biết của bạn tên người dùng và mật khẩu. 880 00:42:07,440 --> 00:42:08,960 Đó là kịch bản tồi tệ nhất có thể. 881 00:42:08,960 --> 00:42:11,710 Và như bạn sẽ thấy trong p-set bảy, dễ dàng như vậy để tránh. 882 00:42:11,710 --> 00:42:15,624 Hoàn toàn không có lý do gì để mà hình thức của sự ngu si trong Internet ngày nay. 883 00:42:15,624 --> 00:42:18,540 Two-- và chúng tôi sẽ tìm thấy một số bài viết để làm chứng một thực tế rằng điều này vẫn 884 00:42:18,540 --> 00:42:21,710 xảy ra, nonetheless-- hai, có lẽ các đối thủ 885 00:42:21,710 --> 00:42:23,840 đánh cắp phiên bản này của các cơ sở dữ liệu. 886 00:42:23,840 --> 00:42:27,110 Đó vẫn là loại xấu, bởi vì bây giờ họ biết rằng tôi có sáu khách hàng, 887 00:42:27,110 --> 00:42:29,270 Tôi biết tên người dùng của những sáu khách hàng, 888 00:42:29,270 --> 00:42:32,910 và tôi biết được mã hóa phiên bản, hoặc các phiên bản băm, 889 00:42:32,910 --> 00:42:34,340 mật khẩu những sáu của khách hàng. 890 00:42:34,340 --> 00:42:37,010 Nhưng bất kỳ của bạn, những người có đã thực hiện [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 nơi bạn bị nứt mật khẩu, hoặc mất một nhìn vào đó phiên bản của vấn đề 892 00:42:41,150 --> 00:42:46,280 tập hợp, tại sao nó vẫn còn một chút đáng lo ngại nếu đối thủ biết băm của bạn 893 00:42:46,280 --> 00:42:47,435 mật khẩu? 894 00:42:47,435 --> 00:42:49,732 >> Đung Bởi vì họ có thể nhập toàn bộ từ điển 895 00:42:49,732 --> 00:42:50,690 vào hàm băm. 896 00:42:50,690 --> 00:42:54,520 Và nếu mật khẩu của bạn là một từ điển từ, [? họ chỉ có thể match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID Malan: Chính xác, các đối thủ chỉ có thể viết mã, giống như một số bạn 898 00:42:57,640 --> 00:43:00,526 đã làm cho [? Hacker?] 2, nhờ đó bạn lặp qua 899 00:43:00,526 --> 00:43:03,400 tất cả các từ trong từ điển, hoặc tất cả các kết hợp có thể có của A 900 00:43:03,400 --> 00:43:06,610 đến Z và một qua nine-- mà âm thanh như rất nhiều, và nó được. 901 00:43:06,610 --> 00:43:08,361 Nhưng đối với một máy tính, nó khá darn nhanh. 902 00:43:08,361 --> 00:43:10,610 Và trên thực tế, đó là điểm của [? Hacker 2,?] Là 903 00:43:10,610 --> 00:43:12,540 để có thứ đó nghĩa đen trông như thế này, 904 00:43:12,540 --> 00:43:14,900 và đảo ngược những gì nó thực sự được. 905 00:43:14,900 --> 00:43:17,270 >> Vì vậy, chúng tôi sẽ xem làm thế nào chúng ta có thể lưu trữ này hiệu quả hơn. 906 00:43:17,270 --> 00:43:20,210 Hóa ra, may mắn trong MySQL, có sẽ được loại dữ liệu. 907 00:43:20,210 --> 00:43:22,800 Và một trong những phần thú vị về thiết kế cơ sở dữ liệu, phải trung thực, 908 00:43:22,800 --> 00:43:25,810 là thực sự quyết định cho chính mình làm thế nào bạn nên đại diện cho dữ liệu? 909 00:43:25,810 --> 00:43:29,630 Bạn nên đại diện cho một số điện thoại như một int, như một số lượng lớn, hoặc một lâu? 910 00:43:29,630 --> 00:43:31,630 Hoặc bạn có thực sự làm điều đó như là một chuỗi các ký tự? 911 00:43:31,630 --> 00:43:33,780 Và có thể có rất tác động không nhỏ của việc này. 912 00:43:33,780 --> 00:43:36,714 >> Trong thực tế, một trong những sớm nhất, vui vẻ chuyện Gecman 913 00:43:36,714 --> 00:43:39,880 là khi Mark Zuckerberg đã được xây dựng Facebook, ban đầu nó được viết bằng, 914 00:43:39,880 --> 00:43:42,300 và vẫn là chủ yếu viết bằng PHP. 915 00:43:42,300 --> 00:43:45,400 Và một trong những thách thức lớn nhất họ phải đối mặt sớm được nhân rộng. 916 00:43:45,400 --> 00:43:48,820 Khi họ lại thêm vào học sau trường sau giờ học, kiến ​​thức của tôi, 917 00:43:48,820 --> 00:43:51,639 một trong những giải pháp ban đầu về cơ bản để sao chép và dán 918 00:43:51,639 --> 00:43:53,430 một số cơ sở dữ liệu và một số các mã, 919 00:43:53,430 --> 00:43:55,346 để Havard chạy trên máy chủ riêng của mình, 920 00:43:55,346 --> 00:43:56,995 và MIT đã được chạy trên máy chủ riêng của mình. 921 00:43:56,995 --> 00:43:59,120 Và đây là lý do tại sao, đối với một số bạn của những người có thể nhớ lại, 922 00:43:59,120 --> 00:44:01,510 bạn không thể có bạn bè trong các mạng khác. 923 00:44:01,510 --> 00:44:05,050 >> Bạn có lẽ không có bạn bè MIT hay Harvard 10 hoặc hơn năm trước, 924 00:44:05,050 --> 00:44:07,467 nhưng bạn không thể trải rộng mạng lưới cho một phần lý do đó. 925 00:44:07,467 --> 00:44:10,550 Và một trong những thách thức lớn nhất đối với Mark và cho các công ty như Facebook 926 00:44:10,550 --> 00:44:13,460 là thực sự xử lý hàng trăm và hàng ngàn và hàng triệu 927 00:44:13,460 --> 00:44:14,460 yêu cầu mỗi giây. 928 00:44:14,460 --> 00:44:16,501 Vì vậy, những điều chúng ta sẽ bắt đầu nói về tuần này 929 00:44:16,501 --> 00:44:19,860 đang thực sự sẽ được Gecman để viết phần mềm tốt, và phổ biến 930 00:44:19,860 --> 00:44:23,040 công cụ thành công có thể xử lý rất nhiều người dùng. 931 00:44:23,040 --> 00:44:25,460 >> Vì vậy, chúng ta sẽ nói về những điều như lập chỉ mục và tìm kiếm, 932 00:44:25,460 --> 00:44:26,910 nhưng đó là nó cho ngày hôm nay. 933 00:44:26,910 --> 00:44:28,780 Chúng ta sẽ thấy bạn cho thêm vào ngày thứ Tư. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIC - "Seinfeld" THEME] 936 00:44:33,902 --> 00:44:35,943 DAVID Malan: Bạn có thể đến nó, và trừ đi từ nó. 937 00:44:35,943 --> 00:44:38,859 Và bạn không cần phải gắn bó với một số lượng tiền xác định của bộ nhớ. 938 00:44:38,859 --> 00:44:40,580 Vâng, có chuyện gì đó sẽ được gọi là gì? 939 00:44:40,580 --> 00:44:42,369 >> SPEAKER 1: Vâng, những gì đang xảy ra? 940 00:44:42,369 --> 00:44:43,535 SPEAKER 2: bạn có ý nghĩa gì? 941 00:44:43,535 --> 00:44:44,451 Ông đem lại cho một bài giảng. 942 00:44:44,451 --> 00:44:47,650 DAVID Malan: Và chúng ta có thể sử dụng một chức năng gọi là malloc để memory-- 943 00:44:47,650 --> 00:44:50,050 >> SPEAKER 1: Tại sao không phải là cánh tay của mình di chuyển? 944 00:44:50,050 --> 00:44:52,450 >> SPEAKER 2: Vâng that's-- bạn biết, đó là bình thường. 945 00:44:52,450 --> 00:44:57,162 Nó giống như ông đã chỉ xúc xích lớn treo ở đó. 946 00:44:57,162 --> 00:44:59,040 >> SPEAKER 1: Đó là bình thường? 947 00:44:59,040 --> 00:45:03,096 >> SPEAKER 2: Vâng, tôi nghĩ chúng tôi chỉ là giả định ông vô tình 948 00:45:03,096 --> 00:45:06,840 thay thế chất khử mùi của mình với keo siêu dính. 949 00:45:06,840 --> 00:45:07,608