1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [音乐播放] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN:这是CS50,和 这是八周的开始。 5 00:00:13,350 --> 00:00:17,510 而且我们很高兴地欢迎 背,大惊喜,CS50自己的拉蒙 6 00:00:17,510 --> 00:00:22,160 高尔文,上升资深谁一直 消费在过去的几个月 7 00:00:22,160 --> 00:00:26,190 自七月在洛杉矶,在好莱坞, 从字面上工作一个全新的电视 8 00:00:26,190 --> 00:00:31,930 节目叫殖民地,它的创造者 实际上是一个哈佛大学的明矾自己。 9 00:00:31,930 --> 00:00:36,610 所以,我们非常兴奋地看到这一 首次亮相美国网络今年一月上。 10 00:00:36,610 --> 00:00:40,370 敬请关注这一点,对于 对于周更拉蒙来。 11 00:00:40,370 --> 00:00:42,550 >> 知道现在到底是近了。 12 00:00:42,550 --> 00:00:47,400 而这是什么意思是,有没有 所有的东西离开了CS50的,痛心地说。 13 00:00:47,400 --> 00:00:49,400 我们只有三个问题 套left--有 14 00:00:49,400 --> 00:00:52,510 问题集six--这是在 你的手现在还是很快就会被, 15 00:00:52,510 --> 00:00:56,080 由于稍后week--是为了弥补 我们在命令行中,其中世界 16 00:00:56,080 --> 00:00:59,450 我们已经花费了我们大部分的时间用 C和Web编程的世界。 17 00:00:59,450 --> 00:01:02,350 那么,你会看到很多的想法 在命令行工作借来的, 18 00:01:02,350 --> 00:01:04,560 但也有很多新的 而有趣的想法 19 00:01:04,560 --> 00:01:07,929 这也将是有密切关系的 移动应用和技术, 20 00:01:07,929 --> 00:01:10,470 更一般地,使用它 人都熟悉时下 21 00:01:10,470 --> 00:01:12,090 在笔记本电脑和手机等。 22 00:01:12,090 --> 00:01:15,220 >> 所以,你将实现不 一个网页,或网站 23 00:01:15,220 --> 00:01:17,620 本身,而是实际的web服务器。 24 00:01:17,620 --> 00:01:21,590 您将编写一个Web服务器的其它部分 C语言编写的,其目的在生活中 25 00:01:21,590 --> 00:01:25,410 是接收的HTTP请求,那些 我们一直谈论的虚拟信封 26 00:01:25,410 --> 00:01:29,780 对了,居然无论是与回应 一些静态内容 - 就像一个圆点的HTML 27 00:01:29,780 --> 00:01:32,310 文件,或一点阵JPEG或 任何其他数量的文件, 28 00:01:32,310 --> 00:01:37,070 甚至是PHP文件,由此您的Web 服务器将解释该PHP 29 00:01:37,070 --> 00:01:38,332 代码和吐出的结果。 30 00:01:38,332 --> 00:01:40,540 现在,我们为您提供 相当多的框架 31 00:01:40,540 --> 00:01:43,100 对于它 - 确实 对于问题的分布码 32 00:01:43,100 --> 00:01:47,496 组六超过1000行代码,一个 很多这是注释,是fair-- 33 00:01:47,496 --> 00:01:49,370 但这实际上意味着 为契机 34 00:01:49,370 --> 00:01:52,570 让你的手脏跳水 到一个相当大的项目 35 00:01:52,570 --> 00:01:55,570 我们已经非常明确 雕刻出件的你, 36 00:01:55,570 --> 00:01:59,046 这样真的,当你退出CS50和 进入编程的真实世界 37 00:01:59,046 --> 00:02:00,920 并希望涉足 任何数量的项目, 38 00:02:00,920 --> 00:02:03,253 你将有更大的 舒适下载一些源 39 00:02:03,253 --> 00:02:05,020 代码,一些开源 项目在网络上, 40 00:02:05,020 --> 00:02:08,174 和潜水,使 你认为合适的变化。 41 00:02:08,174 --> 00:02:11,340 习题集七是将是关于 使自己的基于Web的应用程序 42 00:02:11,340 --> 00:02:14,140 这需要动态输入和 产生动力输出形式 43 00:02:14,140 --> 00:02:16,920 的etrade.com样的网站。 44 00:02:16,920 --> 00:02:20,800 而问题集8将集中在尚未 已知以JavaScript另一种语言。 45 00:02:20,800 --> 00:02:24,170 >> 同时,最终 项目是在地平线上。 46 00:02:24,170 --> 00:02:26,800 所谓预提案 一个星期从今天到期。 47 00:02:26,800 --> 00:02:29,930 按照规范的预proposal--, 这是对CS50的website-- 48 00:02:29,930 --> 00:02:33,260 是一个很随意的机会 你发送一个非常简洁的电子邮件 49 00:02:33,260 --> 00:02:35,170 你的助教 只是通知他 50 00:02:35,170 --> 00:02:38,250 (她),你在想什么, 用他或她作为一个传声筒。 51 00:02:38,250 --> 00:02:40,980 而有理智check-- 不管你是想 52 00:02:40,980 --> 00:02:43,210 关于贪得 太多或者太少, 53 00:02:43,210 --> 00:02:46,480 也许你无论如何也没办法 并希望与其进行通话。 54 00:02:46,480 --> 00:02:48,480 >> 其后是一个建议 和状态报告, 55 00:02:48,480 --> 00:02:51,860 所谓CS50这里在黑客马拉松 剑桥哈佛和耶鲁大学的学生 56 00:02:51,860 --> 00:02:52,362 一致好评。 57 00:02:52,362 --> 00:02:54,320 最后一个项目的 实现是那么所致。 58 00:02:54,320 --> 00:02:59,290 然后这里CS50公平,在剑桥, 还有另外一个在纽黑文。 59 00:02:59,290 --> 00:03:02,500 所以建议,看看 该网站的详情。 60 00:03:02,500 --> 00:03:06,530 >> 但更令人兴奋的,也同样是一个 机会,让你的手脏, 61 00:03:06,530 --> 00:03:09,350 和你的头脑开放给整个 一堆的主题和工具 62 00:03:09,350 --> 00:03:12,920 和技术,是辅助 该课程的核心教学大纲, 63 00:03:12,920 --> 00:03:14,810 但仍然相关。 64 00:03:14,810 --> 00:03:18,400 而同样精彩垫脚石 这样做很酷的最终项目 65 00:03:18,400 --> 00:03:22,020 远远超出了我们的材料已经覆盖 正式的问题在课堂上设置或。 66 00:03:22,020 --> 00:03:24,446 所以去CS50的网站 研讨会整个花名册。 67 00:03:24,446 --> 00:03:26,070 如果你还没有注册,这很好。 68 00:03:26,070 --> 00:03:29,860 来吧,注册仍然和我们将 跟进直播流媒体链接, 69 00:03:29,860 --> 00:03:31,844 的日期和时间是在网站上。 70 00:03:31,844 --> 00:03:33,760 所有的一切都将是 记录下来,放到网上 71 00:03:33,760 --> 00:03:35,800 如果你不能使 特别的日期和时间。 72 00:03:35,800 --> 00:03:39,380 >> 至于什么样的未来thereafter--好, 当然,还有的CS50黑客马拉松。 73 00:03:39,380 --> 00:03:43,560 这张照片,回忆,从零一周拍摄 凌晨4点左右的一个晚上在过去的几年。 74 00:03:43,560 --> 00:03:46,900 该CS50公平,这再次 将在这两个城市。 75 00:03:46,900 --> 00:03:49,760 然后,只需厂 种子,尽管我们仍然 76 00:03:49,760 --> 00:03:54,080 有一个月加左学期,如果 你想加入CS50自己的教学 77 00:03:54,080 --> 00:03:56,770 工作人员,并且要开始 想成为一个CA, 78 00:03:56,770 --> 00:03:59,550 或教学老乡,知道 我们将开始谈论更多关于 79 00:03:59,550 --> 00:04:00,630 后来这个学期。 80 00:04:00,630 --> 00:04:03,470 但图为 今年大部分时间的球队。 81 00:04:03,470 --> 00:04:06,950 >> 因此,PHP--我很伤心 上周[? Allyse?]好心 82 00:04:06,950 --> 00:04:09,370 去得到的努力 我们这些精彩的道具 83 00:04:09,370 --> 00:04:11,720 我没有使用结束,所以 真的只是看上去有点傻 84 00:04:11,720 --> 00:04:15,160 我们有一个铁锹坐在这里所有 日上周三,和一个小勺子。 85 00:04:15,160 --> 00:04:17,709 但是,这是我的隐喻 试图描绘方式 86 00:04:17,709 --> 00:04:21,600 为什么我们过渡的图片 从C到PHP之类的语言。 87 00:04:21,600 --> 00:04:25,480 并且同样可以的任何所述 languages​​--的Java,Python和Ruby的数量 88 00:04:25,480 --> 00:04:31,270 的others--但而在或串 C,比如,编写C语言程序 89 00:04:31,270 --> 00:04:34,050 通常可能是这样 采取这样的勺子 90 00:04:34,050 --> 00:04:36,770 而挖的一个洞 地面上,在沙或污物。 91 00:04:36,770 --> 00:04:39,770 PHP可以让你花费太多 大咬出了问题, 92 00:04:39,770 --> 00:04:42,842 编写更少的代码 用小得多的工具, 93 00:04:42,842 --> 00:04:45,050 因为有这么多 功能拼凑研究。 94 00:04:45,050 --> 00:04:47,633 >> 现在,如果我们真的是戏剧性的, 我们不得不有所铲 95 00:04:47,633 --> 00:04:48,760 在这里,但就这样吧。 96 00:04:48,760 --> 00:04:51,370 同时,其它 比喻,我们想出了 97 00:04:51,370 --> 00:04:53,770 是的,当然,你可以 使用类似扳手 98 00:04:53,770 --> 00:04:56,610 锤的东西都像钉子。 99 00:04:56,610 --> 00:04:58,980 不过,当然,合适的 使用的工具是怎么回事 100 00:04:58,980 --> 00:05:01,360 是没有这么多的 所谓的语言C-- 101 00:05:01,360 --> 00:05:03,590 现在我只是生气 [?桑德斯?]也许, 102 00:05:03,590 --> 00:05:07,890 我们将解决这个问题later--如此 正确的工具经常使用 103 00:05:07,890 --> 00:05:09,640 是不会被 这种最低水平的工具。 104 00:05:09,640 --> 00:05:13,720 事实上,C是不是一种语言, 你们中的大多数都曾经打算使用, 105 00:05:13,720 --> 00:05:15,590 还是应该必然再次使用。 106 00:05:15,590 --> 00:05:18,350 >> 而事实上,一个小 secret--唯一一次 107 00:05:18,350 --> 00:05:23,160 我用C自己之间几乎 每一个秋天的九月和十二月 108 00:05:23,160 --> 00:05:23,870 学期。 109 00:05:23,870 --> 00:05:25,790 那是因为我们 以此为契机 110 00:05:25,790 --> 00:05:27,852 教基本面 编程, 111 00:05:27,852 --> 00:05:29,810 并与它的计算机 科学的基本原理,数据 112 00:05:29,810 --> 00:05:32,435 结构,算法和 like--但很快会把你 113 00:05:32,435 --> 00:05:35,010 现在看到的语法 和思想基础C 114 00:05:35,010 --> 00:05:37,530 如此奇妙 转移到更现代的 115 00:05:37,530 --> 00:05:41,130 更高层次的语言,如 PHP和Python和Perl和Java 116 00:05:41,130 --> 00:05:46,750 和Objective-C--其实,与其说 目的-C--但斯威夫特,这些新 117 00:05:46,750 --> 00:05:50,010 语言是很多人都会 然后涉足与你最后的项目。 118 00:05:50,010 --> 00:05:55,070 >> 因此,事不宜迟,让我们真正 使用PHP来解决一些问题。 119 00:05:55,070 --> 00:06:00,230 回想一下,在年初,去年 本周,我们只是用CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 我们写了一个极小的小程序 只是说,“世界,你好。” 121 00:06:02,990 --> 00:06:05,680 然后我救了它 称为文件hello.php。 122 00:06:05,680 --> 00:06:07,280 然后我跑了这个命令。 123 00:06:07,280 --> 00:06:08,080 >> 为什么? 124 00:06:08,080 --> 00:06:09,900 在英语中,这是怎么回事吗? 125 00:06:09,900 --> 00:06:12,760 什么是我在做的时候 我跑这个命令? 126 00:06:12,760 --> 00:06:13,405 >> 是吗? 127 00:06:13,405 --> 00:06:16,572 >> 听众:有一些功能PHP 读什么in--明白这一点。 128 00:06:16,572 --> 00:06:19,696 DAVID马兰:好,有一些功能 PHP--,让我更具体, 129 00:06:19,696 --> 00:06:21,810 有一个名为PHP程序,又名 130 00:06:21,810 --> 00:06:25,872 一个解释,那理解 hello.php的内容, 131 00:06:25,872 --> 00:06:27,830 和顶部解释它 底部,左到右, 132 00:06:27,830 --> 00:06:29,590 然后做了这些命令说。 133 00:06:29,590 --> 00:06:33,320 当然,在hello.php的命令, 仅仅是源代码 - 功能 134 00:06:33,320 --> 00:06:35,750 和变量和循环和 等等,我们自己 135 00:06:35,750 --> 00:06:37,460 已经开始使用PHP编写。 136 00:06:37,460 --> 00:06:40,240 >> 但不同于C,这是 编译语言, 137 00:06:40,240 --> 00:06:42,810 PHP你只写它,并运行它。 138 00:06:42,810 --> 00:06:46,420 你跳过了中间商的步骤 将其转换为0和1 139 00:06:46,420 --> 00:06:47,790 然后运行它。 140 00:06:47,790 --> 00:06:50,510 还等什么是这种积极的一面? 141 00:06:50,510 --> 00:06:52,690 为什么我们省略这一步? 142 00:06:52,690 --> 00:06:55,238 为什么做更多的现代语言 往往会忽略这一步呢? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 是什么好处? 145 00:07:01,220 --> 00:07:02,080 >> 或者只是直觉? 146 00:07:02,080 --> 00:07:04,200 即使我们还没有 之前写太多PHP, 147 00:07:04,200 --> 00:07:07,210 什么是有益的关于不 编译代码,你觉得呢? 148 00:07:07,210 --> 00:07:08,520 没有? 149 00:07:08,520 --> 00:07:09,610 不承诺? 150 00:07:09,610 --> 00:07:11,350 抓你的头? 151 00:07:11,350 --> 00:07:12,614 是啊。 152 00:07:12,614 --> 00:07:13,600 >> 听众:更有活力。 153 00:07:13,600 --> 00:07:14,683 >> DAVID马兰:更多的活力呢? 154 00:07:14,683 --> 00:07:16,032 你是什​​么意思? 155 00:07:16,032 --> 00:07:17,000 >> 听众:[听不清] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID马兰:OK,好,所以 取决于输入, 158 00:07:22,390 --> 00:07:23,470 你不必每次都进行编译。 159 00:07:23,470 --> 00:07:24,990 它真的是为 简单that--什么 160 00:07:24,990 --> 00:07:26,990 继续点 编译代码? 161 00:07:26,990 --> 00:07:29,480 这仅仅是一个步骤中的 making--这是需要, 162 00:07:29,480 --> 00:07:31,900 在过去的几 周,两倍的步骤 163 00:07:31,900 --> 00:07:33,820 作为刚刚运行您的程序。 164 00:07:33,820 --> 00:07:36,940 它是有益的看到你 看到一些错误信息等等, 165 00:07:36,940 --> 00:07:38,720 但它仍然只是一个恼人的一步。 166 00:07:38,720 --> 00:07:41,810 >> 所以程序员实现 随着时间的推移,我们为什么不 167 00:07:41,810 --> 00:07:45,327 开始编写语言的不 需要一个相当机械的步骤, 168 00:07:45,327 --> 00:07:47,160 这样就可以只写 你的代码并运行它。 169 00:07:47,160 --> 00:07:48,920 但究竟是什么价格 我们看到,我们付出 170 00:07:48,920 --> 00:07:50,910 上周,有一个具体的例子? 171 00:07:50,910 --> 00:07:51,650 是吗? 172 00:07:51,650 --> 00:07:52,370 >> 速度。 173 00:07:52,370 --> 00:07:54,690 所以,[?什么?]口译 慢一点, 174 00:07:54,690 --> 00:07:57,330 在零和一的 很好,速度很快的电脑 175 00:07:57,330 --> 00:08:00,070 要了解,因为 Intel的CPU,或不管它是什么, 176 00:08:00,070 --> 00:08:03,070 只是明白这是怎么回事 与这些位模式。 177 00:08:03,070 --> 00:08:05,370 而一名翻译 是一个程序,真的 178 00:08:05,370 --> 00:08:07,980 有读取ASCII源 您所编写的代码, 179 00:08:07,980 --> 00:08:12,700 并将其转换,可以这么说,或者 弄清楚如何将它转换最终 180 00:08:12,700 --> 00:08:13,525 到零和一。 181 00:08:13,525 --> 00:08:15,650 因此,它只是需要一点点 一个性能命中位。 182 00:08:15,650 --> 00:08:16,858 所以这是一个有点折衷。 183 00:08:16,858 --> 00:08:21,570 现在,如果我们做到这一点在这里,让我 继续前进,做一个举例如下。 184 00:08:21,570 --> 00:08:26,610 如果我走在这里,新的文件,我要去 再次保存,这是hello.php。 185 00:08:26,610 --> 00:08:31,450 现在我要继续前进 并说,“印刷世界你好” - 186 00:08:31,450 --> 00:08:35,130 和回忆,我可以使用打印,我不 必须使用打印-F。而现在到这里, 187 00:08:35,130 --> 00:08:42,039 如果我做hello.php的PHP,huh--我 似乎没有不同的方式解释它。 188 00:08:42,039 --> 00:08:43,412 我做了什么错? 189 00:08:43,412 --> 00:08:44,710 >> 听众:有角度的手镯。 190 00:08:44,710 --> 00:08:47,015 >> DAVID马兰:是的,你需要 这个角度支架往上顶。 191 00:08:47,015 --> 00:08:49,390 因此,它是一种恼人的,但 你习惯它很快。 192 00:08:49,390 --> 00:08:53,500 如果我有写PHP代码,我 一般需要告诉程序, 193 00:08:53,500 --> 00:08:56,950 或者告诉解释,嘿嘿 PHP,这里涉及一些PHP代码。 194 00:08:56,950 --> 00:09:00,440 然后,良好的措施,我想 关闭此与此,而是 195 00:09:00,440 --> 00:09:03,740 只有问号角 支架,以至于现在到这里, 196 00:09:03,740 --> 00:09:06,840 如果我跑这一次,现在 我获得所需的结果。 197 00:09:06,840 --> 00:09:09,820 >> 现在,让我们做一个轻微的优化, 只是让你以前见过它。 198 00:09:09,820 --> 00:09:14,040 这是种讨厌我 必须运行PHP空间hello.php, 199 00:09:14,040 --> 00:09:16,060 因为在过去我 可以只写点斜线 200 00:09:16,060 --> 00:09:17,560 节目的名字,这是一种很好的。 201 00:09:17,560 --> 00:09:19,420 它是一种更好的用户体验。 202 00:09:19,420 --> 00:09:24,160 >> 因此,原来你可以这样做 与following--我的PHP 203 00:09:24,160 --> 00:09:28,780 可以使用这个相当隐蔽 咒语在此处的顶部, 204 00:09:28,780 --> 00:09:31,740 这一般被称为认领, 因此,这是一个尖锐的象征, 205 00:09:31,740 --> 00:09:34,270 可以这么说,这是一个爆炸 或感叹号。 206 00:09:34,270 --> 00:09:38,490 而现在这是通向一个程序 在一个典型的Linux系统, 207 00:09:38,490 --> 00:09:41,500 被称为环境,或包膜。 208 00:09:41,500 --> 00:09:43,920 而这个line--漫长的故事 short--行一个刚 209 00:09:43,920 --> 00:09:48,710 说,哎电脑,找到PHP 环境中的解释对我来说, 210 00:09:48,710 --> 00:09:50,610 发现它在你的记忆,可以这么说。 211 00:09:50,610 --> 00:09:54,130 >> 什么是好的,现在,是 如果我去到这里, 212 00:09:54,130 --> 00:09:57,750 我可以做点斜线 你好点PHP,or--哼。 213 00:09:57,750 --> 00:09:59,000 没有权限。 214 00:09:59,000 --> 00:10:02,350 那么,你会看到更多的这 有问题设置七,如果你 215 00:10:02,350 --> 00:10:04,060 还没有准备好,与权限。 216 00:10:04,060 --> 00:10:06,510 事实证明,我需要 执行此命令 217 00:10:06,510 --> 00:10:10,779 所谓的[? chamod?]变革 mode--一个X轴正hello.php。 218 00:10:10,779 --> 00:10:13,820 我需要[听不清]这一个额外的 步骤,告诉我的电脑, 219 00:10:13,820 --> 00:10:16,400 使hello.php可执行文件。 220 00:10:16,400 --> 00:10:21,310 而现在看什么happens--点 斜线hello.php,它只是运行。 221 00:10:21,310 --> 00:10:23,310 我并不需要指定 解释了。 222 00:10:23,310 --> 00:10:26,680 我可以让它更漂亮, 不过,如果我重新命名这件事情。 223 00:10:26,680 --> 00:10:30,570 如果我移动hello.php只 Hello--所以注意到在左上角, 224 00:10:30,570 --> 00:10:32,860 该计划的名称是 实际上现在只是您好。 225 00:10:32,860 --> 00:10:37,300 现在我可以使它看起来像一个C程序, 即使它写在PHP-- 226 00:10:37,300 --> 00:10:39,210 或者坦白任何数量 其它语言。 227 00:10:39,210 --> 00:10:41,480 >> 所以边缘增强, 没有功能差异。 228 00:10:41,480 --> 00:10:44,460 但它只是一个小的好奇心 现在,这样就可以编写程序 229 00:10:44,460 --> 00:10:48,989 在任何语言,而且用户不 要知道或关心那些是什么。 230 00:10:48,989 --> 00:10:51,030 好吧,让我们来看看一个更 现在引人注目的例子 231 00:10:51,030 --> 00:10:52,850 我提前掀起了。 232 00:10:52,850 --> 00:10:54,955 这就是所谓的quote.php。 233 00:10:54,955 --> 00:10:56,740 而且它是可在网上。 234 00:10:56,740 --> 00:11:00,299 并注意这是很short-- 但它是一个命令行程序,是 235 00:11:00,299 --> 00:11:02,840 要查找股价 对我来说,这实际上是将 236 00:11:02,840 --> 00:11:04,230 是有密切关系的问题设置七人。 237 00:11:04,230 --> 00:11:05,396 >> 所以,让我们来看看我在做什么。 238 00:11:05,396 --> 00:11:08,640 在最上面我已经得到了 开放式支架问号PHP。 239 00:11:08,640 --> 00:11:13,372 然后,我已经得到了这条线,因此我 需要一个名为functions.php--文件 240 00:11:13,372 --> 00:11:15,080 我们将看到 更多关于这一点, 241 00:11:15,080 --> 00:11:17,340 但是这是像C的 版犀利包括, 242 00:11:17,340 --> 00:11:19,090 你想去哪里 包括另一个文件。 243 00:11:19,090 --> 00:11:23,720 PHP称它为要求,虽然它 也有一个包括功能。 244 00:11:23,720 --> 00:11:26,861 而事实证明,function.php是 只是我在课前写的。 245 00:11:26,861 --> 00:11:29,860 我把它放在同一个目录下,因为 我想分解出一些代码 246 00:11:29,860 --> 00:11:31,800 我们可能要在其他地方使用。 247 00:11:31,800 --> 00:11:34,560 >> 同时,你也许可以 推断出是怎么回事。 248 00:11:34,560 --> 00:11:39,200 这是C--,但有一点不同 这是什么意思通过确保正确使用? 249 00:11:39,200 --> 00:11:41,180 技术上更翻译此。 250 00:11:41,180 --> 00:11:45,950 在什么情况下我是 退出程序,或退出? 251 00:11:45,950 --> 00:11:47,074 是吗? 252 00:11:47,074 --> 00:11:47,990 >> 听众:当你不具备 两个命令行参数。 253 00:11:47,990 --> 00:11:49,480 >> DAVID马兰:如果我没有 以命令行参数。 254 00:11:49,480 --> 00:11:52,396 请记住,其中之一 参数是该程序的名称本身。 255 00:11:52,396 --> 00:11:55,340 和第二将是 一个字我提示符后键入。 256 00:11:55,340 --> 00:11:57,460 所以就像C,这 是我的检查方式, 257 00:11:57,460 --> 00:12:00,022 没有用户合作, 运行该程序,因为我打算? 258 00:12:00,022 --> 00:12:01,730 现在,有什么东西 有一点不同 259 00:12:01,730 --> 00:12:04,020 与C--首先我们 有这样的美元符号, 260 00:12:04,020 --> 00:12:07,710 什么做一美元 签署表示在PHP? 261 00:12:07,710 --> 00:12:08,440 只是一个变量。 262 00:12:08,440 --> 00:12:11,731 这是all--只是一个变量后跟 无论你想实际调用它。 263 00:12:11,731 --> 00:12:14,000 请注意,有一些东西 从我的PHP程序缺失, 264 00:12:14,000 --> 00:12:18,210 就像它缺少最后 本周,对C,这是什么? 265 00:12:18,210 --> 00:12:21,620 >> A型,而且别的东西。 266 00:12:21,620 --> 00:12:26,409 没有东西 function--主要功能。 267 00:12:26,409 --> 00:12:27,450 有没有主要功能。 268 00:12:27,450 --> 00:12:29,680 你刚开始写 你的代码,而不必 269 00:12:29,680 --> 00:12:32,790 担心一个比较随意 命名一些默认的约定 270 00:12:32,790 --> 00:12:33,880 功能为主。 271 00:12:33,880 --> 00:12:36,720 所以ARG C是真的 一个全局变量 272 00:12:36,720 --> 00:12:39,049 该解释 使提供给我。 273 00:12:39,049 --> 00:12:40,090 现在,这是有趣的。 274 00:12:40,090 --> 00:12:41,140 所以查找的东西。 275 00:12:41,140 --> 00:12:43,370 美元符号的股票是在 离开了,这是我的变量。 276 00:12:43,370 --> 00:12:45,120 在右手侧, 有明显 277 00:12:45,120 --> 00:12:50,270 在PHP中的函数调用查找的 我通过我的最后一个命令行 278 00:12:50,270 --> 00:12:51,902 参数用于:不管这个词。 279 00:12:51,902 --> 00:12:53,610 我们将看到如何 工作在一个时刻。 280 00:12:53,610 --> 00:12:55,380 >> 然后最后我汇报的价格。 281 00:12:55,380 --> 00:12:58,650 我打印一颗颗 份额如此这般。 282 00:12:58,650 --> 00:13:02,082 请记住,这是 在PHP--在PHP--的方式方法 283 00:13:02,082 --> 00:13:04,290 在这里,你不必做 美元符号s了。 284 00:13:04,290 --> 00:13:06,782 你可以只用花括号 并插入一些变量。 285 00:13:06,782 --> 00:13:09,240 你不必担心 用printf以同样的方式。 286 00:13:09,240 --> 00:13:13,530 >> 而作为一个不谈,当你把一个变量 双引号像这里面, 287 00:13:13,530 --> 00:13:17,370 您使用的是看中技术 所谓的变量插值。 288 00:13:17,370 --> 00:13:20,380 它只是意味着插上变量在这里。 289 00:13:20,380 --> 00:13:23,760 而作为一个抛开你,有的谁进来 从其他编程背景, 290 00:13:23,760 --> 00:13:26,960 你可能不使用单引号 字串,做到这一点。 291 00:13:26,960 --> 00:13:30,290 您必须使用双引号 变量代换工作。 292 00:13:30,290 --> 00:13:32,740 否则,你会从字面上 看到这些花括号。 293 00:13:32,740 --> 00:13:34,500 >> 所以,最后,让我们继续并运行此。 294 00:13:34,500 --> 00:13:36,690 让我做我的终端大些。 295 00:13:36,690 --> 00:13:41,940 让我继续运行 在我引用的目录。 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [?报价?] PHP的报价点PHP, 297 00:13:46,950 --> 00:13:50,290 而我要寻找的东西 就像歌,这是它的股票代码, 298 00:13:50,290 --> 00:13:55,510 和一个共享的新名称, 字母表公司,花费$ 717到今天为止。 299 00:13:55,510 --> 00:13:58,680 好吧,如果我们想 再次运行此,任何人 300 00:13:58,680 --> 00:14:02,600 还有一个股票行情 他们想看看吗? 301 00:14:02,600 --> 00:14:06,770 >> 微软,我认为是 这其中,MSFT-- $ 53 302 00:14:06,770 --> 00:14:09,720 我认为雅虎是可能的。 303 00:14:09,720 --> 00:14:12,130 而Facebook是。 304 00:14:12,130 --> 00:14:13,740 >> 那么,什么是这个程序在做什么? 305 00:14:13,740 --> 00:14:16,306 魔术似乎被嵌入 在查找功能。 306 00:14:16,306 --> 00:14:17,430 因此,让我们快速浏览一下。 307 00:14:17,430 --> 00:14:21,815 >> 事实证明,不来 用PHP,它在functions.php中。 308 00:14:21,815 --> 00:14:23,690 我们不会通过 这很详细, 309 00:14:23,690 --> 00:14:28,040 但注意的词这里 上functions.php--六线 310 00:14:28,040 --> 00:14:29,440 我从字面上说功能。 311 00:14:29,440 --> 00:14:31,050 我指定我的函数的名称。 312 00:14:31,050 --> 00:14:34,330 我然后指定任何 参数,或者参数, 313 00:14:34,330 --> 00:14:36,480 我想这功能take--没有类型。 314 00:14:36,480 --> 00:14:37,580 然后,我实现它。 315 00:14:37,580 --> 00:14:39,240 >> 我会挥挥手 在实施中, 316 00:14:39,240 --> 00:14:42,115 因为它是相当先进的右 现在,但我们会再次看到它实际上 317 00:14:42,115 --> 00:14:44,700 在一个星期中的问题设置七人。 318 00:14:44,700 --> 00:14:47,490 但我可以打扫一下了。 319 00:14:47,490 --> 00:14:49,590 我也包括在 今天的代码版本 320 00:14:49,590 --> 00:14:52,340 的报价,其中有没有点PHP文件。 321 00:14:52,340 --> 00:14:57,270 因为什么大概是在 所谓刚引用程序的顶部? 322 00:14:57,270 --> 00:15:00,140 这所谓的shebang--的 相当神秘的咒语 323 00:15:00,140 --> 00:15:04,590 上面写着发现PHP,然后 在我的代码运行在这里。 324 00:15:04,590 --> 00:15:07,360 >> 好吧,这样带来的 我们的地方,我们离开 325 00:15:07,360 --> 00:15:09,560 最后时间 - 尽管有 一些更高级的例子。 326 00:15:09,560 --> 00:15:13,980 有任何疑问,迄今约 PHP还是我们在做什么? 327 00:15:13,980 --> 00:15:15,570 No--所有权利。 328 00:15:15,570 --> 00:15:16,180 是吗? 329 00:15:16,180 --> 00:15:19,610 >> 听众:内 HTML文件,做你 - 330 00:15:19,610 --> 00:15:22,226 [?你做 ?] [?只是打电话了吗?] 一个[听不清] PHP文件? 331 00:15:22,226 --> 00:15:23,350 DAVID马兰:好问题。 332 00:15:23,350 --> 00:15:26,070 在网络方面,我们是 从字面上即将过渡到, 333 00:15:26,070 --> 00:15:28,028 你不使用所谓的 认领在顶部, 334 00:15:28,028 --> 00:15:31,980 因为Web server--常 程序调用Apache或微软 335 00:15:31,980 --> 00:15:37,470 IIS,Internet信息服务器,或 任意数量的其他网络服务器软件, 336 00:15:37,470 --> 00:15:40,636 知道,它认为,当 一个点的PHP文件,它 337 00:15:40,636 --> 00:15:42,010 应在其上运行的解释。 338 00:15:42,010 --> 00:15:43,468 它不看那个第一行。 339 00:15:43,468 --> 00:15:45,580 所以这第一行招 只是当你 340 00:15:45,580 --> 00:15:48,330 写命令行programs-- 我们不会做超的时候, 341 00:15:48,330 --> 00:15:52,510 但它是我们的桥接方式 我们的C例子,现在我们的PHP。 342 00:15:52,510 --> 00:16:00,680 >> 因此,让我们确实弥补这个世界 在命令行天下网络 343 00:16:00,680 --> 00:16:02,230 通过执行以下操作。 344 00:16:02,230 --> 00:16:05,090 让我继续前进,绘制 在这里只是一瞬间。 345 00:16:05,090 --> 00:16:09,940 因此,如果我们有一个web服务器,或者更确切地说, 如果我们有我的笔记本电脑在这里, 346 00:16:09,940 --> 00:16:11,280 我就画这样的。 347 00:16:11,280 --> 00:16:14,250 在这里,我们有 互联网以某种形式。 348 00:16:14,250 --> 00:16:18,210 然后在这里,我们有 在building--服务器 349 00:16:18,210 --> 00:16:20,760 这是怎样的互联网 works--在这里 350 00:16:20,760 --> 00:16:23,120 与一些灯光,也许一台服务器。 351 00:16:23,120 --> 00:16:27,530 什么是真正回事 这两个连接之间? 352 00:16:27,530 --> 00:16:29,240 >> 所以在这个建筑是一个Web服务器。 353 00:16:29,240 --> 00:16:31,420 这只是一台电脑 这在运行一些操作 354 00:16:31,420 --> 00:16:34,561 系统 - 或许称为自由软件 阿帕奇,其中CS50 IDE运行。 355 00:16:34,561 --> 00:16:36,310 所以,你可以实际 觉得这个建筑 356 00:16:36,310 --> 00:16:38,579 作为建设中 这CSt0 IDE存储。 357 00:16:38,579 --> 00:16:40,870 这就是所有你 帐户,所有的你 358 00:16:40,870 --> 00:16:43,130 拥有自己的Web服务器 运行时,所有的你 359 00:16:43,130 --> 00:16:45,730 有自己独特的网址, 当我们开始讨论, 360 00:16:45,730 --> 00:16:47,280 你会看到更多的在体育组六。 361 00:16:47,280 --> 00:16:49,450 >> 这里是我的笔记本电脑的地方 其他在互联网上。 362 00:16:49,450 --> 00:16:54,550 因此,当我访问一个网址属于 对我来说,互联网流量是怎么回事 363 00:16:54,550 --> 00:16:58,360 转移到服务器,该服务器的 收到HTTP request-- 364 00:16:58,360 --> 00:17:02,900 像获得的index.html,它的 回复该网页。 365 00:17:02,900 --> 00:17:04,280 所以这是一般的范例。 366 00:17:04,280 --> 00:17:07,089 而一切行动 到现在为止的今天,一切都 367 00:17:07,089 --> 00:17:09,660 不仅是发生在 这座大楼的界限。 368 00:17:09,660 --> 00:17:12,910 我用我的笔记本电脑,但 我是连接到CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 因此,所有这些程序我跑 是服务器,它本身的内部。 370 00:17:17,369 --> 00:17:22,660 >> 但现在,让我们开始重新使用PHP 写一些实际的程序 371 00:17:22,660 --> 00:17:24,230 由网络服务器提供。 372 00:17:24,230 --> 00:17:30,320 而要做到这一点,我要去 到一大堆的例子 373 00:17:30,320 --> 00:17:33,710 这里介绍了这个想法。 374 00:17:33,710 --> 00:17:38,500 因此,这是怎样的一种奇特的方式 描述一个编程范例。 375 00:17:38,500 --> 00:17:41,540 >> 而事实上,当你退出CS50 或工作的最终项目, 376 00:17:41,540 --> 00:17:43,520 或者采取一些后续 在类中,你会开始 377 00:17:43,520 --> 00:17:45,740 地看到,天下 - 特别是已经长大了 378 00:17:45,740 --> 00:17:48,300 与语言,如C 是超低level-- 379 00:17:48,300 --> 00:17:51,290 意识到有更好 如何写软件。 380 00:17:51,290 --> 00:17:53,290 有一定的 模式可以遵循, 381 00:17:53,290 --> 00:17:57,640 整理文件的某些方面 和命名你的函数的方法, 382 00:17:57,640 --> 00:18:00,300 使长话短说, 世界已经到来了 383 00:18:00,300 --> 00:18:04,340 有一大堆缩写词 和名称进行编程的方法。 384 00:18:04,340 --> 00:18:06,260 这些都是你可以只使用技巧。 385 00:18:06,260 --> 00:18:09,660 >> 其中之一称为MVC中, 对于模型视图控制器。 386 00:18:09,660 --> 00:18:12,270 而这仅仅是为 现在,一个过于复杂 387 00:18:12,270 --> 00:18:18,960 的说你应该怎么布置方式 一个基于PHP的网站,在我们的例子。 388 00:18:18,960 --> 00:18:22,140 你如何组织你的文件, 你如何安排你的逻辑, 389 00:18:22,140 --> 00:18:26,220 的方式,可以更容易地 编写更复杂的网站? 390 00:18:26,220 --> 00:18:28,550 事实上,我们很快就会 那里用对置7。 391 00:18:28,550 --> 00:18:32,020 >> 因此,在MVC的世界里,你会 看到我们的代码一般可以 392 00:18:32,020 --> 00:18:38,290 被表征为型号代码, 或控制器的代码,或查看代码。 393 00:18:38,290 --> 00:18:40,200 而我要去 过分简单化它作为follows-- 394 00:18:40,200 --> 00:18:42,074 所述控制器是 你的程序的大脑, 395 00:18:42,074 --> 00:18:44,100 这其中所有的 有趣的逻辑发生。 396 00:18:44,100 --> 00:18:46,110 所以,一切,我们已经 写迄今在课堂上, 397 00:18:46,110 --> 00:18:48,210 是一种像控制器 代码 - 它的控制 398 00:18:48,210 --> 00:18:50,585 你的程序,你的循环,你的 条件,你的函数 399 00:18:50,585 --> 00:18:52,100 和变量和所有。 400 00:18:52,100 --> 00:18:56,160 >> 意见,现在,将是一个小 在幅材的世界更明显。 401 00:18:56,160 --> 00:18:59,360 视图是美学 你的网站。 402 00:18:59,360 --> 00:19:04,080 这就是用户sees--的图像, 在HTML表格,HTML标记,并且所有 403 00:19:04,080 --> 00:19:08,220 这一点,所有的蓬松美感 东西并不难写, 404 00:19:08,220 --> 00:19:11,380 但仅仅是要生成什么, 是所谓的观点,美观。 405 00:19:11,380 --> 00:19:13,880 和型号,最终会 是数据库stuff--这 406 00:19:13,880 --> 00:19:16,510 我们将开始深入到这些 更本周三。 407 00:19:16,510 --> 00:19:19,740 所以控制器是逻辑, 视图是审美的东西, 408 00:19:19,740 --> 00:19:23,500 和型号将是哪里 我们保存我们的实际数据。 409 00:19:23,500 --> 00:19:26,410 >> 因此,让我们看看这个更具体 用下面的例子。 410 00:19:26,410 --> 00:19:34,700 我要进入​​我的目录位置 今天的源代码 - 所有这些都 411 00:19:34,700 --> 00:19:35,770 可在网上。 412 00:19:35,770 --> 00:19:37,800 而且我要进入零版本。 413 00:19:37,800 --> 00:19:41,500 在这里,is--让我们叫它 的CS50的网站版本0。 414 00:19:41,500 --> 00:19:43,010 没有太多在这里的。 415 00:19:43,010 --> 00:19:46,810 这是一个非常简单的网页,是 可能使用什么HTML tags--刚 416 00:19:46,810 --> 00:19:48,970 从过去的例子猜? 417 00:19:48,970 --> 00:19:49,890 >> 那是什么? 418 00:19:49,890 --> 00:19:53,920 H1--可能为大黑体 标题,这标志向上顶,CS50。 419 00:19:53,920 --> 00:19:55,080 而且是在玩什么? 420 00:19:55,080 --> 00:19:55,799 是吗? 421 00:19:55,799 --> 00:19:56,840 听众:无序列表。 422 00:19:56,840 --> 00:19:59,990 DAVID马兰:无序列表中 - 所以 UL标签,也许一对夫妇LI标签。 423 00:19:59,990 --> 00:20:01,840 如果你不记得这些, 老实说,这并不重要。 424 00:20:01,840 --> 00:20:04,170 这些都是蓬松排序 HTML的实现细节 425 00:20:04,170 --> 00:20:06,378 您快速查找 和你回来的路上。 426 00:20:06,378 --> 00:20:10,040 我们将更多的精力放在编程 想法是多汁件。 427 00:20:10,040 --> 00:20:12,890 >> 那么就让我们来简单 看HTML--的确 428 00:20:12,890 --> 00:20:16,880 如果我打开查看源代码在这里,是啊, 这正是这里发生了。 429 00:20:16,880 --> 00:20:18,440 这里有一个UL标记。 430 00:20:18,440 --> 00:20:20,630 那里面嵌套是LI标签。 431 00:20:20,630 --> 00:20:24,470 然后,我借来的网址 这里实际的教学大纲。 432 00:20:24,470 --> 00:20:27,570 >> 然后在 lectures.php显然是 433 00:20:27,570 --> 00:20:31,640 另一个动态生成的页面 这将不得不让我们see--啊, 434 00:20:31,640 --> 00:20:33,170 前两周的讲座。 435 00:20:33,170 --> 00:20:36,600 所以有一周零一周,让我们 看this--如果我查看网页源代码, 436 00:20:36,600 --> 00:20:38,120 也超简单。 437 00:20:38,120 --> 00:20:42,430 这些都导致了两页 所谓week0.php和week1.php。 438 00:20:42,430 --> 00:20:44,040 所以,现在考虑发生了什么。 439 00:20:44,040 --> 00:20:50,630 >> 当我点击week0.php,我的笔记本电脑 正在为week0.php请求。 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Web服务器,也叫做CS50 IDE, 正在接收该虚拟包络。 442 00:20:58,110 --> 00:21:01,040 它看到一个消息 像,得到week0.php。 443 00:21:01,040 --> 00:21:05,060 它然后解释该文件中,顶 至底部,左到right--文件 444 00:21:05,060 --> 00:21:07,720 所谓week0.php--和 吐出的结果。 445 00:21:07,720 --> 00:21:10,510 所以此文件的内部, week0.php,必须 446 00:21:10,510 --> 00:21:15,410 在生成控制器逻辑 这个HTML,我们将很快看到。 447 00:21:15,410 --> 00:21:19,340 >> 但现在,让我点击零一周, 现在我们有三,五, 448 00:21:19,340 --> 00:21:25,260 现在我们有幻灯片 慢慢的从零一周。 449 00:21:25,260 --> 00:21:27,400 你可能还记得 这从遥想当年。 450 00:21:27,400 --> 00:21:29,340 所以,这就是这个网站是做什么。 451 00:21:29,340 --> 00:21:31,120 >> 因此,让我们考虑一下它是如何做这个。 452 00:21:31,120 --> 00:21:34,290 我要去回 这里的源代码,在CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 我要去开拓的index.php。 454 00:21:36,660 --> 00:21:38,910 在该文件的顶部 是一堆意见。 455 00:21:38,910 --> 00:21:43,000 然后在该文件中的中间,它 事实证明,没有PHP代码任何责任。 456 00:21:43,000 --> 00:21:47,380 因为如果你没有任何的 开放式支架问号PHP标签, 457 00:21:47,380 --> 00:21:49,180 你可以自由地只是把HTML。 458 00:21:49,180 --> 00:21:51,480 >> 因为是PHP 解释是应该做的, 459 00:21:51,480 --> 00:21:53,938 是当它读取该file-- 从上到下,左right-- 460 00:21:53,938 --> 00:21:59,100 它只是解释它看到的代码 这些尖括号问号。 461 00:21:59,100 --> 00:22:02,380 和其他任何它不 承认PHP,它只是吐出来。 462 00:22:02,380 --> 00:22:05,080 而HTML是其中的东西 它只会吐了出来。 463 00:22:05,080 --> 00:22:09,090 >> 因此,这个文件可以有 被称为index.html的, 464 00:22:09,090 --> 00:22:11,690 但我命名的一切 点PHP的垫脚石。 465 00:22:11,690 --> 00:22:15,960 Lectures.php--类似 给人留下深刻印象,它只是一些HTML。 466 00:22:15,960 --> 00:22:19,840 Week0.php,同样只是一些HTML。 467 00:22:19,840 --> 00:22:22,300 >> 但现在让我们把对 众所周知工程帽, 468 00:22:22,300 --> 00:22:24,400 并考虑我们如何才能改善这一点。 469 00:22:24,400 --> 00:22:28,541 这并不难做到这一点,但我种 中演化成复制和粘贴。 470 00:22:28,541 --> 00:22:31,540 而事实上,如果我做两个星期,你 知道我可能会做什么? 471 00:22:31,540 --> 00:22:34,940 我要去week1.php,我 要突出一切。 472 00:22:34,940 --> 00:22:39,110 我要去复制,粘贴 到一个名为week2.php新的文件, 473 00:22:39,110 --> 00:22:42,440 调整一些网址,以及我的路。 474 00:22:42,440 --> 00:22:45,240 >> 因此,基于我们所 可见在C中已经, 475 00:22:45,240 --> 00:22:46,860 这感觉不对,希望。 476 00:22:46,860 --> 00:22:49,610 复制,粘贴,很少正确的解决方案。 477 00:22:49,610 --> 00:22:51,429 那我们可以开始 要怎样才能提高呢? 478 00:22:51,429 --> 00:22:53,345 机会在哪里 为更好的设计? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> 到时候我去 8周,这是怎么回事 481 00:22:58,760 --> 00:23:00,910 是真的很烦人 如果我想改变 482 00:23:00,910 --> 00:23:03,930 每一个的字体 我的网页,或者如果我想 483 00:23:03,930 --> 00:23:06,522 改变布局的结构。 484 00:23:06,522 --> 00:23:08,396 因此,哪来的机会 为更好的设计? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 好吧,让我们来看看什么是 在所有这些文件的共享。 487 00:23:15,160 --> 00:23:21,696 >> 这里有一个星期,这里的一周 零,这里的lectures.php, 488 00:23:21,696 --> 00:23:25,790 这里的index.php--什么是相同的, 所不同的是,粗略地讲, 489 00:23:25,790 --> 00:23:26,760 在每个文件? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 是吗? 492 00:23:32,060 --> 00:23:34,560 >> 听众:[听不清] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID马兰:好,好。 495 00:23:42,160 --> 00:23:46,115 因此,有一种模式,当然,其中 每次我选择我的演讲, 496 00:23:46,115 --> 00:23:48,250 我应该产生 非常相似漂亮的网页。 497 00:23:48,250 --> 00:23:50,375 所以,也许我可以利用 事实真是, 498 00:23:50,375 --> 00:23:53,060 我们特意数值 索引我们的lectures-- 499 00:23:53,060 --> 00:23:55,290 如果我可以把更多的 也就是说在你的答案。 500 00:23:55,290 --> 00:23:59,984 什么是唯一的,真的, 这为期一周的变化埃德蒙顿 501 00:23:59,984 --> 00:24:02,400 让我向下滚动,所以它是 大致处于同一place-- 502 00:24:02,400 --> 00:24:05,480 所以这里是零一周, 大致在顶部。 503 00:24:05,480 --> 00:24:12,370 这里是一个星期,周 零个,一个星期,零周。 504 00:24:12,370 --> 00:24:14,370 OK,从字面上如果你知道 没有任何程序, 505 00:24:14,370 --> 00:24:16,286 这是现在就像一个 模式匹配游戏。 506 00:24:16,286 --> 00:24:17,200 那么,有什么不同呢? 507 00:24:17,200 --> 00:24:18,765 是吗? 508 00:24:18,765 --> 00:24:19,777 >> 听众:[听不清] 509 00:24:19,777 --> 00:24:22,360 DAVID马兰:好,所以标题 是变化的,非常轻微。 510 00:24:22,360 --> 00:24:24,010 零是怎么回事,当然,一。 511 00:24:24,010 --> 00:24:25,570 同样的事情发生了,在H1标签。 512 00:24:25,570 --> 00:24:28,790 同时,我们也不太把它看成很容易, 因为URL是有点长。 513 00:24:28,790 --> 00:24:30,670 但是,这些网址被稍微改变。 514 00:24:30,670 --> 00:24:34,490 >> 但是,什么是没有改变的是,敢跟我 说,大多数的page--的内容 515 00:24:34,490 --> 00:24:38,530 HTML标记是相同的,头部是 相同的,标题是几乎相同的, 516 00:24:38,530 --> 00:24:40,659 身是相同的,并 几乎一切 517 00:24:40,659 --> 00:24:42,450 是除了同一 这些小的调整。 518 00:24:42,450 --> 00:24:45,310 那么,如何才能去 一些保本了呢? 519 00:24:45,310 --> 00:24:48,740 >> 那么,让我提出确切 在未来的版本。 520 00:24:48,740 --> 00:24:53,890 因此,这里的一个版本,我有确切 相同的文件,以及其他几个。 521 00:24:53,890 --> 00:24:59,730 下面是index.php--即使 你从来没见过的PHP之前, 522 00:24:59,730 --> 00:25:05,511 那我可能做来解决这个 根据problem--你在这里看到的? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 是啊,是轻微的承诺? 525 00:25:12,760 --> 00:25:13,450 没有? 526 00:25:13,450 --> 00:25:16,020 是的,去上。 527 00:25:16,020 --> 00:25:17,380 >> 听众:[听不清] 528 00:25:17,380 --> 00:25:18,380 >> DAVID马兰:是的。 529 00:25:18,380 --> 00:25:20,380 >> 听众:[听不清] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID马兰:我需要你 只是大声一点说话。 532 00:25:28,669 --> 00:25:31,084 >> 听众:[听不清] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID马兰:好,好。 535 00:25:36,660 --> 00:25:38,620 我think--是 很难听到你 - 但我 536 00:25:38,620 --> 00:25:42,690 以为你在说什么是 这是常见的往上顶的标签, 537 00:25:42,690 --> 00:25:47,710 那是常见的标签 底部,现在已经被提取出来, 538 00:25:47,710 --> 00:25:51,140 或降级哪些文件? 539 00:25:51,140 --> 00:25:53,476 header.php文件,footer.php-- 我们要去 540 00:25:53,476 --> 00:25:55,600 做出一些调整,以 这些关注你只是 541 00:25:55,600 --> 00:25:59,370 提出了关于数字变化,为 举例来说,如果我没有听说你。 542 00:25:59,370 --> 00:26:02,060 >> 但是,这似乎是它的要点。 543 00:26:02,060 --> 00:26:04,820 如果有大量的 冗余的页面的顶部, 544 00:26:04,820 --> 00:26:06,736 且数额巨大的 冗余底部, 545 00:26:06,736 --> 00:26:09,280 让我们从字面上只是亮点 切的内容了, 546 00:26:09,280 --> 00:26:13,270 把它放在一个单独的file--就像 CSS中,我们提取出来的想法 547 00:26:13,270 --> 00:26:16,710 非常相似的美学,把 它在一个单独的点PHP文件, 548 00:26:16,710 --> 00:26:20,340 使用需要mechanism--这 是像C锐利包括 - 这 549 00:26:20,340 --> 00:26:23,570 基本上好像是说去 抓住的header.php的内容, 550 00:26:23,570 --> 00:26:25,370 和复制并粘贴到这里。 551 00:26:25,370 --> 00:26:29,490 >> 但是,这意味着什么,现在在 的index.php,我有这两条线。 552 00:26:29,490 --> 00:26:32,130 在lectures.php,我也 有那些两行。 553 00:26:32,130 --> 00:26:35,230 在week0.php,我也 有那些两行。 554 00:26:35,230 --> 00:26:38,380 >> 所以,现在,如果我想改变 我的所有网页的标题, 555 00:26:38,380 --> 00:26:40,530 或者我想改变 基本结构, 556 00:26:40,530 --> 00:26:44,380 我可以在一个地方,现在改变它, 两places--页眉和页脚, 557 00:26:44,380 --> 00:26:45,429 分别。 558 00:26:45,429 --> 00:26:47,970 现在代码的开始看 多了几分神秘,对吧? 559 00:26:47,970 --> 00:26:53,590 但是,如果你想想页面 是doing--如果我请求week0.php, 560 00:26:53,590 --> 00:26:59,880 就像在画过 当week0.php要求这里 - , 561 00:26:59,880 --> 00:27:00,960 这意味着什么? 562 00:27:00,960 --> 00:27:04,410 >> 从字面上看,这个文件是 由浏览器请求。 563 00:27:04,410 --> 00:27:06,240 该网站server--又名 564 00:27:06,240 --> 00:27:09,250 CS50 ID--抓住这个 文件,week0.php,并读出 565 00:27:09,250 --> 00:27:10,780 它从上到下,从左到右。 566 00:27:10,780 --> 00:27:15,400 线之一,它立即遭遇 开放式支架问号PHP,需要 567 00:27:15,400 --> 00:27:17,872 头点PHP,等等 什么PHP解释器 568 00:27:17,872 --> 00:27:20,580 does--是内置于网络 服务器,因为我们预先配置 569 00:27:20,580 --> 00:27:24,580 它为你 - 它会自动进入 成的header.php,复制的内容, 570 00:27:24,580 --> 00:27:25,640 在这里它们粘贴。 571 00:27:25,640 --> 00:27:28,790 >> 但随后的解释遭遇 问号密切支架, 572 00:27:28,790 --> 00:27:30,320 所以这一切都做了思考。 573 00:27:30,320 --> 00:27:33,400 现在,它只是盲目地吐出 出线路2至7, 574 00:27:33,400 --> 00:27:35,240 因为它只是原始的HTML。 575 00:27:35,240 --> 00:27:38,470 获取到线八条,并做了 同样神奇的again--打开文件, 576 00:27:38,470 --> 00:27:41,460 敛的内容,并 要求他们或者将其粘贴 577 00:27:41,460 --> 00:27:42,480 那么好吧或出现。 578 00:27:42,480 --> 00:27:44,210 >> 但我只是提到了一个错误。 579 00:27:44,210 --> 00:27:48,610 这是一个局部的退步, 因为如果我们看在header.php中, 580 00:27:48,610 --> 00:27:50,850 那种我剪了一个角落。 581 00:27:50,850 --> 00:27:56,250 我才给什么功能了,为了 获得这一有争议的更好的设计? 582 00:27:56,250 --> 00:27:57,305 是吗? 583 00:27:57,305 --> 00:27:58,180 听众:[听不清] 584 00:27:58,180 --> 00:28:00,570 DAVID马兰:是啊,我种 切一个平凡的角落。 585 00:28:00,570 --> 00:28:04,489 你指出什么改变 是标题,在标题的数量, 586 00:28:04,489 --> 00:28:05,530 并在H1的数目。 587 00:28:05,530 --> 00:28:08,170 所以我的解决办法是,OK, 让我们只重命名页面, 588 00:28:08,170 --> 00:28:10,080 并没有涉及这 遇到任何问题。 589 00:28:10,080 --> 00:28:12,130 所以这是一个局部 倒退是肯定的。 590 00:28:12,130 --> 00:28:14,300 >> 但是,这里值得注意的是 是,我做了什么 591 00:28:14,300 --> 00:28:17,200 另有因素 所有常见的东西。 592 00:28:17,200 --> 00:28:21,520 而在footer.php,通知我分解 出了这一切,尽管较小, 593 00:28:21,520 --> 00:28:22,790 常见的东西。 594 00:28:22,790 --> 00:28:26,070 所以,我需要以某种方式现在能 走又前进了一步,并修复 595 00:28:26,070 --> 00:28:27,160 该标题的问题。 596 00:28:27,160 --> 00:28:28,180 因此,让我们做到这一点。 597 00:28:28,180 --> 00:28:35,060 >> 让我进入我的第二个版本 这里,这又具有相同的文件 598 00:28:35,060 --> 00:28:36,825 除了一个新的补充。 599 00:28:36,825 --> 00:28:38,950 它是一个多一点 详细,但我们如果我们看看 600 00:28:38,950 --> 00:28:40,550 可以梳理出哪些是怎么回事。 601 00:28:40,550 --> 00:28:45,370 因此,而不是要求 的header.php和footer.php, 602 00:28:45,370 --> 00:28:50,180 我似乎只需要一个 file--叫,当然,helpers.php。 603 00:28:50,180 --> 00:28:52,560 让我现在的规定, 什么是helpers.php内 604 00:28:52,560 --> 00:28:55,330 只是一堆功能 我写的,就像以前一样。 605 00:28:55,330 --> 00:28:57,550 但我把它叫做helpers.php。 606 00:28:57,550 --> 00:29:00,370 >> 现在很明显,在 三线和10,我 607 00:29:00,370 --> 00:29:02,840 调用两个functions-- 渲染页眉,页脚渲染。 608 00:29:02,840 --> 00:29:05,040 那些不来 PHP的,我写这些我自己。 609 00:29:05,040 --> 00:29:07,880 我把它们放在helpers.php。 610 00:29:07,880 --> 00:29:11,210 >> 现在,我们只看到此语法 一次,它是超级简单。 611 00:29:11,210 --> 00:29:15,330 但是,这显然是一个参数 渲染报头,该函数。 612 00:29:15,330 --> 00:29:16,450 为什么我知道? 613 00:29:16,450 --> 00:29:18,522 那么这里有一个密切的括号, 这里是一个开放的括号。 614 00:29:18,522 --> 00:29:21,230 当然,就像在C, 这些括号内的任何 615 00:29:21,230 --> 00:29:23,350 是input--或 函数的参数。 616 00:29:23,350 --> 00:29:26,710 >> 这是什么参数的数据类型, 根据我所强调? 617 00:29:26,710 --> 00:29:30,820 什么做的那些方括号 表示,根据上周? 618 00:29:30,820 --> 00:29:33,390 是的,这是一个array-- 特别是关联数组。 619 00:29:33,390 --> 00:29:35,700 而这个语法诚然 有点时髦, 620 00:29:35,700 --> 00:29:38,860 但这只是路过 在一个键值对。 621 00:29:38,860 --> 00:29:43,530 最关键的是,报价引文结束 标题,并且该值是CS50。 622 00:29:43,530 --> 00:29:46,220 >> 如果我们做到了这一点 在C中,它可能会改为 623 00:29:46,220 --> 00:29:49,400 看起来更像这样, 只是报价引文结束CS50-- 624 00:29:49,400 --> 00:29:52,460 或者实际上这将是卷曲 括号,或者类似的东西在C, 625 00:29:52,460 --> 00:29:55,580 其中键是零, 和的值是CS50。 626 00:29:55,580 --> 00:29:59,840 但同样,在PHP,即使 语法是,再次,这一点都不奇怪, 627 00:29:59,840 --> 00:30:02,860 它可以让你传递 字来代替的数 628 00:30:02,860 --> 00:30:05,120 将密钥与值关联。 629 00:30:05,120 --> 00:30:06,390 >> 那么,这意味着什么? 630 00:30:06,390 --> 00:30:09,750 如果我进入helpers.php, 让我们来看看这个功能。 631 00:30:09,750 --> 00:30:13,620 renderHeader.php,而 renderHeader是我的功能, 632 00:30:13,620 --> 00:30:16,220 我知道,因为我看到 这里function关键字。 633 00:30:16,220 --> 00:30:19,450 这是显然C--它新 采用所谓的数据 - 一个参数 634 00:30:19,450 --> 00:30:22,400 但我可以把这种现象称之为 任何事情,但我把它叫做数据, 635 00:30:22,400 --> 00:30:25,090 仅仅是一个小clean--和 只是采取一种猜测,尤其是 636 00:30:25,090 --> 00:30:28,173 如果您在其他一些已设定 高级语言之前,东西 637 00:30:28,173 --> 00:30:29,820 上述C,概念上。 638 00:30:29,820 --> 00:30:33,820 >> 这是什么平等的开放式支架 括号大概是什么意思? 639 00:30:33,820 --> 00:30:35,540 或者什么可能它是什么意思? 640 00:30:35,540 --> 00:30:39,660 我们还没有看到这一点C.呀? 641 00:30:39,660 --> 00:30:40,480 >> 空数组。 642 00:30:40,480 --> 00:30:45,440 具体而言,这意味着,如果 用户不调用renderHeader 643 00:30:45,440 --> 00:30:49,340 有一个参数,我仍然会 有所谓的数据参数, 644 00:30:49,340 --> 00:30:52,327 但它的默认值是 将是一个空数组。 645 00:30:52,327 --> 00:30:53,660 所以这是一个不错的便利性。 646 00:30:53,660 --> 00:30:56,493 我没有要骂的用户, 或者说,你用我的功能失常。 647 00:30:56,493 --> 00:30:59,849 我可以给用户一个默认 值,如果我没有特别在意。 648 00:30:59,849 --> 00:31:01,890 现在这个功能,我 要挥挥手的。 649 00:31:01,890 --> 00:31:07,620 但是,这种提取物功能允许 我们通过数据这些变量 650 00:31:07,620 --> 00:31:10,360 入的header.php以下列方式。 651 00:31:10,360 --> 00:31:13,100 这是最后一块, 我想时髦的语法。 652 00:31:13,100 --> 00:31:15,860 这里是我的新版本 的header.php--它 653 00:31:15,860 --> 00:31:20,140 常说,从字面上看,开 支架标题CS50,仅此而已。 654 00:31:20,140 --> 00:31:21,766 而同样的事,H1。 655 00:31:21,766 --> 00:31:24,310 >> 现在它显然说 一些漂亮时髦。 656 00:31:24,310 --> 00:31:28,030 让我简化 一会儿如下。 657 00:31:28,030 --> 00:31:31,020 这就是我 改变了我的标题是。 658 00:31:31,020 --> 00:31:35,140 但是,它变得有点难看 不断开放的支架用PHP, 659 00:31:35,140 --> 00:31:36,610 然后使用打印功能。 660 00:31:36,610 --> 00:31:40,810 事实证明,PHP有一个速记 符号对于这一点,这仅仅是 661 00:31:40,810 --> 00:31:45,050 一个等号,这在​​技术上是一个 函数调用呼应,而不是打印, 662 00:31:45,050 --> 00:31:46,800 但它同样的事情,有效。 663 00:31:46,800 --> 00:31:48,440 >> 这只是看起来更好。 664 00:31:48,440 --> 00:31:50,510 这只是一个语法 糖,如果你愿意, 665 00:31:50,510 --> 00:31:52,260 这使得我的代码看起来更好一点。 666 00:31:52,260 --> 00:31:54,010 但事实证明,和 我们将再次看到这 667 00:31:54,010 --> 00:31:57,420 没多久,我们必须把这种 烦人称为长功能 668 00:31:57,420 --> 00:32:00,582 在HTML特殊字符 PHP的,因为事实证明 669 00:32:00,582 --> 00:32:02,790 有一定的投入 用户可能给我们, 670 00:32:02,790 --> 00:32:05,160 或者说用户可能给我们, 这是要打破我们的网站。 671 00:32:05,160 --> 00:32:07,035 但是,我们会看到下一个 一周使用JavaScript。 672 00:32:07,035 --> 00:32:10,740 但现在,只知道 这个文件,headers.php,只需 673 00:32:10,740 --> 00:32:13,040 取的标题, 我通过了,这让 674 00:32:13,040 --> 00:32:17,380 确保它的安全,可以注入到网络 页面,它吐出它作为我的标题 675 00:32:17,380 --> 00:32:18,640 和我的H1。 676 00:32:18,640 --> 00:32:24,440 所以,如果我进入现在这个版本, 注意听课有它的标题后面, 677 00:32:24,440 --> 00:32:28,630 零星期都有它的标题后面, 事实上,HTML我生成 678 00:32:28,630 --> 00:32:32,110 是相同的就是我的第一个版本 was--除了我的空白, 679 00:32:32,110 --> 00:32:35,150 因为我已经开始格式化 我的代码有点不同。 680 00:32:35,150 --> 00:32:38,082 但我所产生的所有 我在乎的代码。 681 00:32:38,082 --> 00:32:39,790 因此,让我停下来 只是一瞬间,看看 682 00:32:39,790 --> 00:32:42,200 如果有任何问题, 或混乱,我创建的。 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 好吧,让我们扭转 稍微用力在这里 685 00:32:48,150 --> 00:32:51,500 看看是否有一个 机会改善。 686 00:32:51,500 --> 00:32:56,130 Helpers.php也有过这种 函数,称为renderFooter。 687 00:32:56,130 --> 00:32:59,652 这有什么值得一提的约 renderHeader和renderFooter? 688 00:32:59,652 --> 00:33:02,610 再次,对于今天的目的,知道 该提取物的功能仅仅是 689 00:33:02,610 --> 00:33:08,280 我传递参数的方法 成的header.php和footer.php。 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> 对不起? 692 00:33:11,780 --> 00:33:13,056 >> 听众:[听不清] 693 00:33:13,056 --> 00:33:15,180 DAVID马兰:是啊,我只 改变需要对线路。 694 00:33:15,180 --> 00:33:19,410 所以从字面上看,我犯了罪 复制和粘贴,再次。 695 00:33:19,410 --> 00:33:21,920 这不是一个巨大的数字 行不过来on-- 696 00:33:21,920 --> 00:33:25,220 如果我复制和粘贴的一切 只是改变一个小小的字, 697 00:33:25,220 --> 00:33:28,610 而一个小小的字艾伦点 出在这里躯,与头在这里。 698 00:33:28,610 --> 00:33:30,670 否则,一切都是 相同的,除了为, 699 00:33:30,670 --> 00:33:32,180 当然,该功能的名称。 700 00:33:32,180 --> 00:33:33,690 那么,我们能否做得更好? 701 00:33:33,690 --> 00:33:39,810 >> 那么,让我开了这个版本 这里,由此helpers.php, 702 00:33:39,810 --> 00:33:42,300 为什么不让我只是得到一个 小聪明这件事? 703 00:33:42,300 --> 00:33:46,410 写稍微复杂 代码,但把它渲染? 704 00:33:46,410 --> 00:33:48,470 所以,我有什么根本性的变化? 705 00:33:48,470 --> 00:33:51,770 >> 它需要一个参数now-- 两个参数,数据依旧。 706 00:33:51,770 --> 00:33:54,444 然后,什么是第一 名称可能被用于, 707 00:33:54,444 --> 00:33:55,860 基于你在这里阅读什么? 708 00:33:55,860 --> 00:33:58,452 即使有些语法仍然是新的。 709 00:33:58,452 --> 00:33:59,660 什么是美元符号的模板? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> 对不起? 712 00:34:03,016 --> 00:34:03,710 >> 听众:页眉或页脚。 713 00:34:03,710 --> 00:34:04,510 >> DAVID马兰:页眉或页脚。 714 00:34:04,510 --> 00:34:07,134 所以很明显,我决定,如果 唯一的事情正在发生变化 715 00:34:07,134 --> 00:34:10,159 是我想要的模板 以print--和模板 716 00:34:10,159 --> 00:34:13,100 我的意思是,这是蓝图 我想输出代码, 717 00:34:13,100 --> 00:34:16,350 但我想在一些堵塞 values​​--因此,如果这只是头 718 00:34:16,350 --> 00:34:20,440 或页脚,我为什么不参数 这和调用的参数美元符号 719 00:34:20,440 --> 00:34:21,409 模板? 720 00:34:21,409 --> 00:34:26,250 然后,这个时髦的语法,让我 在一个变量在这里营造出路径。 721 00:34:26,250 --> 00:34:28,030 >> 所以美元符号路径是一个变量。 722 00:34:28,030 --> 00:34:31,120 这是什么语法 这样做,如果你熟悉吗? 723 00:34:31,120 --> 00:34:32,512 是吗? 724 00:34:32,512 --> 00:34:34,065 >> 听众:[听不清] 725 00:34:34,065 --> 00:34:34,940 DAVID马兰:没错。 726 00:34:34,940 --> 00:34:37,600 如果模板,报价引文结束, 头,或者如果模板是, 727 00:34:37,600 --> 00:34:41,170 报价引文结束,页脚,该行有 我已经强调,八线, 728 00:34:41,170 --> 00:34:46,330 是简单地把这个名字,像头, 和连接用点PHP。 729 00:34:46,330 --> 00:34:49,750 因此,我们没有这个操作符 在C这点运算符 730 00:34:49,750 --> 00:34:54,520 一个了不起的事情在PHP--如果你 熟悉JavaScript或Java, 731 00:34:54,520 --> 00:34:56,949 您可以使用加 签字做串联。 732 00:34:56,949 --> 00:34:59,974 >> 在C中,它是在一个neck--疼痛 我很抱歉,在对组六, 733 00:34:59,974 --> 00:35:02,390 你将不得不做 this--它是在颈部疼痛 734 00:35:02,390 --> 00:35:03,930 连接字符串。 735 00:35:03,930 --> 00:35:04,670 为什么呢? 736 00:35:04,670 --> 00:35:06,580 好了,因为如果你有 一个字符串,它是此长, 737 00:35:06,580 --> 00:35:09,538 而另一个字符串是这个漫长的, 你不能只是插在一起。 738 00:35:09,538 --> 00:35:11,070 你是什​​么,而不是必须做在C中? 739 00:35:11,070 --> 00:35:11,680 是吗? 740 00:35:11,680 --> 00:35:12,380 >> 听众:[听不清] 741 00:35:12,380 --> 00:35:15,090 >> DAVID马兰:你对malloc 存储器,或在堆栈上使用的阵列。 742 00:35:15,090 --> 00:35:17,214 而你确实有 使该数组足够大 743 00:35:17,214 --> 00:35:20,940 以适应这种加这个, 再加上反斜线零。 744 00:35:20,940 --> 00:35:24,994 然后用它们串联在一起 搅拌猫或手动与一个for循环, 745 00:35:24,994 --> 00:35:26,160 或任何数量的技术。 746 00:35:26,160 --> 00:35:27,760 我们向您展示一对夫妇在对组六。 747 00:35:27,760 --> 00:35:29,080 >> 这是在颈部疼痛。 748 00:35:29,080 --> 00:35:34,190 这是真正的我是什么意思约 这与this--像C与PHP。 749 00:35:34,190 --> 00:35:36,870 你只要能获得更多 免费的功能, 750 00:35:36,870 --> 00:35:39,030 这样您就可以集中精力, 理想情况下,就开心 751 00:35:39,030 --> 00:35:41,190 编码的一部分,该 你想解决的项目, 752 00:35:41,190 --> 00:35:43,190 而不是低电平细节。 753 00:35:43,190 --> 00:35:49,840 >> 因此,这只是产生的header.php或 基于哪一个我称之为footer.php。 754 00:35:49,840 --> 00:35:52,280 事实上,如果我去 到index.php,通知 755 00:35:52,280 --> 00:35:56,230 所有这一切changed--代替 调用呈现页眉或页脚渲染, 756 00:35:56,230 --> 00:36:00,230 我打电话渲染,其次是 我想要做的模板名称。 757 00:36:00,230 --> 00:36:02,370 你会看到这一点,也是如此, 在问题设置七, 758 00:36:02,370 --> 00:36:05,530 因此我们允许您使用 同样的功能,使串 759 00:36:05,530 --> 00:36:07,550 与不同的网页束。 760 00:36:07,550 --> 00:36:10,570 >> 因此,而不是纠缠太多 这些details--更多 761 00:36:10,570 --> 00:36:13,210 你会再次看到 习题集seven--让我们来看看 762 00:36:13,210 --> 00:36:16,850 在溶液的现在的开始 一个更有趣的问题。 763 00:36:16,850 --> 00:36:19,310 到目前为止,没有什么我们已经 做有保存的数据。 764 00:36:19,310 --> 00:36:22,920 事实上,唯一的一次,我们曾经保存 这是我们已经在这个类进行 765 00:36:22,920 --> 00:36:31,030 当我们有一个非常简单的演示一段时间 回来,因此我们使用的文件IO在C, 766 00:36:31,030 --> 00:36:34,520 我认为我输入我的名字, 汉娜的名字,和玛丽亚的名字, 767 00:36:34,520 --> 00:36:37,610 或者是安迪的名字, 那么,我们节省了CSV file-- 768 00:36:37,610 --> 00:36:39,430 逗号分隔值文件。 769 00:36:39,430 --> 00:36:43,530 >> 我们用fopen--我想 我们使用fprintf中我记得, 770 00:36:43,530 --> 00:36:44,910 我们保存的文件。 771 00:36:44,910 --> 00:36:46,920 现在,这是最简单的 形式的数据库。 772 00:36:46,920 --> 00:36:50,230 如果你想为一个网站 Frosh即时消息程序,即新生 773 00:36:50,230 --> 00:36:53,390 可以注册一个运动,你理想 想要做的事与该数据。 774 00:36:53,390 --> 00:36:55,370 上周,我们什么也没做 与数据 - 我们刚才说的, 775 00:36:55,370 --> 00:36:56,661 您已注册,不是真的。 776 00:36:56,661 --> 00:36:58,950 或者,也许我给的 监考官,那就是它。 777 00:36:58,950 --> 00:37:02,110 >> 但是,如果,如​​果我能很好 给那个监考CSV文件, 778 00:37:02,110 --> 00:37:03,340 就像一个Excel文件。 779 00:37:03,340 --> 00:37:05,090 或者更好的是,它会 如果我能很好 780 00:37:05,090 --> 00:37:08,830 把这些用户的名称和 宿舍名称和所有的 781 00:37:08,830 --> 00:37:11,740 成的数据库 只是住在永远, 782 00:37:11,740 --> 00:37:13,530 直到我选择要删除的数据。 783 00:37:13,530 --> 00:37:15,645 数据库允许 我要查询的信息。 784 00:37:15,645 --> 00:37:18,070 事实上,这是一个数据库是什么。 785 00:37:18,070 --> 00:37:20,470 >> 我们今天介绍,和 下周也是如此,一个技术 786 00:37:20,470 --> 00:37:25,020 所谓SQL--结构化查询 语言,这是另一种语言。 787 00:37:25,020 --> 00:37:28,750 它本质上是一种编程 语言,但对于数据库。 788 00:37:28,750 --> 00:37:31,760 而对于现在的数据库,只是 认为作为一个超级花哨版本 789 00:37:31,760 --> 00:37:35,710 Microsoft Excel或谷歌的 电子表格,或Apple数字。 790 00:37:35,710 --> 00:37:39,950 这通常是一个程序,允许 您存储一大堆数据 791 00:37:39,950 --> 00:37:43,960 以行和列,相当 就像你可能在Excel中。 792 00:37:43,960 --> 00:37:47,100 >> 但是,什么是好的,特别是当 我们不是超级熟悉的Excel, 793 00:37:47,100 --> 00:37:52,040 什么SQL允许你做的是查询本 通过编写代码行信息 794 00:37:52,040 --> 00:37:55,220 在那里你可以,即使你的 数据库有一百万行吧, 795 00:37:55,220 --> 00:37:57,190 你可以找到的东西超级快。 796 00:37:57,190 --> 00:37:59,950 事实上,Excel是特别 坏的大型数据集。 797 00:37:59,950 --> 00:38:02,460 而事实上,高达几 年前,横空出世 798 00:38:02,460 --> 00:38:08,890 Excel中只允许你存储 最多65,535行其数据 - 的 799 00:38:08,890 --> 00:38:12,020 听起来很多,但在 那时候我是个研究生, 800 00:38:12,020 --> 00:38:14,920 我记得绊倒 这是因为我正在生成 801 00:38:14,920 --> 00:38:17,900 CSV文件,我的研究,我 想快速分析它们 802 00:38:17,900 --> 00:38:19,530 由刚刚开放在Excel中。 803 00:38:19,530 --> 00:38:23,730 当然,我的电脑正好死机, 因为我有超过65,000行。 804 00:38:23,730 --> 00:38:27,210 >> 但做了65,535来自哪里? 805 00:38:27,210 --> 00:38:29,670 什么是微软在做,大概? 806 00:38:29,670 --> 00:38:32,430 如果你是好与你的两个大国? 807 00:38:32,430 --> 00:38:37,160 是的,他们使用的是16位 值来表示的行号。 808 00:38:37,160 --> 00:38:41,310 而二至16 65,536-- 上下一心,因为如果你 809 00:38:41,310 --> 00:38:45,414 零指数意味着是 大部分的行数,我可以有。 810 00:38:45,414 --> 00:38:46,830 而这只是一个设计决策。 811 00:38:46,830 --> 00:38:52,760 通过保存16位,他们限制我 16000行不是4十亿, 812 00:38:52,760 --> 00:38:54,322 我可以有理想的。 813 00:38:54,322 --> 00:38:57,030 但现在,我们要 介绍这个更在网络环境。 814 00:38:57,030 --> 00:39:00,390 什么是好的关于SQL的是,即使 虽然它是非常强大的,漂亮 815 00:39:00,390 --> 00:39:04,050 复杂的,它真的沸腾 下降到四键操作,四 816 00:39:04,050 --> 00:39:08,060 关键的功能,如果你will--选择, 用于检索数据,搜索 817 00:39:08,060 --> 00:39:12,510 数据;删除或删除数据; 插入的行添加到数据库; 818 00:39:12,510 --> 00:39:13,410 和更新。 819 00:39:13,410 --> 00:39:17,010 所以,如果你曾经使用过谷歌 电子表格,苹果的数字,微软 820 00:39:17,010 --> 00:39:19,310 Excel,您已经执行, 最有可能的,所有的 821 00:39:19,310 --> 00:39:22,530 这些操作作为一个人受 只是用你的键盘和mouse-- 822 00:39:22,530 --> 00:39:26,050 插入数据,用你的眼睛 选择或搜索的数据, 823 00:39:26,050 --> 00:39:28,360 或更新数据或删除数据。 824 00:39:28,360 --> 00:39:29,870 >> 所以,这是什么意思? 825 00:39:29,870 --> 00:39:34,300 那么,预先安装在CS50 IDE是一个名为mysql程序。 826 00:39:34,300 --> 00:39:37,050 这是一个自由的,开放源码 数据库是超人气。 827 00:39:37,050 --> 00:39:40,590 实,例如,使用它来此 天,其中,它们使用其他工具。 828 00:39:40,590 --> 00:39:44,300 而很多非常受欢迎的网站使用 这在很大程度上是因为它的快速, 829 00:39:44,300 --> 00:39:45,230 因为它是免费的。 830 00:39:45,230 --> 00:39:46,820 虽然的确存在替代品。 831 00:39:46,820 --> 00:39:49,580 而有些人可能有玩水 替代品的最终项目。 832 00:39:49,580 --> 00:39:55,330 >> 这是一个屏幕截图,同时, 一个基于Web的工具,称为phpMyAdmin的。 833 00:39:55,330 --> 00:39:58,260 这是一个巧合, 这个基于Web的工具也是 834 00:39:58,260 --> 00:40:01,720 写在一个语言,PHP, 但它的意思做 835 00:40:01,720 --> 00:40:04,620 是给我们一个基于Web的 接口到数据库。 836 00:40:04,620 --> 00:40:07,180 由于MySQL通常是 东西,从历史上看,你 837 00:40:07,180 --> 00:40:08,770 也只有互动 使用命令行。 838 00:40:08,770 --> 00:40:10,811 这将是超 讨厌和奥术有 839 00:40:10,811 --> 00:40:14,487 键入文本命令来选择 数据,插入数据和删除数据。 840 00:40:14,487 --> 00:40:16,820 所以有些人在互联网上 写了一个基于Web的程序 841 00:40:16,820 --> 00:40:18,900 这只是让我们管理 在我们的数据库中的数据。 842 00:40:18,900 --> 00:40:23,040 这就像双击Excel和 其运行的基于网络的版本。 843 00:40:23,040 --> 00:40:26,370 >> 你要怎么使用它进行 最终在下周,而不是在对组六, 844 00:40:26,370 --> 00:40:28,680 但要建立的东西 所谓的CS50融资,这 845 00:40:28,680 --> 00:40:32,630 将有一个数据库 用户,与用户名和密码, 846 00:40:32,630 --> 00:40:34,860 美元数额,他们 在他们的银行账户。 847 00:40:34,860 --> 00:40:37,280 这将是 是你用它来存储 848 00:40:37,280 --> 00:40:39,910 的符号和数量 个股用户 849 00:40:39,910 --> 00:40:42,567 已经使用虚拟购买 美元,你就会给他们。 850 00:40:42,567 --> 00:40:44,900 而这将允许用户 注册为您的网站, 851 00:40:44,900 --> 00:40:47,190 所以,即使你的朋友 可以调整到您的网站 852 00:40:47,190 --> 00:40:49,360 而实际注册, 登录,和玩 853 00:40:49,360 --> 00:40:52,807 并试图找到故障代码, 并试图找到您的网站的错误。 854 00:40:52,807 --> 00:40:55,390 他们会简单地注册通过 加入自己,有效, 855 00:40:55,390 --> 00:40:58,120 通过代码编写到数据库。 856 00:40:58,120 --> 00:41:02,470 >> 例如,这是一个快速截图 一个什么样的数据库可能是什么样子。 857 00:41:02,470 --> 00:41:05,190 这是从一个 去年solutions-- 858 00:41:05,190 --> 00:41:07,760 这就像一个小型的Excel 文件,存储在数据库中, 859 00:41:07,760 --> 00:41:09,950 存储在该软件名为MySQL的。 860 00:41:09,950 --> 00:41:13,260 在左边,我已经很明显 给出的每个用户的唯一编号。 861 00:41:13,260 --> 00:41:16,200 在第二列中,我已经给 人人用户name--我自己 862 00:41:16,200 --> 00:41:16,880 其中。 863 00:41:16,880 --> 00:41:21,430 和在右手侧, 我已经给了他们一个哈希值。 864 00:41:21,430 --> 00:41:26,760 >> 现在,这实际上是一个密码, 但它不是一个纯文本的密码。 865 00:41:26,760 --> 00:41:30,160 这是一个加密的密码,如果 你愿意,或哈希密码。 866 00:41:30,160 --> 00:41:32,000 我们将回来不久。 867 00:41:32,000 --> 00:41:34,340 >> 但是,如果你读过 有关如何文章 868 00:41:34,340 --> 00:41:37,950 您的密码在某个银行或者一些 网站可能受到了侵害, 869 00:41:37,950 --> 00:41:39,630 它一般意味着两件事情之一。 870 00:41:39,630 --> 00:41:42,780 因此,这是六个用户只是摘录。 871 00:41:42,780 --> 00:41:45,460 在座的各位,现在自己看着办 出通过黑客或破解 872 00:41:45,460 --> 00:41:47,690 就是我们六个人的密码。 873 00:41:47,690 --> 00:41:49,720 但是,如果你收到 警报或道歉 874 00:41:49,720 --> 00:41:52,803 从公司或网站上说, 对不起,黑客闯入我们的数据库, 875 00:41:52,803 --> 00:41:56,360 你或许应该改变你 密码,可能是什么意思? 876 00:41:56,360 --> 00:41:59,670 >> 嗯,一,可能意味着 公司一直比较鲁钝, 877 00:41:59,670 --> 00:42:03,630 并已存储你的密码 在这样的专栏,未加密的。 878 00:42:03,630 --> 00:42:05,840 这意味着对手, 谁偷了数据库, 879 00:42:05,840 --> 00:42:07,440 从字面上知道您 用户名和密码。 880 00:42:07,440 --> 00:42:08,960 这是最差的情况。 881 00:42:08,960 --> 00:42:11,710 正如你会在P-集看 七,所以容易避免。 882 00:42:11,710 --> 00:42:15,624 绝对没有任何借口了 愚蠢的在今天的网络形式。 883 00:42:15,624 --> 00:42:18,540 Two--,我们会发现一些文章 作证的事实,这仍然 884 00:42:18,540 --> 00:42:21,710 情况发生,nonetheless-- 二,也许是对手 885 00:42:21,710 --> 00:42:23,840 偷了这个版本的数据库。 886 00:42:23,840 --> 00:42:27,110 这仍然是有种不好的,因为现在 他们知道,我有六个客户, 887 00:42:27,110 --> 00:42:29,270 我知道用户名 这六个客户, 888 00:42:29,270 --> 00:42:32,910 我知道的加密 版本,或散列版本, 889 00:42:32,910 --> 00:42:34,340 的那六个客户的密码。 890 00:42:34,340 --> 00:42:37,010 但是,任何你谁可能 完成了 [?黑客2?] 891 00:42:37,010 --> 00:42:41,150 在那里你破解密码,或把 一看那个版本的问题 892 00:42:41,150 --> 00:42:46,280 集,为什么还是有点令人担忧 如果攻击者知道你的哈希 893 00:42:46,280 --> 00:42:47,435 密码? 894 00:42:47,435 --> 00:42:49,732 >> 听众:因为他们可以 进入整个字典 895 00:42:49,732 --> 00:42:50,690 入散列函数。 896 00:42:50,690 --> 00:42:54,520 如果你的密码是一个字典 一句话,[?他们可以match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID马兰:没错,对手 可以只写代码,就像你们中的一些 898 00:42:57,640 --> 00:43:00,526 没有为[?黑客?] 2, 因此你遍历 899 00:43:00,526 --> 00:43:03,400 所有的在字典中的词语, A或所有可能的组合 900 00:43:03,400 --> 00:43:06,610 到Z和一个通过nine-- 这听起来好像很多,它是。 901 00:43:06,610 --> 00:43:08,361 但对于一台电脑, 这是相当不错的快。 902 00:43:08,361 --> 00:43:10,610 而事实上,这是 点[吗?黑客2,η]为 903 00:43:10,610 --> 00:43:12,540 取东西, 从字面上看起来像这样, 904 00:43:12,540 --> 00:43:14,900 和反向工程 它实际上是什么。 905 00:43:14,900 --> 00:43:17,270 >> 因此,我们将看看我们如何能够 更有效地存储这一点。 906 00:43:17,270 --> 00:43:20,210 事实证明,幸运的是在MySQL中, 那里将是数据类型。 907 00:43:20,210 --> 00:43:22,800 而有趣的部分约一个 数据库设计,说实话, 908 00:43:22,800 --> 00:43:25,810 实际上是决定自己 你应该如何表示数据? 909 00:43:25,810 --> 00:43:29,630 如果您代表电话号码 一个int,像一个巨大的数字,或长? 910 00:43:29,630 --> 00:43:31,630 或者你真正做到这一点 作为一个字符序列? 911 00:43:31,630 --> 00:43:33,780 并且可以有很 这种非平凡的影响。 912 00:43:33,780 --> 00:43:36,714 >> 事实上,人们的 最早的,好玩的锗的故事 913 00:43:36,714 --> 00:43:39,880 是当马克·扎克伯格正在建设 Facebook的,它最初写成, 914 00:43:39,880 --> 00:43:42,300 仍然主要是用PHP写的。 915 00:43:42,300 --> 00:43:45,400 而其中最大的挑战之一 他们早早就被缩放面对。 916 00:43:45,400 --> 00:43:48,820 当他们不停地之后加入学校 学校放学后,据我所知, 917 00:43:48,820 --> 00:43:51,639 原始的解决方案之一 基本上是复制和粘贴 918 00:43:51,639 --> 00:43:53,430 一些数据库的 和一些代码, 919 00:43:53,430 --> 00:43:55,346 使哈佛 其自己的服务器上运行, 920 00:43:55,346 --> 00:43:56,995 麻省理工学院在自己的服务器上运行。 921 00:43:56,995 --> 00:43:59,120 这就是为什么,对于一些 你们谁可能还记得, 922 00:43:59,120 --> 00:44:01,510 你可以没有朋友 在其它网络。 923 00:44:01,510 --> 00:44:05,050 >> 你可能根本不具备的朋友 麻省理工学院或哈佛10年前左右, 924 00:44:05,050 --> 00:44:07,467 但你不能跨越网络 对于部分的原因。 925 00:44:07,467 --> 00:44:10,550 而对的最大挑战之一 马克和Facebook这样的公司 926 00:44:10,550 --> 00:44:13,460 实际上是处理数百 和千千万万 927 00:44:13,460 --> 00:44:14,460 每秒请求。 928 00:44:14,460 --> 00:44:16,501 所以这个事情我们将开始 说起这个星期 929 00:44:16,501 --> 00:44:19,860 真的会是有密切关系的 编写好的软件和普遍 930 00:44:19,860 --> 00:44:23,040 成功的工具, 能够处理大量的用户。 931 00:44:23,040 --> 00:44:25,460 >> 因此,我们将讨论有关事项 像索引和搜索, 932 00:44:25,460 --> 00:44:26,910 但它是今天。 933 00:44:26,910 --> 00:44:28,780 我们会看到你更多的周三。 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIC - “宋飞正传”的主题] 936 00:44:33,902 --> 00:44:35,943 DAVID马兰:你可以 它,并减去它。 937 00:44:35,943 --> 00:44:38,859 你不必坚持 一些预定量的存储器。 938 00:44:38,859 --> 00:44:40,580 那么,什么是将要叫什么? 939 00:44:40,580 --> 00:44:42,369 >> 扬声器1:哦,这是怎么回事? 940 00:44:42,369 --> 00:44:43,535 扬声器2:你是什么意思? 941 00:44:43,535 --> 00:44:44,451 他给一个讲座。 942 00:44:44,451 --> 00:44:47,650 DAVID马兰:我们可以用一个 函数调用的malloc到memory-- 943 00:44:47,650 --> 00:44:50,050 >> 扬声器1:为什么不是他的怀里动? 944 00:44:50,050 --> 00:44:52,450 >> 扬声器2:嗯that's-- 你知道,这是正常的。 945 00:44:52,450 --> 00:44:57,162 这就像他刚才 大香肠挂在那里。 946 00:44:57,162 --> 00:44:59,040 >> 扬声器1:这是正常的? 947 00:44:59,040 --> 00:45:03,096 >> 扬声器2:是的,我想我们 只是假设他意外 948 00:45:03,096 --> 00:45:06,840 取代他的除臭剂与强力胶。 949 00:45:06,840 --> 00:45:07,608