1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [주 9] 2 00:00:02,570 --> 00:00:04,740 [데이비드 J. Malan - 하버드 대학교 (Harvard University)] 3 00:00:04,740 --> 00:00:07,170 [이 CS50입니다. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 괜찮아요. 다시 오신 것을 환영합니다. 이 CS50이며,이 주 9의 시작입니다. 5 00:00:12,350 --> 00:00:16,600 오늘 우리는 C의 맥락에서 더 이상 디자인에 특히 초점을 6 00:00:16,600 --> 00:00:20,010 하지만 PHP의 컨텍스트와 SQL의 비트와 자바 스크립트의 비트에 7 00:00:20,010 --> 00:00:23,730 특히 pset 7 두의 끝을 향해 있으며 최종 프로젝트. 8 00:00:23,730 --> 00:00:26,310 사실, 경우 귀하의 최종 프로젝트에 그 시점에 있습니다 9 00:00:26,310 --> 00:00:30,100 아마 적어도 몇 가지 생각을 제공하기 시작 한 시간 때문에 전에 현재의 위치를 10 00:00:30,100 --> 00:00:33,730 귀하의 최종 프로젝트와 여러분이 1 또는 2 친구와 공동 작업하고 싶은 생각, 11 00:00:33,730 --> 00:00:36,150 당신이 연결하는 데 문제가있는 경우는, 친구들 말을 12 00:00:36,150 --> 00:00:40,570 cs50.net/partners/form에서 양식을 작성하여 주시기 바랍니다. 13 00:00:40,570 --> 00:00:42,880 단지, 당신이 생각하는 프로젝트의 어떤 종류의 당신이 누군지를 부탁합니다 14 00:00:42,880 --> 00:00:44,870 당신이 방금 물류 이유로 곳 살고 있습니다. 15 00:00:44,870 --> 00:00:49,510 그리고 당신은 다음 주 정도가 스프레드 시트 URL을 통해에서 눈을 유지하려면 16 00:00:49,510 --> 00:00:53,520 그런 다음 Google 문서의 읽기 전용 버전을 볼 수 있습니다 17 00:00:53,520 --> 00:00:56,010 있는 우리는 정보를 수집하고 있습니다. 18 00:00:56,010 --> 00:00:58,930 당신이 누군가와 함께 일을하고 싶다면, 모든 방법으로 사람들에게 다가 자유롭게 19 00:00:58,930 --> 00:01:00,480 그 메커니즘을 통해. 20 00:01:00,480 --> 00:01:02,690 그러나 사람들의 대다수 일 솔로 해. 그거 정말 괜찮아요. 21 00:01:02,690 --> 00:01:06,120 따라서이 의무 어떠한 방법에 생각하지 않습니다. 22 00:01:06,120 --> 00:01:09,680 지난 금요일에, 그냥 저와 여기에 팀의 몇였다 23 00:01:09,680 --> 00:01:11,100 대부분 빈 극장. 24 00:01:11,100 --> 00:01:14,600 3 관광객들이 거기는 앉아, 그게 조금 어색했습니다 그럼. 25 00:01:14,600 --> 00:01:18,970 우리가 이야기하는 것은 데이터베이스이고 우리는 pset 7 조금 이야기. 26 00:01:18,970 --> 00:01:22,200 그리고 당신이 아직 동영상에 대한 그를 잡으러 발생하지 않은 경우, 괜찮아. 27 00:01:22,200 --> 00:01:26,770 나는 당연한 우리가 달리 걸릴거야하는 모든 용어를 정의하도록 노력하겠습니다 28 00:01:26,770 --> 00:01:28,840 금요일 강의에 따라. 29 00:01:28,840 --> 00:01:32,550 >> 하지만 지금은 지점에 보내 드리도록 노력하겠습니다 30 00:01:32,550 --> 00:01:34,990 단지 pset 7과 같은 일을 할 수 없다는 31 00:01:34,990 --> 00:01:37,360 하지만 정말, 후드 아래에 무슨 일이 일어나고 있는지 이해 32 00:01:37,360 --> 00:01:41,910 특히 우리가 functions.php 파일에 위치에 넣어하는 추상적 인 관념의 일부 33 00:01:41,910 --> 00:01:45,780 당신이 궁극적으로 이해 그러니 목숨을 좀 더 쉽게하지만 할 수 34 00:01:45,780 --> 00:01:48,760 훈련 바퀴 몇 주간 휴가 왔을 때 당신은 여전히​​ 살아남을 수 있도록 35 00:01:48,760 --> 00:01:53,750 현실 세계에서와 아래에있는 CS50 프레임 워크없이 일을. 36 00:01:53,750 --> 00:01:57,500 잘 알고있는 분들을위한이 $ _SESSION, 37 00:01:57,500 --> 00:02:01,960 또는 누가 이미 금요일에 동영상을 잡은 세션은 우리가 무슨 일을하게 않습니다 38 00:02:01,960 --> 00:02:04,330 PHP 기반의 웹 응용 프로그램에서? 39 00:02:04,330 --> 00:02:09,650 이것은 GET과 POST하는 정신에서 비슷한 뜻 전역 변수입니다 40 00:02:09,650 --> 00:02:13,970 그리고 몇 다른,하지만이 일이 도움이 뭡니까? 41 00:02:13,970 --> 00:02:18,320 >> 세션이 무엇에 사용됩니까? 그래. [학생] 로그인 42 00:02:18,320 --> 00:02:21,040 뭐라고 요? [학생] 로그인 실제로 로그인. 43 00:02:21,040 --> 00:02:25,100 pset 7에서 우리는 로그인 촉진이 세션의 전역을 사용하는 44 00:02:25,100 --> 00:02:28,600 그럼이 자동 전역에 대한 좋은 것은 그것이 연관 배열 있다는 것입니다. 45 00:02:28,600 --> 00:02:33,190 연관 배열, 리콜, 그냥 배열이지만 누구의 인덱스는 더 이상 숫자가 할 필요가 없습니다 46 00:02:33,190 --> 00:02:37,670 012처럼. 그들은 숫자가 될 수도 있고 아니면 그들은 심지어 문자열이 될 수 있습니다. 47 00:02:37,670 --> 00:02:44,890 당신이 아직 pset 7로 다이빙 한 경우 그리고, 당신은 우리가 키라고 ID를 저장하는 기억 할 수 있습니다 48 00:02:44,890 --> 00:02:50,330 값이 123 같은 경우이 연관 배열의 내부 - 49 00:02:50,330 --> 00:02:53,780 무엇이든 현재 사용자의 ID에 기록입니다. 50 00:02:53,780 --> 00:02:59,470 이것에 대한 동기 부여는 사용자가 로컬 호스트를 방문한 후에도 것입니다 51 00:02:59,470 --> 00:03:02,720 또는 내 웹 사이트 더 일반적으로 그리고 그들은 로그인 한 52 00:03:02,720 --> 00:03:07,320 그들은 링크를 클릭하거나 5 분 내 웹 사이트에 반환하지 않는 경우에도 53 00:03:07,320 --> 00:03:10,730 또는 시간 또는 하루 만 그들의 브라우저 창을 열어 둔도, 54 00:03:10,730 --> 00:03:14,370 이 전역을 통해 나는 그들이가 로그인되어 있는지 기억 55 00:03:14,370 --> 00:03:21,140 >> 즉, 내가 저 사용자에 대해 당신이 원하는 약간의 장기 아무것도 저장할 수 있습니다. 56 00:03:21,140 --> 00:03:24,390 그리고 당신은 쇼핑 카트의 화신으로 정말로 생각할 수 있습니다. 57 00:03:24,390 --> 00:03:27,740 아마존 같은 곳은 분명히, 당신은 쇼핑 카트에 물건을 놓고 58 00:03:27,740 --> 00:03:32,230 하지만 HTTP, 프로토콜은 웹의 힘은 상태 비 저장입니다 59 00:03:32,230 --> 00:03:34,230 의미에서 당신이 웹 사이트를 방문 할 때, 60 00:03:34,230 --> 00:03:37,290 대부분의 경우에 어떤 일정한 네트워크에 연결되어 있지 않은 61 00:03:37,290 --> 00:03:39,270 브라우저와 서버 사이에 있습니다. 62 00:03:39,270 --> 00:03:42,190 당신은 HTML과 JPEG 파일과 GIF를 다운로드 모두, 한 즉시로 63 00:03:42,190 --> 00:03:48,200 연결은 도보로갑니다 그리고 당신은 서버에서 HTML과 이것 저것의 사본을 갖추고 있습니다. 64 00:03:48,200 --> 00:03:53,000 그러나 서버가 당신에 대해 뭔가를 기억하려고한다면, 65 00:03:53,000 --> 00:03:57,580 부담은 실제로 해당 정보를 기록 할 수있는 서버에 있습니다. 66 00:03:57,580 --> 00:04:00,130 그리고 서버를 제어 할 수 있습니다 그래서 당신은 프로그래머 67 00:04:00,130 --> 00:04:04,400 이 전역 연관 배열의 내부 당신이 원하는 대부분의 아무것도 넣을 수 있습니다 68 00:04:04,400 --> 00:04:06,850 그리고, 거기 사용자가 돌아 오면 다음 번입니다 69 00:04:06,850 --> 00:04:12,070 그 분 이죠 심지어 일 후, 자신의 브라우저 창을 닫으하지 않는 것인지 70 00:04:12,070 --> 00:04:14,360 되는 포인트 세션이 사라집니다. 71 00:04:14,360 --> 00:04:17,779 그래서이 임시 저장, 너무 비 영구적이고, 그것은 멀리 가지 의미 72 00:04:17,779 --> 00:04:22,360 사용자가 브라우저를 닫 자마자 - 단지 해당 탭, 종종 전체 브라우저, 73 00:04:22,360 --> 00:04:24,930 이를 효과적으로 사용자를 로그 아웃. 74 00:04:24,930 --> 00:04:28,000 그래서이 일이 실제로 어떻게 구현? 75 00:04:28,000 --> 00:04:31,360 의 우리가 금요일에 바라 보았다 간단한 예제를 잠깐 살펴 보자. 76 00:04:31,360 --> 00:04:33,340 그 익숙하지 않은 들어,이처럼 간단했다. 77 00:04:33,340 --> 00:04:35,910 이 주된 목적인 생활에서 말하는 것입니다 웹 페이지입니다 78 00:04:35,910 --> 00:04:38,000 내가 몇번이나이 페이지를 방문했습니다. 79 00:04:38,000 --> 00:04:41,670 이 내가 방문하는 월요일에 여기 처음이므로 0 번 말합니다. 80 00:04:41,670 --> 00:04:46,940 >> 하지만이 페이지를 다시로드 시작하면, 그것은, 1 시간, 2, 3, 4, 5를 말한다 81 00:04:46,940 --> 00:04:49,800 이 결국 단지, 일어나, 일어나 계산에 유지됩니다 82 00:04:49,800 --> 00:04:53,130 각 시간이 지나면에서 새로 고침을 클릭합니다. 83 00:04:53,130 --> 00:04:58,830 그래서 어떻게 작동하는 거지? 저 counter.php이라는 파일의 안으로 들어 가자. 84 00:04:58,830 --> 00:05:02,490 그 상단 부분은 파란색으로 의견이지만, 흥미로운 부분은 여기입니다. 85 00:05:02,490 --> 00:05:06,670 13 호선에 우리는이 기능 session_start를 호출 86 00:05:06,670 --> 00:05:09,600 그 말 그대로 당신이 액세스 할 수 있도록하려는 경우 당신이해야 할 모든 것이 87 00:05:09,600 --> 00:05:13,610 이 특별한 전역은 _SESSION $라고합니다. 88 00:05:13,610 --> 00:05:17,430 그게 가능한 모든 것을 가능하게하고, 우리는 가능한 모든 방법은 순간에 볼 수 있습니다. 89 00:05:17,430 --> 00:05:20,350 내가하는 일이 선 16 통지합니다. 90 00:05:20,350 --> 00:05:25,960 즉, 인덱스 값 - - "카운터"카운터라는 키 경우 91 00:05:25,960 --> 00:05:32,310 나는 아래 줄에 어떤 역할을하고있어 다음 세션이라는 배열의 내부를 존재? 92 00:05:32,310 --> 00:05:36,650 라인 18 일이란 무엇입니까? 93 00:05:36,650 --> 00:05:40,360 >> [안 들리게 학생 응답] 그게 뭔데? [학생]의 값을 저장. 좋아. 94 00:05:40,360 --> 00:05:45,800 그것은 새로운 지역 임시 변수에 지금 세션에 값을 보관하고 있어요 95 00:05:45,800 --> 00:05:48,250 모두 소문자 달러의 카운터. 96 00:05:48,250 --> 00:05:50,770 PHP가 이미 여기 좀 게으른되는 것을 확인할 수 있습니다. 97 00:05:50,770 --> 00:05:55,550 우리가 INT 또는 부동이나 문자열이나 이런 건의 언급이없는주의 98 00:05:55,550 --> 00:06:00,480 PHP는 약하게 입력되어 있기 때문에, 상기 당신은 변수의 유형을 지정하지 않아도 99 00:06:00,480 --> 00:06:03,310 여기이 경우에조차 아직 선언되지습니다. 100 00:06:03,310 --> 00:06:08,980 나는이 중괄호 내부를 선언하고 C는 달리,이 사실은 괜찮습니다. 101 00:06:08,980 --> 00:06:13,800 깊이 변수의 선언을 중첩 아무리 PHP에서입니다 - 102 00:06:13,800 --> 00:06:16,650 내부 내부 곱슬 괄호와 같은 곱슬 괄호의 - 103 00:06:16,650 --> 00:06:21,230 그것은 그 순간에 시간에, 프로그램의 나머지 부분이 존재합니다 104 00:06:21,230 --> 00:06:22,680 더 나은 또는 악화에 대해. 105 00:06:22,680 --> 00:06:26,930 그게 바로 우리가하는 일이로 당신이 그것을 정의 즉시 글로벌된다. 106 00:06:26,930 --> 00:06:31,620 >> 그렇지 않으면,면, 아무 세션 전역에있어 발견하지 않습니다, 107 00:06:31,620 --> 00:06:34,680 내가 외관상 0으로이 변수 카운터를 초기화하는거야 108 00:06:34,680 --> 00:06:37,580 따라서 단지 사용자가 전에 여기 없었습니다 가정. 109 00:06:37,580 --> 00:06:40,030 그리고이 과정은 어떻게 카운터를 증가합니까? 110 00:06:40,030 --> 00:06:44,480 이 연관 배열의 안에 값을 업데이트 있어요 111 00:06:44,480 --> 00:06:49,530 현재 + 1 뭐든지간에 카운터는 동일한 설정하여. 112 00:06:49,530 --> 00:06:53,520 나는 페이지의 HTML에 여기까지 스크롤하면, 사실은 아주 간단합니다. 113 00:06:53,520 --> 00:06:58,920 내가이 페이지의 본문에이 모든 "당신은 아무개 번이 사이트를 방문한"입니다. 114 00:06:58,920 --> 00:07:00,350 그리고이 PHP의 구조입니다. 115 00:07:00,350 --> 00:07:06,080 당신이 할 경우 00:07:12,600 그것은 우리가 C에서 여러 번 본 적이 printf 같은에 정말 것과 117 00:07:12,600 --> 00:07:15,940 당신이 pset 7의 사양에서 이미 알고 계시 겠지만 그래도, 118 00:07:15,940 --> 00:07:20,160 인쇄도 뭔가를 출력하는 기능입니다, 사실은, 형식 코드를 사용하지 않습니다 119 00:07:20,160 --> 00:07:23,270 당신은 실제로뿐만 아니라 반향을 말할 수있다. 120 00:07:23,270 --> 00:07:27,460 그물 효과가 궁극적으로 동일하더라도 모두 언제나 약간의 차이가있어. 121 00:07:27,460 --> 00:07:31,270 이 사용 등호 그래서 것은 일의 우아한 방법 중 일종입니다 122 00:07:31,270 --> 00:07:34,910 더 간결보다 달리 할 수​​ 있습니다. 123 00:07:34,910 --> 00:07:38,370 말하자면이 모든 사이트는 않습니다. 이 카운터의 값을 출력합니다. 124 00:07:38,370 --> 00:07:40,550 이 모든 사실은 어떻게 된 일 이죠? 125 00:07:40,550 --> 00:07:43,250 당신은 일주일에 기억 될 수 정도 전에 우리는 후드 아래에 찾고 시작 126 00:07:43,250 --> 00:07:47,910 웹 페이지가 경감 탭을 사용하여 운영 방식. 127 00:07:47,910 --> 00:07:51,900 >> 크롬은 Mac 버전, Windows 버전, 심지어 리눅스 버전이 모두 있습니다 128 00:07:51,900 --> 00:07:59,510 이 내장 된 디버거가된다 그리고 파이어 폭스와 IE 비슷한 메커니즘을 가지고 129 00:07:59,510 --> 00:08:01,400 브라우저의 내부. 130 00:08:01,400 --> 00:08:03,040 의는 다음에서 살펴 보자. 131 00:08:03,040 --> 00:08:06,960 우리는 여기에 탭을 아주 많이 있고 왼쪽 하나가 요소임을 기억 한 132 00:08:06,960 --> 00:08:10,700 그리고 HTML 및 자바 스크립트를 페이지에 얼마나 godawful 상관없이, 133 00:08:10,700 --> 00:08:15,710 요소 '탭을 당신이 실제로 계층 HTML을 탐색 할 수있는 기억 134 00:08:15,710 --> 00:08:17,050 그리고 멋지고 깔끔하게. 135 00:08:17,050 --> 00:08:19,370 귀하는 Google이나 페이스 북과 같은 웹 사이트에서 배우려고한다면 136 00:08:19,370 --> 00:08:22,370 나 정말 모든 웹 사이트는 당신이 더 나을는 것을 137 00:08:22,370 --> 00:08:26,360 소스 코드에서 원시 소스를보고 반대로이 이쪽을보고, 138 00:08:26,360 --> 00:08:29,580 그건 우리가 특히 Google의 사이트에서 본 적이으로 엉망이 될 수 있습니다. 139 00:08:29,580 --> 00:08:32,220 내가 대신 여기에 네트워크 탭을 클릭하면, 140 00:08:32,220 --> 00:08:34,830 내가이 페이지를 방문 할 때 무슨 일이 벌어지고 있는지 확인합시다. 141 00:08:34,830 --> 00:08:38,669 먼저 내 캐시를 지우 보자. 142 00:08:38,669 --> 00:08:43,570 나는 크롬의 설정으로 이동하고 역사에 갈거야 143 00:08:43,570 --> 00:08:46,420 다음 모든 인터넷 사용 정보를 삭제합니다. 144 00:08:46,420 --> 00:08:48,170 당신은 다른 목적을 위해이 일을하는 데 사용할 수 있습니다, [웃음] 145 00:08:48,170 --> 00:08:51,990 하지만 개발 웹 사이트에 관한 한, 사실은 유용 - 146 00:08:51,990 --> 00:08:55,980 당신이 웃을 경우 알아요. [웃음] 147 00:08:55,980 --> 00:08:59,310 웹 사이트를 개발할 때 현실이기 때문에 실제로는 정말 유용합니다 148 00:08:59,310 --> 00:09:04,100 캐시 HTML 파일, 캐시 된 자바 스크립트 파일과 같은 쿠키와 물건 등 149 00:09:04,100 --> 00:09:06,390 실제로 머리가 지끈 거리는 될 수 있기 때문에 경우 어떤 이유로 150 00:09:06,390 --> 00:09:11,500 브라우저는 일부 파일을 캐시하기로 결정 그런데도 당신은 서버에 해당 파일을 변경했습니다 151 00:09:11,500 --> 00:09:14,670 하지만 브라우저는 정말 파일이 변경되었는지 실현되지 않았습니다 152 00:09:14,670 --> 00:09:19,060 당신은 새로 고침 버튼을 클릭해도되므로 실제로 다시 다운로드하지 않습니다 153 00:09:19,060 --> 00:09:23,210 단지 결함이 코드와 함께 있지 않은지 확인하는 가장 확실한 방법 중 하나, 154 00:09:23,210 --> 00:09:26,480 이 브라우저의 동작과 함께 여러분의 브라우저에 여기에 가서하는 것입니다 155 00:09:26,480 --> 00:09:29,950 더 혼란이 없어 있도록하고 단지 전체 역사를 취소합니다. 156 00:09:29,950 --> 00:09:33,210 >> 당신이 정말로 편집증 환자가되고 싶으면 그리고, 브라우저를 종료, 다시 시작 157 00:09:33,210 --> 00:09:35,660 그리고 예상대로 모두가 작동하는지 확인하십시오. 158 00:09:35,660 --> 00:09:38,820 개발을 수행 할 때 그래서 짧은에, 캐시는 정상입니다. 159 00:09:38,820 --> 00:09:40,690 그래서 여기에 우리가 네트워크 탭이 있습니다. 160 00:09:40,690 --> 00:09:46,020 나는 이전에 사이트에게 9 번을 방문하지만, 내가 지금 가서 새로 고침을 클릭 해했다. 161 00:09:46,020 --> 00:09:47,500 그리고 다시 아래로 0입니다. 162 00:09:47,500 --> 00:09:52,100 가 실제로이 세션의 자동 전역이 구현되고 있다는 것이 얼마나 보자. 163 00:09:52,100 --> 00:09:55,990 나는되었다 한 HTTP 요청을 클릭거야 164 00:09:55,990 --> 00:09:58,810 이 디버깅 창 나 그 속을 살펴볼 수 있습니다. 165 00:09:58,810 --> 00:10:01,970 난 여기 관심이없는 서버에서 응답을 참조하십시오. 166 00:10:01,970 --> 00:10:04,030 여러 가지 방법으로 어떤 숫자로 본 적이 있어요. 167 00:10:04,030 --> 00:10:06,350 그런데 기술적으로 흥미로운 것은 헤더입니다. 168 00:10:06,350 --> 00:10:11,770 여기 아래로 스크롤하고, 요청 헤더에 중점을 소스보기를 클릭하면 169 00:10:11,770 --> 00:10:14,400 내가보고 할게 그대로 HTTP 요청입니다 170 00:10:14,400 --> 00:10:17,250 그, 그냥 내 브라우저에서 서버에 갔어요 171 00:10:17,250 --> 00:10:21,400 는 과거형 GET 후 / counter.php 파일 이름하는 것 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1은 브라우저에서 사용하는 HTTP의 버전이었습니다. 173 00:10:25,670 --> 00:10:31,070 여기이 줄은 서버의 이름이 무엇인지 브라우저에서 서버에 약간의 알림입니다 174 00:10:31,070 --> 00:10:33,020 이 얘기하고 싶어하는. 175 00:10:33,020 --> 00:10:38,200 그리고 이것의 나머지는 지금 관련 때때로 재미 있지만입니다. 176 00:10:38,200 --> 00:10:40,090 >> 이 호기심이긴합니다. 177 00:10:40,090 --> 00:10:43,530 이 문자열은하지만 암호화, 언제든지 귀하의 브라우저는 웹 사이트를 방문 178 00:10:43,530 --> 00:10:47,110 당신이 사용하는 브라우저가 서버에 알리는하고 있습니다 179 00:10:47,110 --> 00:10:50,040 및 사용과 그 버전을하고 있는지 운영 체제. 180 00:10:50,040 --> 00:10:52,650 지금까지 CNN과 이것 저것 같은 방법을 웹 사이트를 궁금해 한면 181 00:10:52,650 --> 00:10:56,860 비율이 웹, PC 사용자의 Mac 사용자를 무엇인지 알고, 182 00:10:56,860 --> 00:11:00,820 IE 사용자, 크롬 사용자와 같은, 그건 때문에 우리의 브라우저의 모든 183 00:11:00,820 --> 00:11:04,300 우리가 무엇인지가 매일 웹 사이트를 말하고 있습니다. 184 00:11:04,300 --> 00:11:07,410 그것은 반드시, 개인 식별 정보를 포함하지 않습니다 185 00:11:07,410 --> 00:11:13,060 하지만 당신의 IP 주소는 사용중인 브라우저 및 OS이며, 서버를 말해 않습니다. 186 00:11:13,060 --> 00:11:14,720 이 정보가 어디 그게. 187 00:11:14,720 --> 00:11:19,960 이것을 세션에 관해서는 그렇지만 어떻게 응답 헤더는 이제 더 재미있는되어 있습니다. 188 00:11:19,960 --> 00:11:22,530 나 응답 옆에 소스보기를 클릭 봅시다. 189 00:11:22,530 --> 00:11:24,590 여기서 흥미로운 것은 몇 가지 있습니다. 190 00:11:24,590 --> 00:11:27,580 1, 우리는 200 상태 코드를 돌아 왔어. 191 00:11:27,580 --> 00:11:29,840 그 모든 것이 잘되고 있다는 것을 의미하기 때문에 우리는이 상태 코드를 참조하지 마십시오. 192 00:11:29,840 --> 00:11:32,920 이 곳 대조적으로 그대로 괜찮 의미합니다. 193 00:11:32,920 --> 00:11:36,380 우리는 가끔 나쁜 볼 수는 무엇입니까? [학생] 404. 194 00:11:36,380 --> 00:11:39,860 404, 파일을 찾을 수 없습니다 403 당신은 이미시 비틀 될 수 있습니다 195 00:11:39,860 --> 00:11:43,660 금지되어있는 어떤은 chmod를 뭔가, 대부분의 가능성이 걸 잊었을 의미합니다. 196 00:11:43,660 --> 00:11:45,190 그리고 다른 사람들의 무리가 있습니다. 197 00:11:45,190 --> 00:11:47,760 >> 아래에서이 약간 미친 짓이야. 198 00:11:47,760 --> 00:11:52,340 정말 그냥 gedit에 붙여 넣기하여 몇 분 전에이 파일을 썼다. 199 00:11:52,340 --> 00:11:57,100 정말 웹이 전에 왜이 페이지는 1981 년에 만료 거죠? 200 00:11:58,010 --> 00:12:00,730 거기에 무슨 일이 일어나고있는거야? 201 00:12:00,730 --> 00:12:04,390 >> [안 들리게 학생 응답] 타임 스탬프. 그런데 왜? 202 00:12:06,110 --> 00:12:09,120 그것은 다소 임의이지만, 실제로 유용합니다. 203 00:12:09,120 --> 00:12:15,500 이건 내 브라우저로 말하는 것은 당신이 방금 이미 만료 된 요청하신이 PHP 파일입니다. 204 00:12:15,500 --> 00:12:18,580 사실, 30 년 전에 만료되었습니다. 205 00:12:18,580 --> 00:12:20,260 하지만 그건 정말 무슨 뜻 이죠? 206 00:12:20,260 --> 00:12:22,500 단지, 사용자가이 페이지를 방문 다음 시간을 의미합니다 207 00:12:22,500 --> 00:12:25,540 여부를 주소 표시 줄에 URL을 다시로드하거나 입력하여, 208 00:12:25,540 --> 00:12:28,010 당신이 가서 그 새 복사본을 가져옵니다 있는지 확인하십시오. 209 00:12:28,010 --> 00:12:30,840 이것은 캐시 분할의 예의 일종입니다 210 00:12:30,840 --> 00:12:33,790 단지 브라우저를 권장하는 의미 바보 단어 211 00:12:33,790 --> 00:12:37,260 실제로 캐싱 HTML에서 해당이 서버에서 전송 된 212 00:12:37,260 --> 00:12:41,490 당신은 실수로 새로 고침을 누르면 다음 파일의 동일한 버전이 표시되지 않도록. 213 00:12:41,490 --> 00:12:43,730 당신은 실제로 새 복사본을 보내도록 서버를 싶습니다. 214 00:12:43,730 --> 00:12:47,440 그래서이 1,981 있다는 사실은 그 해당의 어플라이언스가 선택 무엇을 의미 215 00:12:47,440 --> 00:12:50,280 과거의 임의의 날짜 있습니다. 216 00:12:50,280 --> 00:12:53,380 하지만 진짜 육즙이 라인은 지금 하나입니다. 217 00:12:53,380 --> 00:12:57,550 도 50 전에 당신은 아마 쿠키와 왠지 내 얼굴이 익숙하고 있습니다. 218 00:12:57,550 --> 00:13:01,820 현재 지금, 특히 적은 편안한 나 사이에 그 나라, 219 00:13:01,820 --> 00:13:04,120 여러분의 이해 쿠키는 지금 무엇 220 00:13:04,120 --> 00:13:06,980 귀하의 이해가 더 많은 기술하기에 있는데도? 221 00:13:08,150 --> 00:13:10,070 쿠키는 무엇입니까? 그래. 222 00:13:10,070 --> 00:13:13,890 [학생] 사용자에 대한 정보, 자신의 사용자 이름이나 뭔가를 서면으로 한 경우 좋아해요. 223 00:13:13,890 --> 00:13:17,370 >> 좋아. 그것은 이미 자신의 사용자 이름을 입력 한 여부, 사용자에 대한 정보입니다. 224 00:13:17,370 --> 00:13:21,190 쿠키는 서버가 사용자에 대해 뭔가를 기억된다 방법입니다. 225 00:13:21,190 --> 00:13:25,810 그리고 쿠키가 정말 것은 텍스트 파일 또는 바이트의 일부 순서입니다 226 00:13:25,810 --> 00:13:28,340 그는 브라우저의 내부에 서버가 심어 져있어 227 00:13:28,340 --> 00:13:31,960 안쪽으로 그 파일의하거나 해당 바이트 중에서는 식별자 어떤 종류의 것입니다. 228 00:13:31,960 --> 00:13:35,640 아마도 문자 그대로 사용자 이름이지만, 더 자주 더 이상한 모양의 뭔가가 229 00:13:35,640 --> 00:13:43,700 bo8dal3ct 등등 - -이 정말 큰 영숫자 문자열 여기에있는 것 같은 230 00:13:43,700 --> 00:13:47,050 그 정말 당신에 대한 고유 식별자해야 해. 231 00:13:47,050 --> 00:13:49,790 또는 가상 손 도장의 일종이라고 생각할 수 있습니다. 232 00:13:49,790 --> 00:13:53,020 당신이 실제로 지불 한 것을 기억하기 위해 일부 클럽이나 놀이 공원에 가면 233 00:13:53,020 --> 00:13:55,850 과에 갔고, 그들은 어떤 종류의 손에 빨간 스티커를 넣어 234 00:13:55,850 --> 00:13:59,270 그리고 그 말은 당신이 이미 지불 한 카운터에있는 사람들을 상기시켜줍니다 235 00:13:59,270 --> 00:14:01,340 당신은 와서 원하는대로 이동할 수 있습니다. 236 00:14:01,340 --> 00:14:04,250 쿠키는 정신에서 그에게 약간 비슷합니다. 237 00:14:04,250 --> 00:14:08,070 난 그냥 내 캐시를 삭제 한 후처럼 처음 내 말은,이 웹 사이트를 방문 238 00:14:08,070 --> 00:14:11,620 웹 서버,이 경우 어플라이언스는, 내 손에 우표를 넣어 239 00:14:11,620 --> 00:14:15,030 그의 이름은 PHPSESSID입니다, 세션 ID, 240 00:14:15,030 --> 00:14:18,260 이 정말 긴 영숫자 문자열 값이 있습니다. 241 00:14:18,260 --> 00:14:22,470 >> 그래서 내 손에 지금 emblazoned의 일종 이죠 그래서 충돌이 다음 번에 ​​다시로드하는 242 00:14:22,470 --> 00:14:25,230 또는 수동으로, 브라우저에서 URL을 방문 243 00:14:25,230 --> 00:14:29,230 HTTP의 정의에 의해 웹 브라우저는 손 스탬프를 제공 할 것이다 244 00:14:29,230 --> 00:14:31,940 또 한번, 또 한번 다시. 245 00:14:31,940 --> 00:14:34,550 그래서,하지만이 서버는 반드시, 내가 누군지 알하지 않습니다 246 00:14:34,550 --> 00:14:39,610 그들은 적어도 최소한 더 구체적으로 동일한 사용자 또는 동일한 브라우저 걸 알아요. 247 00:14:39,610 --> 00:14:45,660 그리고이 세션의 전역을 구현하는 방법을 궁극적 있습니다. 248 00:14:45,660 --> 00:14:51,200 서버는 두 번째의 웹 사이트 또는 제 3 시간을 다시 할 때 당신이 아무 생각이 없습니다 249 00:14:51,200 --> 00:14:53,410 이 손 스탬프를 제공하지 않는 한. 250 00:14:53,410 --> 00:14:55,530 그리고 빨리 손 스탬프를 선물로, 251 00:14:55,530 --> 00:14:59,370 웹 서버는 기본적으로 자신의 작은 데이터베이스로갑니다 252 00:14:59,370 --> 00:15:06,040 그리고 수표는, 좋아, 난 그냥 등등 사용자 bo8dal3ct의 손 스탬프를 볼 수 있으며 있습니다. 253 00:15:06,040 --> 00:15:09,850 나 프로그래머가 저장된 어떤 정보 보자 254 00:15:09,850 --> 00:15:12,380 이 사용자에 대한 전역의 안쪽에, 255 00:15:12,380 --> 00:15:17,000 그리고 내가 그 데이터가 자동 전역 세션의 내부 다시 있는지 확인하자 256 00:15:17,000 --> 00:15:19,830 프로그래머는 데이터를 다시 액세스 할 수 있도록 257 00:15:19,830 --> 00:15:23,360 그것은 어떤 분 시간 전 설정 한 경우에도 마찬가지입니다. 258 00:15:23,360 --> 00:15:26,150 몇 시간 동안 나쁜 랩도 따라서 즉, 쿠키, 259 00:15:26,150 --> 00:15:29,990 때문에 브라우저에서 불안감을하고, 정말 우리의 개인 정보 보호 및 모든 위반하는 260 00:15:29,990 --> 00:15:31,900 실제로 그들 덕분없이 좋은 유틸리티가 261 00:15:31,900 --> 00:15:36,110 당신은 지속적으로 사용자가 방문하는 모든 Facebook 페이지에 로그인됩니다 262 00:15:36,110 --> 00:15:40,680 브라우저가 기억의 일부 방법이하지 않은 경우가 읽거나 모든 Gmail 이메일 263 00:15:40,680 --> 00:15:43,320 당신은 이미 인증 한. 264 00:15:43,320 --> 00:15:46,640 >> 따라서이 방식으로 쿠키가 와이어를 통해 앞뒤로 전송됩니다. 265 00:15:46,640 --> 00:15:52,470 쿠키에 대한 또 다른 호기심, 특히 여기이 일반 텍스트로 완전히이라는 것입니다. 266 00:15:52,470 --> 00:15:54,930 무엇이든지 무슨 일이 일어나고 어떤 암호화은 없다 267 00:15:54,930 --> 00:15:57,240 그리고 실제로 나는 순간에 HTTP를 사용하고 있습니다. 268 00:15:57,240 --> 00:16:00,890 지금은 2 년 전입니다 CS50에서의 즐겨 찾기 순간 중 하나, 269 00:16:00,890 --> 00:16:04,750 시기에 Firesheep라는 도구가 나왔어했다. 270 00:16:04,750 --> 00:16:08,320 이 보안 연구자에 의해 만들어진 소프트웨어의 무료 조각이 었어요 271 00:16:08,320 --> 00:16:13,250 지역 사회를위한 모닝콜이 atrociously 구현이 얼마나 말을하고로 272 00:16:13,250 --> 00:16:17,900 웹에서 특정 인증 메커니즘이었다. 273 00:16:17,900 --> 00:16:22,880 따라서 시간에 대한 페이스 북은 HTTP, HTTPS 더 이상 거의 완전히이었다. 274 00:16:22,880 --> 00:16:25,640 그리고 암호화의 작동 원리 아무 생각이없는 경우에도, S는 안전합니다 275 00:16:25,640 --> 00:16:27,950 그래서 적어도 일부 암호화에 참여가 의미합니다. 276 00:16:27,950 --> 00:16:30,610 페이스 북은 사용자 이름과 암호를 암호화하는 데 사용 않았습니다 277 00:16:30,610 --> 00:16:33,560 하지만 최대한 빨리 당신이 바라 보았다 pokes하거나 메시지 또는 뉴스 피드 278 00:16:33,560 --> 00:16:35,360 그 모든 암호화되지 않은되었다. 279 00:16:35,360 --> 00:16:37,870 그러므로 년 또는 2 전 까진 Gmail을했습니다. 280 00:16:37,870 --> 00:16:41,100 귀하가 로그인 될 때​​마다, 그래, 그들은, 보안 암호화를 사용 281 00:16:41,100 --> 00:16:44,300 하지만 이후 그들은 그렇지 않아. 그 이유가있을 수 있을까요? 282 00:16:44,300 --> 00:16:49,210 왜 그냥 시간은 같은 사용의 경우 암호화를 사용하지? 283 00:16:49,210 --> 00:16:53,700 그게 뭐야? 난 뭔가를들은 것 같은데. [학생] 속도. 284 00:16:53,700 --> 00:16:56,250 속도, 맞죠? 이 주위에 방법이 있습니다. 285 00:16:56,250 --> 00:16:59,610 방금 가지, 논리적으로 생각한다면 당신은 뭔가를 암호화하는 경우 286 00:16:59,610 --> 00:17:01,820 당신은 적어도 조금 더 작업을해야합니다. 287 00:17:01,820 --> 00:17:05,460 pset 2가 시저 또는 Vigenere를 구현하거나 쟁이 때 288 00:17:05,460 --> 00:17:07,760 단지 문자열을 인쇄하는 것은 비교적 간단합니다. 289 00:17:07,760 --> 00:17:12,040 암호화 한 후 최소한 문자열을 인쇄하는 것은 조금 더 작업을해야합니다. 290 00:17:12,040 --> 00:17:14,520 >>  구글과 페이스 북과 같은 슈퍼 인기있는 웹 사이트에 대한, 291 00:17:14,520 --> 00:17:18,839 당신은 사람들이 방문하는 모든 단일 웹 페이지에 대한 각 사용자에 대한 더 많은 작업을 수행해야하는 경우 292 00:17:18,839 --> 00:17:20,520 그 더 많은 CPU 시간을 소요됩니다. 293 00:17:20,520 --> 00:17:22,920 더 많은 CPU 시간이 필요하면, 당신은 더 많은 서버를해야 할 수도 있습니다 294 00:17:22,920 --> 00:17:24,270 어떤은 더 많은 돈을해야 할 수도 있습니다 의미합니다. 295 00:17:24,270 --> 00:17:27,579 그리고 몇 년 동안이 정말 최선의 방법은 아니 었습니다. 296 00:17:27,579 --> 00:17:31,440 사람들은에 필요한 전용 SSL 암호화를 사용합니다. 297 00:17:31,440 --> 00:17:34,960 그러나, 그것은 밝혀졌다, 그리고 Firesheep와 함께 동료로 슈퍼 분명 사항이 298 00:17:34,960 --> 00:17:37,920 때 지금 페이스 북에서 현재 너희들이 - 299 00:17:37,920 --> 00:17:39,880 호기심에서 묻는 건데, 당신이 자백한다면 보자. 300 00:17:39,880 --> 00:17:42,620 이 foregrounded가 아닌 경우에도 당신은 지금 어떤 탭에서 페이스 북을 사용하는 경우, 301 00:17:42,620 --> 00:17:46,610 귀하의 URL HTTP 또는 HTTPS입니까? 302 00:17:46,610 --> 00:17:50,560 [여러 학생] S. S? [웃음] 303 00:17:50,560 --> 00:17:55,510 좋아요. 모든 HTTP? 단 1? 좋아요. 304 00:17:55,510 --> 00:17:58,940 그래서 우리 모두는 지금 그 남자의 페이스 북 계정을 해킹 할 수 있습니다. 305 00:17:58,940 --> 00:18:04,100 대부분의 경우이 적어도 일부 웹 사이트에서 기본적으로 설정되고있다. 306 00:18:04,100 --> 00:18:08,120 그리고 긴 이야기 짧은 웹 트래픽이 암호화되지 않은 경우는, 307 00:18:08,120 --> 00:18:12,960 뿐만 아니라 HTML은 암호화되지 않은 WiFis에서 돌아 가야 않습니다 308 00:18:12,960 --> 00:18:16,760 그래서 쿠키 등은 공기를 통해 돌아 가야하나요 309 00:18:16,760 --> 00:18:18,940 암호화의 형태없이. 310 00:18:18,940 --> 00:18:23,540 당신은 프로그래밍에 정통한의 비트 또는 기술 정보를 검색해 약간의이면 311 00:18:23,540 --> 00:18:27,410 이 작업을 수행 무료 소프트웨어를 찾으려면, 당신이해야 할 모든 스타 벅스에 앉아있다 312 00:18:27,410 --> 00:18:30,680 일반적으로 무선을가 암호화되지 않은 곳이나 공항에 앉아 313 00:18:30,680 --> 00:18:36,070 또는 PHPSESSID : 불과 설정 쿠키 같은 키워드를 감상 314 00:18:36,070 --> 00:18:39,300 당신이 기술에 정통한이 있는지 와이파이를 볼 수 있기 때문에 315 00:18:39,300 --> 00:18:43,010 이 패턴에 대한 공기를 통해 그 흐름 비트의 모든, 316 00:18:43,010 --> 00:18:50,840 그때 당신은 남자의 PHPSESSID가 bo8dal 등등 할 일이 그런 말을 할 수 있습니다. 317 00:18:50,840 --> 00:18:53,890 그리고 다시 당신은 충분히 기술적 인 이해가있어 또는 오른쪽 도구가있는 경우 318 00:18:53,890 --> 00:18:58,890 그런 다음 재구성 자신의 브라우저가 손 스탬프를 제공하는 시작하는 수 319 00:18:58,890 --> 00:19:05,030 Facebook.com 하시고, 페이스 북은 당신이 그 사람있는 것으로 가정합니다 것입니다 320 00:19:05,030 --> 00:19:09,880 모두가 아는 당신이 누구 아니지만이 고유 식별자를 갖고 있습니다. 때문에 321 00:19:09,880 --> 00:19:14,650 그 고유 한 식별자를 도용하고, 자신과 같은 웹 서버에 제시한다면 322 00:19:14,650 --> 00:19:16,860 그들은 당신에게 그 사람의 뉴스 피드를 표시 할거야 323 00:19:16,860 --> 00:19:18,980 또는 그 사람의 메시지 나 pokes. 324 00:19:18,980 --> 00:19:23,190 >> 그리고 아마 페이스 북에 HTTPS를 활성화하는 방법을 지금 Google 것입니다. 325 00:19:23,190 --> 00:19:25,150 하지만 그렇게 간단합니다. 326 00:19:25,150 --> 00:19:27,660 그리고 페이스 북과 구글과 같은, 이것 정말 잘 찍었을 327 00:19:27,660 --> 00:19:31,870 하지만 HTTP를 사용하지 않는 사용자가 방문하는 모든 웹 사이트에 대한 모든 더 많은 눈을 유지 328 00:19:31,870 --> 00:19:35,020 그들에 대한 중요한 정보가 어떤 종류의를 가지고 329 00:19:35,020 --> 00:19:37,490 이 금융 또는 개인이거나, 좋아하는지. 330 00:19:37,490 --> 00:19:43,180 그들은이를 사용하지 않는 경우일지도 같은 쿠키를 아주 쉽게 도난 될 수 있습니다 331 00:19:43,180 --> 00:19:46,270 그리고 위조, 그 바로 Firesheep했던 일이야. 332 00:19:46,270 --> 00:19:48,250 당신은 프로그래머가 될 필요는 없었어요. 333 00:19:48,250 --> 00:19:51,680 인터넷 연결이,이 무료 도구를 다운로드 한 자네가 할 일은했다 334 00:19:51,680 --> 00:19:56,490 당신은 로그인 후 당신에게 페이스 북 이름을 보여 것이며 그런 일이 겠어요 것은 335 00:19:56,490 --> 00:20:00,170 주변이 특정 예제에서 샌더스의의 모두, 336 00:20:00,170 --> 00:20:03,260 자신의 이름을 클릭하여 소프트웨어 프로세스를 자동화하고해야 할 모든 한 337 00:20:03,260 --> 00:20:05,970 의 그 쿠키를 스니핑 자신의 페이스 북에 발표, 338 00:20:05,970 --> 00:20:07,990 그리고, 좋아, 당신은 로그인하고 339 00:20:07,990 --> 00:20:11,190 그래서이 그 중 하나 공식적으로 "이 작업을 수행하지 않습니다." 340 00:20:11,190 --> 00:20:14,660 자신의 홈 네트워크가 있고 열심히 했어하려는 경우, 모든 수단으로, 341 00:20:14,660 --> 00:20:17,530 하지만이 대학 환경에서 선을 넘어 않습니다 알고 있습니다. 342 00:20:17,530 --> 00:20:20,030 >> 하지만, 여기에 목표는이 작업을 수행하는 방식에는 영향을주지 않습니다 강조하고 정말 343 00:20:20,030 --> 00:20:22,320 하지만 사물의 이러한 종류의 방어하는 방법. 344 00:20:22,320 --> 00:20:26,180 그 자체가 문제가있는 경우에도 여기 사소한 솔루션, 345 00:20:26,180 --> 00:20:31,360 정말 지속적으로 HTTPS를 사용하지 않는 사이트의 사용을 줄일 수있는 것입니다. 346 00:20:31,360 --> 00:20:34,520 그래서 페이스 북과 구글과 같은 사이트가 점점 확인란을이 347 00:20:34,520 --> 00:20:36,200 어디서 이런 걸에 선택할 수 있습니다 348 00:20:36,200 --> 00:20:40,000 그리고 은행 유사한 이유로 년간이 있었다. 349 00:20:40,000 --> 00:20:43,580 그래서 두려움 인자 우리가 할 수있는 경우의 조금. 하지만 그게 요약에 있습니다. 350 00:20:43,580 --> 00:20:46,420 그건 서버가 당신이 누구 기억하는 방법입니다. 351 00:20:46,420 --> 00:20:50,760 그리고 곧 당신이 누군지 기억하는, 그들은 당신에 대해서 아무것도 기억 352 00:20:50,760 --> 00:20:56,140 프로그래머가 _SESSION $라는이 특별한 전역의 내부 저장된. 353 00:20:56,140 --> 00:20:59,750 그리고 pset 7 우리는 단지 정수를 기억 trivially을 사용하고 354 00:20:59,750 --> 00:21:02,260 로그인 한 사용자의 즉 고유 ID, 355 00:21:02,260 --> 00:21:05,880 우리가 알고있는 사람들은 가본 적. 356 00:21:05,880 --> 00:21:12,450 그런 다음 세션이나 쿠키 나처럼 질문? 357 00:21:12,450 --> 00:21:15,130 Firesheep는 더 이상뿐만 아니라 작동하지 않습니다 358 00:21:15,130 --> 00:21:18,310 당신은 특별한 promiscuous 모드로 컴퓨터를 넣어해야 359 00:21:18,310 --> 00:21:20,700 그래서 당신은 실제로 자신 이외의 트래픽을 수신하고 있습니다. 360 00:21:20,700 --> 00:21:23,940 현재 Firesheep를 다운로드하는 경우 그래서,별로 쉽게 생각해 361 00:21:23,940 --> 00:21:26,850 그것은 한 번 입증하려고했는데. 362 00:21:26,850 --> 00:21:29,070 괜찮아요. 그리고 샌더스에서 작업을 수행하지 않습니다. 집에서 해. 363 00:21:29,070 --> 00:21:30,890 데이터베이스. 364 00:21:30,890 --> 00:21:33,580 우리는 아주 신중하게 pset 7에서 한 일 중 하나 365 00:21:33,580 --> 00:21:37,780 우리는 일부 사용자 ID가 사용자에게 샘플 데이터베이스에 테이블을했습니다 366 00:21:37,780 --> 00:21:41,020 거기에 일부 사용자 이름, 일부 암호화 암호. 367 00:21:41,020 --> 00:21:44,520 당신이 보게 될 당신이 이미하지 않은 경우, 여러분은 테이블을 좀 변경해야 할거야. 368 00:21:44,520 --> 00:21:47,710 당신은 그 테이블에서 사용자의 각 일부 캐시를 추가해야 할거야 369 00:21:47,710 --> 00:21:51,130 당신은 또 다른 역사 테이블, 포트폴리오 테이블을 추가 할거야 370 00:21:51,130 --> 00:21:53,310 아니면 다른 전화하십시오. 371 00:21:53,310 --> 00:21:56,740 그러나이 작업을 수행하는 방법에 대해 생각의 관점에서,의이 도구를 열겠습니다 372 00:21:56,740 --> 00:22:00,570 있는 우리 금요일에 사용하지만, 익숙하지 않은 경우 어플라이언스는 도구가 마련되어 있습니다 373 00:22:00,570 --> 00:22:04,680 , 우연히 PHP로 작성된 것입니다 phpMyAdmin이라는 374 00:22:04,680 --> 00:22:07,950 그러나 인생의 목적, 나는 진홍과 jharvard로 여기에서 로그인 후, 375 00:22:07,950 --> 00:22:15,160 내 데이터베이스를 조회하고 변경의 사용자 친화적 인 방법을 제공하는 것입니다. 376 00:22:15,160 --> 00:22:18,040 >> 나는 어플라이언스에서 실행하고 있다는 데이터베이스는 MySQL을라고합니다. 377 00:22:18,040 --> 00:22:23,420 , 매우 인기가 있으며, 사용이 멋지고 쉽게 무료로 오픈 소스 데이터베이스의 378 00:22:23,420 --> 00:22:25,620 앞이 이렇게 끝나는 특히. 379 00:22:25,620 --> 00:22:29,350 이 도구는 내가 어떻게 할 수 있습니다 뭐, 예를 들어, 테이블 주위 물건입니다. 380 00:22:29,350 --> 00:22:30,890 내가 가서이를 보자. 381 00:22:30,890 --> 00:22:36,580 금요일에 우리는 슈퍼 간단 학생들라는 테이블을 만들었습니다. 382 00:22:36,580 --> 00:22:41,680 이드, 이름, 이메일 - -은 3 열을 가지고하고 수동으로 행 몇를 삽입 383 00:22:41,680 --> 00:22:44,420 이 특정 예제에서 다윗과 마이크처럼. 384 00:22:44,420 --> 00:22:47,290 의이 좀 더 걸릴하자, 우리는 더 기억하고 싶은 있다고 가정합시다 385 00:22:47,290 --> 00:22:49,660 보다 사용자의 단지 이름과 이메일. 386 00:22:49,660 --> 00:22:53,090 제가 상단에 여기 구조를 클릭 봅시다. 387 00:22:53,090 --> 00:22:55,440 또, pset, 여기서 필요한 단계를 안내합니다 388 00:22:55,440 --> 00:22:58,150 이 중 일부는 조금 빠른 경우 때문에 걱정하지 마십시오. 389 00:22:58,150 --> 00:22:59,690 그럼 여기를 클릭거야. 390 00:22:59,690 --> 00:23:02,270 I 이메일 후 열 몇 수를 추가 할 거예요 391 00:23:02,270 --> 00:23:04,130 난 집에서 이런 일을 추가 할 때문입니다. 392 00:23:04,130 --> 00:23:06,640 나는 학생의 집를 기록 잊어 버렸습니다. 393 00:23:06,640 --> 00:23:11,400 , 내가 이동을 클릭하자, 이제 우리는 불행하게도 왼쪽에서 오른쪽으로 약간 폭이 양식을 가지고 394 00:23:11,400 --> 00:23:13,710 하지만,이 분야 하우스의 이름을 부르 겠소 395 00:23:13,710 --> 00:23:16,050 다음 유형의 지금 선택해야합니다. 396 00:23:16,050 --> 00:23:18,870 그래서합시다은 MySQL의 다양한 유형에 대한 간단한 대화를 397 00:23:18,870 --> 00:23:24,590 때문에 PHP는 약하게 입력하고 종류의 빠르고 유형을 느슨하게 연주 반면, 398 00:23:24,590 --> 00:23:29,430 데이터베이스에 특히 사실은 당신의 이점에 입력을 사용하는 매우 중요 399 00:23:29,430 --> 00:23:33,260 일 MySQL을 사용하고, 다른 데이터베이스 엔진 중 하나가 당신을 위해 할 수 있기 때문에 400 00:23:33,260 --> 00:23:37,910 당신이 데이터베이스에 가짜 데이터를 입력하지 않도록합니다. 401 00:23:37,910 --> 00:23:41,850 이 사용할 수를 확인하는 무료 오류의 일종입니다. 402 00:23:41,850 --> 00:23:46,250 >> 집에 우리는 분명히 MySQL에서 32 비트 값이 정수가 될 싶지 않아. 403 00:23:46,250 --> 00:23:49,810 우리는 숯불 가변 길이를 의미 varchar에 대해 금요일 간단히 이야기 했어요. 404 00:23:49,810 --> 00:23:54,720 이 무엇입니까? 이것은 당신이 어떤 종류의 문자열하려는 지정할 수 있습니다. 405 00:23:54,720 --> 00:23:56,840 당신은 정말, 얼마나 오래 사전에 알고하지 않습니다 406 00:23:56,840 --> 00:24:00,100 그래서 우리는 임의로, 집 이름은 255 자 수라고합니다 407 00:24:00,100 --> 00:24:04,190 하지만 32, 64로 갈 수 - 어떤 번호를 정말로. 408 00:24:04,190 --> 00:24:10,700 그러나 문자라는 필드 위에 varchar을 사용하는 장점은 무엇입니까? 409 00:24:10,700 --> 00:24:15,110 여기 아래로 스크롤 그냥 직관적 경우, 문자가와 varchar가납니다. 410 00:24:15,110 --> 00:24:19,520 Varchar는 문자 변수 길이, 문자는 문자 고정 길이입니다. 411 00:24:19,520 --> 00:24:24,730 따라서 해당 정의에 따라, 어떻게 이들 각각의 장점이나 단점이있어? 412 00:24:24,730 --> 00:24:30,490 즉, 누가 차이에 대한 관심, 또는 왜 관심을 가져야? 413 00:24:31,660 --> 00:24:35,750 >> 그래. [학생] Varchar 더 유연성을 가지고 있지만 더 많은 메모리를 차지합니다. 414 00:24:35,750 --> 00:24:40,730 좋아. Varchar 더 차지 - 봅시다. 내가 그 권리를 들었는지 모르겠어. 415 00:24:40,730 --> 00:24:42,360 당신은 한 번 더 그런 말을 할 수 있습니까? 416 00:24:42,360 --> 00:24:45,850 [학생] 내가 varchar 아마도 더 많은 유연성을 가지고 있지만 더 많은 메모리를 차지했다. 417 00:24:45,850 --> 00:24:51,170 흥미 롭군. 좋아요. Varchar 아마도 더 많은 유연성을 제공하지만, 더 많은 메모리를 차지합니다. 418 00:24:51,170 --> 00:24:53,220 후자는 반드시 사실이 아니다. 419 00:24:53,220 --> 00:24:56,290 그것은 문맥에 따라 달라집니다,하지만 그에게로 돌아가요. 420 00:24:56,290 --> 00:25:03,230 >> [안 들리게 학생 응답] 그렇지. 421 00:25:03,230 --> 00:25:06,900 사실은 숯불이 일반적으로 더 많은 메모리를 사용하는 경우입니다 422 00:25:06,900 --> 00:25:10,950 문자는, C에서 같은 문자열처럼이기 때문에, 그것은 문자의 배열입니다. 423 00:25:10,950 --> 00:25:13,690 당신은 길이 255 문자 필드를 말한다면 424 00:25:13,690 --> 00:25:16,910 데이터베이스는 그대로 당신에게 255 자를 제공 할 수 있습니다. 425 00:25:16,910 --> 00:25:22,290 그리고 집은 메이와 6 자 총되는 것을 포기 끝나는 경우, 426 00:25:22,290 --> 00:25:25,090 당신은 200 자 이상 낭비하고 있습니다. 427 00:25:25,090 --> 00:25:29,640 >> 필요한만큼 효과적으로 varchar는 다양한 문자로 사용하도록 428 00:25:29,640 --> 00:25:31,590 최대 최대 금액을합니다. 429 00:25:31,590 --> 00:25:35,470 하지만 당신이 지불하는 가격은 잠재적으로, 실제로 성능입니다. 430 00:25:35,470 --> 00:25:39,740 - 귀하의 문자열의 모든 8 자 될 것이다 것을 사전에 알고있는 경우 431 00:25:39,740 --> 00:25:43,090 예를 들어, 길이는 8 암호를 요구하는 가정 - 432 00:25:43,090 --> 00:25:47,350 하지만하지 종종 상황에 숯불 필드를 사용하는 거꾸로 433 00:25:47,350 --> 00:25:51,100 암호처럼 뭔가를 고정 길이를 지정하는 것입니다 434 00:25:51,100 --> 00:25:53,300 왜냐하면 지금 데이터베이스는 더 똑똑 할 수 있습니다. 435 00:25:53,300 --> 00:25:58,160 그렇게 모든 문자 필드를 알고 있다면, 열에서 모든 문자열은 같은 길이입니다 436 00:25:58,160 --> 00:26:00,780 당신은 랜덤 액세스의 기능을 다시. 437 00:26:00,780 --> 00:26:05,110 귀하의 데이터베이스 테이블의 다양한 숯불 분야 중 주변에 이동할 수 있습니다 438 00:26:05,110 --> 00:26:07,940 때문에 행과 열 같은 데이터베이스 생각합니다. 439 00:26:07,940 --> 00:26:11,670 문자열 모두가 같은 길이입니다면은, 440 00:26:11,670 --> 00:26:17,820 당신은 첫 번째 바이트 0 번 것을 알고, 그 다음 하나는 바이트 8시에 있습니다 441 00:26:17,820 --> 00:26:20,240 그리고 16 후 24, 등등. 442 00:26:20,240 --> 00:26:24,500 모든 문자열이 동일한 길이의 경우 그래서, 훨씬 더 효율적으로 주변에 이동할 수 있습니다. 443 00:26:24,500 --> 00:26:26,710 그래서 그런 성능의 관점에서 이익이 될 수 444 00:26:26,710 --> 00:26:29,420 하지만 일반적으로 당신은 사전에 알 사치를 누릴 수 없다는 445 00:26:29,420 --> 00:26:32,170 그래서 varchar을 선택하는 방법입니다. 446 00:26:32,170 --> 00:26:36,030 다음은 심지어 페이스 북은 결국 만났다는 게 또 다른 세부 사항입니다. 447 00:26:36,030 --> 00:26:39,670 , Ints 좋은이며, 우리는 말하자면 기본적으로 우리가 숫자를 원하는 시간을를 사용 448 00:26:39,670 --> 00:26:41,750 하지만 만 32 비트입니다. 449 00:26:41,750 --> 00:26:46,210 >> 그리고 페이스 북은 매우 지금 4,000,000,000 사용자가 없습니다하더라도, 450 00:26:46,210 --> 00:26:48,680 거기에 어떤 사람들은 여러 계정으로 확실히이 451 00:26:48,680 --> 00:26:50,960 또는 계정은 오픈 한 후 폐쇄 된 그 452 00:26:50,960 --> 00:26:55,130 그래서 페이스 북 자체는 제가 몇 년 전에 INT에서 전환에 있다는 걸 믿지 453 00:26:55,130 --> 00:27:00,010 까지, 대신 64 비트 is aptly라는 등 bigint. 454 00:27:00,010 --> 00:27:02,230 그래서이 너무 디자인 결정이다. 455 00:27:02,230 --> 00:27:06,570 귀하의 최종 프로젝트가 시작집니다 경우, 놀랍 운 것 456 00:27:06,570 --> 00:27:10,010 4000000000 1 사용자는 어림 잡아서있다 457 00:27:10,010 --> 00:27:13,200 ints를 사용하면 약간의 근시 될 수있는 경우 인치 458 00:27:13,200 --> 00:27:16,230 그러나 현실에서 사용자 테이블은 아마 ints로 괜찮습니다. 459 00:27:16,230 --> 00:27:19,340 그러나 pset 7과 같은 뭔가를, 기록 테이블과 같은, 460 00:27:19,340 --> 00:27:23,700 당신은 etrade.com으로 발전하는 경우 수천, 수백만의 사용자가있을 수 있습니다. 461 00:27:23,700 --> 00:27:26,020 그럼 반면에 당신은 더 이상 4,000,000,000 사용자가 없을 수도 462 00:27:26,020 --> 00:27:30,070 당신이 가진 않는 사용자는 시간이 지남에 이상 4,000,000,000 거래를 할 수 - 463 00:27:30,070 --> 00:27:33,200 구입 및 판매와 역사 것들. 464 00:27:33,200 --> 00:27:38,090 당신이 예상하면 그럼 - 또,이이 많은 데이터가있을 경우이하는 좋은 문제가 있습니다 - 465 00:27:38,090 --> 00:27:40,920 당신이 정수의 크기를 초과하는 데이터를 예상하면은, 466 00:27:40,920 --> 00:27:47,740 bigint 같은 뭔가가는 건 자주 충분 디자이너에 의해 채택하지 방향입니다 467 00:27:47,740 --> 00:27:49,710 때문에 문제가 안 사람들 모습, 468 00:27:49,710 --> 00:27:51,930 하지만 그것보다 더 큰 무언가를 선택이 용이합니다. 469 00:27:51,930 --> 00:27:55,380 십진수 우리는 고정 정밀도를 지정 pset 7에서 사용중인 470 00:27:55,380 --> 00:27:59,840 그래서 당신은 수레와 복식과 진짜야과 같은 관련된 문제를 방지 할 수 있습니다. 471 00:27:59,840 --> 00:28:02,440 >> 그리고 다른 분야가 있어요. 우리는 어느 정도 그들을 손을 흔들 수 있습니다. 472 00:28:02,440 --> 00:28:07,270 그러나 날짜, 시간은 모든 MySQL에서 소정의 형식을 가지고 473 00:28:07,270 --> 00:28:10,830 그리고 날짜와하지 varchars로 저장 날짜의 장점 474 00:28:10,830 --> 00:28:15,730 데이터베이스가 실제로 다른 형식으로 다시 포맷 할 수 있음을 의미합니다 475 00:28:15,730 --> 00:28:18,800 미국 형식 또는 유럽 형식 또는 같은이 있는지 여부 - 그러나 당신은 그럴 필요 - 476 00:28:18,800 --> 00:28:22,700 훨씬 더 효율적으로 그냥 어떤 일반 varchar라면보다. 477 00:28:22,700 --> 00:28:25,150 그리고 다른 이진, varbinary, 모양이 있어요. 478 00:28:25,150 --> 00:28:28,580 이러한 이진 대형 개체입니다, 당신은 또한 이진 데이터를 저장할 수 있습니다 479 00:28:28,580 --> 00:28:30,750 뿐만 아니라 데이터베이스의 기하학적 데이터로. 480 00:28:30,750 --> 00:28:34,350 그러나 우리는 일반적으로 ints과 varchars과 같은 신경됩니다. 481 00:28:34,350 --> 00:28:36,230 의 집과이 예를 끝까지 들어 보자 구요. 482 00:28:36,230 --> 00:28:40,030 제가 임의로 말할거야 하우스는 255 자까지만 허용됩니다. 483 00:28:40,030 --> 00:28:42,850 그런 다음 기본값은 우리가 할 수 있어요. 484 00:28:42,850 --> 00:28:47,440 우리는 기본적으로 예를 들어, 메이 하우스에 모두 넣어 수 있습니다. 485 00:28:47,440 --> 00:28:49,710 우리가 지정할 수 방법은 그 데이터베이스 486 00:28:49,710 --> 00:28:52,460 누군가가 항상 값을 가지고 있는지 확인해야합니다. 하지만 그런 일이있을 떠날 겁니다. 487 00:28:52,460 --> 00:28:55,270 사실, 집에서 학교를 살고 아니라 사람들을위한, 488 00:28:55,270 --> 00:28:59,590 어쩌면 내가 실제로 집에 대한 기본 값이 NULL입니다 지정하려면 489 00:28:59,590 --> 00:29:04,890 그리고이 확인란을 선택하고 사용자의 집이 NULL 인 경우 괜찮아요 데이터베이스를 알려줄 필요가 있습니다. 490 00:29:04,890 --> 00:29:07,270 >> 다시 말하지만, 여러분이 위치에 넣을 수 있습니다 다른 방어 메커니즘입니다 491 00:29:07,270 --> 00:29:10,590 그래서 당신은 심지어 반드시 PHP 코드에서 넣어 필요가 없습니다. 492 00:29:10,590 --> 00:29:14,630 데이터베이스 일이 있거나 NULL되지 않도록합니다. 493 00:29:14,630 --> 00:29:17,310 그리고 마지막으로, 속성. 494 00:29:17,310 --> 00:29:18,920 이 중 어느 것도 정말 관련이 없습니다. 495 00:29:18,920 --> 00:29:22,880 부호, 이진 - 그 중 어느 것도 varchar 관련이 없습니다. 496 00:29:22,880 --> 00:29:24,220 색인입니다. 497 00:29:24,220 --> 00:29:27,320 누구나 알고 있거나 인덱스가 무엇인지에 같은 추측을 기억하거나이 있습니까 498 00:29:27,320 --> 00:29:29,510 집 같은 뭔가? 499 00:29:29,510 --> 00:29:35,240 이건 너무 실제로 중요하고 상대적으로 쉽게 디자인 결정이다. 500 00:29:35,240 --> 00:29:39,200 아직 보지 못하는 사람들을 위해, 금요일에 우리는 기본 키에 대해 간단히 이야기. 501 00:29:39,200 --> 00:29:43,240 데이터베이스 테이블에서 기본 키 필드 또는 컬럼입니다 502 00:29:43,240 --> 00:29:46,270 그 고유 테이블에서 행을 식별합니다. 503 00:29:46,270 --> 00:29:49,150 그래서 우리는 ID가 현재 테이블에, 우리는 이름과 이메일을 갖추고 있습니다. 504 00:29:49,150 --> 00:29:52,050 그 중, 프라이 머리 키 (primary key)가 될 수있는 가장 좋은 후보입니다 505 00:29:52,050 --> 00:29:55,810 그의 역할은 고유 행을 식별하는 것입니다? 506 00:29:55,810 --> 00:29:57,530 아마도 ID. 507 00:29:57,530 --> 00:29:59,930 확실하게, 우리는 무엇하지만 사용할 수 있습니다? 508 00:29:59,930 --> 00:30:02,860 이론적으로는 고유이기 때문에 아마 당신은 이메일을 사용할 수 509 00:30:02,860 --> 00:30:05,380 사람들이 이메일 계정을 공유하지 않는. 510 00:30:05,380 --> 00:30:09,980 하지만 현실은 당신이 1234와 같은 숫자 ID를 사용하는 경우입니다 511 00:30:09,980 --> 00:30:14,170 이메일 주소가 이렇게 많은 바이트 또는 여러 바이트 될 수 반면 즉, 만 32 비트입니다. 512 00:30:14,170 --> 00:30:16,610 따라서 고유 식별자에 대한 효율성의 관점에서, 513 00:30:16,610 --> 00:30:19,270 그냥 정수를 사용하는 것이 좋습니다 경향이 514 00:30:19,270 --> 00:30:23,090 당신은 틀림없이 사용할 수있는 몇 가지 문자열 후보가 경우에도 마찬가지입니다. 515 00:30:23,090 --> 00:30:26,760 >> 집 같은 경우,이 프라이 머리 키 (primary key)이 아니어야합니다 516 00:30:26,760 --> 00:30:30,770 그리고 단 1 명이 메이에 살고 Currier과 같은 1 사람. 수 있기 때문에 517 00:30:30,770 --> 00:30:32,790 마찬가지로,이 독특한이 아니어야합니다. 518 00:30:32,790 --> 00:30:37,830 기본 및 고유 사이의 차이는, 현재 테이블의 경우에 해당합니다 519 00:30:37,830 --> 00:30:42,620 ID는 기본이 될 것입니다하지만 이메일은 우리가 언급 한 이유에 대한 일차적 없습니다 - 520 00:30:42,620 --> 00:30:44,740 성능 -하지만 여전히 고유해야합니다. 521 00:30:44,740 --> 00:30:47,200 그래서 당신은 여전히​​ 주장을하지 않고 고유성을 시행 할 수 있습니다 522 00:30:47,200 --> 00:30:49,520 그것은 슈퍼 중요한 주요 분야라고. 523 00:30:49,520 --> 00:30:52,610 그러나이 사람은 매우 도움이 될 것입니다 : 색인입니다. 524 00:30:52,610 --> 00:30:56,180 당신은 pset 7, 또는 일반적으로 최종 프로젝트를 사전에 알고있는 경우 525 00:30:56,180 --> 00:30:59,480 이 필드 하우스는 많은에서 검색 일이 될 거라는데 526 00:30:59,480 --> 00:31:01,910 선택 키워드 또는 다른 뭔가를 사용하여 527 00:31:01,910 --> 00:31:05,180 다음은 preemptively의 마법을 작업 할 데이터베이스를 알 수 528 00:31:05,180 --> 00:31:10,510 하고 필요한 메모리에있는 고급 데이터 구조를 생성되었는지 확인 529 00:31:10,510 --> 00:31:13,770 집에 따라 검색 결과를 신속하게합니다. 530 00:31:13,770 --> 00:31:17,860 아마 해시 테이블을 사용합니다, 아마 연결된 목록을 사용합니다. 531 00:31:17,860 --> 00:31:21,260 현실에서는이 나무를 사용하는 경향이 종종 구조는 B-트리라고 - 532 00:31:21,260 --> 00:31:24,090 아닌 이진 트리하지만 B-트리 - 매우 넓은 나무 533 00:31:24,090 --> 00:31:27,370 당신은 CS124, 데이터 구조 클래스와 같은 클래스에서 볼 수 있다는. 534 00:31:27,370 --> 00:31:31,800 그러나 짧은에, 당신은 스마트 데이터베이스 소프트웨어를 사용할 때 걱정하지 않아도됩니다. 535 00:31:31,800 --> 00:31:35,890 "나는 더 효율적으로 검색 할 수 있도록 색인이 필드를."당신은 단지 그것을 알 수 536 00:31:35,890 --> 00:31:40,250 >> 이 오프를 떠나 당신은 메이에 거주하는 데이터베이스에있는 모든 사람들을 검색하려고하면 537 00:31:40,250 --> 00:31:42,710 그것은 선형 검색로 바뀔 것입니다. 538 00:31:42,710 --> 00:31:45,360 그리고 당신은 어떤 집에서 모든 생활을 6000 undergrads 있고, 경우 539 00:31:45,360 --> 00:31:47,900 당신은 Matherites을 찾기 위해 전체 테이블을 검색 할거야 540 00:31:47,900 --> 00:31:52,190 당신은 인덱스라고한다면, 아마도 그것은 로그 검색에 가까운 무언가 될 것입니다 반면, 541 00:31:52,190 --> 00:31:54,510 그런 종류의 학생들을 찾으십시오. 542 00:31:54,510 --> 00:31:56,750 이 켜졌 단 무료 기능입니다 543 00:31:56,750 --> 00:31:59,530 그것은 공간의 일부 금액의 가격에 올 않는 경우에도. 544 00:31:59,530 --> 00:32:02,690 마지막으로, 자동 증가,이 AI 필드 545 00:32:02,690 --> 00:32:05,830 이는 그냥 정수 있다면 의미하며 당신은 스스로를 증가시키는 신경 원하지 않는 546 00:32:05,830 --> 00:32:07,570 새 사용자가 때마다, 그 확인 547 00:32:07,570 --> 00:32:11,910 그리고 삽입됩니다 각 사용자는 자동으로 새 ID를받을 것입니다. 548 00:32:11,910 --> 00:32:15,620 가자 저장을 클릭하고 지금의이 디자인 오류를 찾으실 수 있습니다. 549 00:32:15,620 --> 00:32:20,200 나는보기, 마이크, 내 집이 모두 NULL되고 있다는 사실을 알 수로 이동합니다. 550 00:32:20,200 --> 00:32:22,420 이 수동으로 편집 phpMyAdmin을 사용할 수 있습니다. 551 00:32:22,420 --> 00:32:25,110 나는 Enter 키를 누르 후 메이 여기와 유형에 가서 할 수 있습니다 552 00:32:25,110 --> 00:32:27,740 지금 테이블이 다른납니다. 553 00:32:27,740 --> 00:32:29,270 하지만뿐만 아니라 다른 일을 할 수 확인합니다. 554 00:32:29,270 --> 00:32:33,530 다윗의 ID는 1이고, phpMyAdmin 다시 단지 관리 도구입니다 때문에, 555 00:32:33,530 --> 00:32:35,970 이 사용자가 어느에 갈 것이 아닙니다. 556 00:32:35,970 --> 00:32:38,810 내가 대신 꼭대기의 SQL 탭을 클릭한다면 - 557 00:32:38,810 --> 00:32:41,450 다시, pset 7이 쿼리의 더 많은을 소개합니다 - 558 00:32:41,450 --> 00:32:45,260 내가 수동으로 SQL 구조적 쿼리 언어 명령을 실행할 수 559 00:32:45,260 --> 00:32:56,410 UPDATE 사용자는 집 = 'Pfoho'를 WHERE ID = 1로 설정합니다. 560 00:32:56,410 --> 00:33:00,830 이 SQL 쿼리는 잘 정도로, 왼쪽에서 오른쪽으로 꽤 읽을 수 있습니다. 561 00:33:00,830 --> 00:33:04,350 사용자 테이블을 업데이트 Pfoho에 집라는 필드를 설정합니다 562 00:33:04,350 --> 00:33:06,830 사용자의 ID는 1입니다. 563 00:33:06,830 --> 00:33:11,480 아니면 내가 더 할 수있는 이메일 = 'malan@harvard.edu'. 564 00:33:11,480 --> 00:33:14,860 너무 오랫동안 고유 저를 식별하는 등, 그뿐만 아니라 작동합니다. 565 00:33:14,860 --> 00:33:18,810 그러나 ID는 높은 성능 경향이 있으니, 그렇게 해주세요. 566 00:33:18,810 --> 00:33:22,950 어서 클릭 봅시다. 좋아요, lecture.users가 존재하지 않습니다. 내 오류가 무엇입니까? 567 00:33:22,950 --> 00:33:26,220 실제로 여기라는 테이블은 무엇입니까? 568 00:33:26,220 --> 00:33:28,770 그렇게 우리가 왼쪽 상단 여기에 무슨 짓을했는지 그냥 있기 때문에 학생들라고. 569 00:33:28,770 --> 00:33:31,860 그것은 학생들하지 않은 사용자 이름이야. 이제 이동을 클릭합니다. 570 00:33:31,860 --> 00:33:34,330 1 개 행이 영향을. 검색어 0.01 초 걸렸습니다. 571 00:33:34,330 --> 00:33:38,010 나는 Pfoho에 지금, Malan 삶을 찾아보기를 클릭합니다. 572 00:33:38,010 --> 00:33:42,070 그래서 SQL의 또 다른 맛이지만, pset는 약간 더 과정을 안내합니다. 573 00:33:42,070 --> 00:33:44,710 >> 이미 여기 한 바보 같은 결정이 있어요. 574 00:33:44,710 --> 00:33:47,820 이 데이터베이스 디자인이 비효율적입니다 논쟁하는 겁니다 575 00:33:47,820 --> 00:33:51,650 때문에 나는 학생 테이블에 추가 더 많은 사람들, 576 00:33:51,650 --> 00:33:54,730 내 말은, 난 추가 할 TFS의 자세한 내용을 추가 할 우리의 더 577 00:33:54,730 --> 00:33:58,320 우리는이 표에 중복을 보려면 시작 건가요? 578 00:34:00,840 --> 00:34:06,020 >> 그래. [학생]는 학생들 걸보고, 우리는 동일한을 사용하는 [안 들리게] 579 00:34:06,020 --> 00:34:07,360 같은 - 그래, 맞아요. 580 00:34:07,360 --> 00:34:10,400 4백명이 메이에 거주한다면, 있지만요 581 00:34:10,400 --> 00:34:15,000 결국이 표는 " '메이', '메이 말을 400 행을 가지고 것입니다 582 00:34:15,000 --> 00:34:16,590 '메이', '메이', '메이. " 583 00:34:16,590 --> 00:34:19,820 우리는이 바이트를 모두 낭비 야, 테이크 아웃 몇이있다. 584 00:34:19,820 --> 00:34:23,080 사람이 많은 돈을 지불 곳 경우 1, 미친 코너 케이스가 585 00:34:23,080 --> 00:34:25,949 그리고 이름을 변경 메이, 우리는 지금 우리의 전체 데이터베이스 테이블을 변경해야합니다. 586 00:34:25,949 --> 00:34:29,730 Pfoho 한 번 15 년 전 북한 하우스 불렀습니다하지만 그건, 자주 일어나지 않고, 587 00:34:29,730 --> 00:34:32,310 그래서 발생합니다. 그러나 그 모든 강력한 없습니다. 588 00:34:32,310 --> 00:34:36,000 대량의 데이터를 업데이트 할 필요의 같은 코너 케이스보다 뛰어난 589 00:34:36,000 --> 00:34:41,150 데이터베이스에 대해 왜 다시 다시 메이을 저장하고 다시 또 다시? 아르 수 있습니다 590 00:34:41,150 --> 00:34:43,020 문자, 6 문자의 많은 기록이다. 591 00:34:43,020 --> 00:34:45,500 할 수 없습니다 우리는 특히 Pforzheimer를 들어, 그것보다 더합니까? 592 00:34:45,500 --> 00:34:48,320 확실히 우리는 많은 자보다 더 할 수 있습니다. 593 00:34:48,320 --> 00:34:51,790 왜 그냥 각 집이있는 고유 식별자를 연결하지 594 00:34:51,790 --> 00:34:55,020 각 사용자에 대해 해당 가게 요? 그럼 이렇게 해보자. 595 00:34:55,020 --> 00:35:00,610 오히려 단지 학생들의 표를 사용하여보다, 내가 왼쪽 상단 여기까지 제 강연 데이터베이스까지 가자. 596 00:35:00,610 --> 00:35:02,600 여기 공지는 테이블을 만듭니다 말합니다. 597 00:35:02,600 --> 00:35:04,550 저 집이라는 새 테이블을 만들 수 있습니다. 598 00:35:04,550 --> 00:35:08,880 열 수는 2가 될 것입니다. 입력합니다. 599 00:35:08,880 --> 00:35:11,200 지금은이 분야가 있습니다. 600 00:35:11,200 --> 00:35:14,600 ,이 이름을 부르 겠소 있으며, 길이는 255 varchar 될거야 601 00:35:14,600 --> 00:35:18,770 >> 하지만 꽤 임의입니다. 내가이 여기 규칙에 의한하자. 602 00:35:18,770 --> 00:35:22,840 그래서 여기 ID를 넣어. 의 모든 집에 고유 식별자를 줘 보자. 603 00:35:22,840 --> 00:35:25,360 의 모든 집 이름을 드릴께요. 604 00:35:25,360 --> 00:35:30,980 식별자는 양수를 사용하는 단지 대회에 서명 될 것이라고가 지정할 수 있습니다. 605 00:35:30,980 --> 00:35:35,020 가 진행 지금이 자동 증가 필드를 줘 보자. 606 00:35:35,020 --> 00:35:38,160 그리고 우리가 뭔가를해야합니까? 607 00:35:38,160 --> 00:35:41,010 가 진행하고 저장을 클릭 봅시다. 608 00:35:41,010 --> 00:35:42,480 지금은 두 번째 테이블을 갖추고 있습니다. 609 00:35:42,480 --> 00:35:45,860 옆으로는 약간 암호화 된 SQL 명령입니다 공지 사항 610 00:35:45,860 --> 00:35:50,280 당신은 phpMyAdmin과 같은 관리 도구를 사용하지 않을 경우 수동으로 입력했을 것을. 611 00:35:50,280 --> 00:35:51,990 우리가 사용하는 또 다른 이유는 그럼. 612 00:35:51,990 --> 00:35:55,480 당신이 근처에 클릭 수 있으므로 pedagogically의 멋지고 유용한 일종 이죠 613 00:35:55,480 --> 00:36:01,050 일이 그냥 복사 및 phpMyAdmin 짓을 붙여 넣기하여 어떻게 작동하는지 알아 봅시다. 614 00:36:01,050 --> 00:36:04,150 그러나 생성 테이블 명령은 실행 지이며, 여기 내 테이블입니다. 615 00:36:04,150 --> 00:36:11,370 내가 지금 가서 삽입 탭을 클릭하여 원시 SQL보다는 지나치게 단순화를 사용하여 보자. 616 00:36:11,370 --> 00:36:15,040 나, 집에 삽입하자 617 00:36:15,040 --> 00:36:22,230 그리고이 집의 이름은 '메이'의 값을 갖게 돼 말할거야. 618 00:36:22,230 --> 00:36:24,790 그게 전부 야. 이 문법은 조금 더 이상한 것입니다. 619 00:36:24,790 --> 00:36:26,660 이것은 우리가 삽입 할 필드의 이름입니다. 620 00:36:26,660 --> 00:36:30,390 이러한 우리가 그 분야에 삽입 할 값입니다. 내가 이동을 클릭 봅시다. 621 00:36:30,390 --> 00:36:34,410 삽입 한 행이 0.02 초 걸렸습니다. 내가 지금 찾아보기를 눌러 보자. 622 00:36:34,410 --> 00:36:42,020 >> 제가 찾아보기를 클릭하면 공지 사항, 누구의 ID 자동화하여 숫자 1 매더이있어. 623 00:36:42,020 --> 00:36:45,000 내가 또 하나를 보자. 제가 SQL 탭으로 가자. 624 00:36:45,000 --> 00:36:52,950 집에 삽입. 집의 이름은 등등 Pfoho의 값을 가지고 가서 있습니다. 625 00:36:52,950 --> 00:36:56,350 이동합니다. 그리고 또 한번, 또 한번 다시이 일을 할 수 있습니다. 626 00:36:56,350 --> 00:36:59,470 당신은 phpMyAdmin을 사용하여 지루해지면 또는, 당신은 단지 삽입 탭을 사용할 수 있습니다 627 00:36:59,470 --> 00:37:01,000 와 원시 SQL을 입력 할 필요가 없습니다. 628 00:37:01,000 --> 00:37:04,690 넌 그냥 입력하여 더 빨리를 두들겨도 돼 예를 들어, Currier은 입력 629 00:37:04,690 --> 00:37:07,610 우리가 찾아보기를 누르면 지금 3의 ID와 Currier 있어요. 630 00:37:07,610 --> 00:37:09,920 그래서 우리가 자동으로 증가하여 무슨 뜻인지입니다. 631 00:37:09,920 --> 00:37:12,280 하지만 지금 우리는 학생들 뭔가를 고쳐해야합니다. 632 00:37:12,280 --> 00:37:16,240 학생들이 집 필드의 데이터 유형은 이제 어떻게해야합니까? 633 00:37:16,240 --> 00:37:19,450 그것은 바로 정수이어야합니다? 634 00:37:19,450 --> 00:37:23,950 여기에 목표 아웃 반영하는 것입니다, 그렇지 않으면 테이블이 정상화로 알려진 635 00:37:23,950 --> 00:37:27,940 그래야 우리가 내 테이블 중 하나에 이중화 정보를 저장하지 않습니다. 636 00:37:27,940 --> 00:37:31,130 그리고 다시, 우리는 여기에 있던 경로는, 메이, 메이 말 것입니다 637 00:37:31,130 --> 00:37:34,220 메이 매우 중복 메이, Pfoho, Pfoho, Pfoho, Pfoho, 638 00:37:34,220 --> 00:37:36,240 문자의 wastefulness의 관점 인치 639 00:37:36,240 --> 00:37:40,820 그럼 내가 진행을 클릭하여이 구조를 변경하게, 640 00:37:40,820 --> 00:37:44,620 이 날 가서 집 필드의 선택을 해제 해, 변경을 클릭합니다 641 00:37:44,620 --> 00:37:46,990 지금은 정수로를 변경거야. 642 00:37:46,990 --> 00:37:49,490 255 관련 더 이상 사용할 수 없습니다. 643 00:37:49,490 --> 00:37:54,010 내가 진행하고 여전히 NULL이라면 그게 좋아한다고 가정 해 봅시다. 저장합니다. 644 00:37:54,010 --> 00:37:55,870 지금 테이블 학생들은 성공적으로 변경되었습니다 645 00:37:55,870 --> 00:37:59,090 다시주의 집은 정수입니다. 646 00:37:59,090 --> 00:38:02,220 이 ints 할 때 옆으로, 괄호 안의 숫자를 무시합니다. 647 00:38:02,220 --> 00:38:03,770 >> 이 레거시 이유입니다. 648 00:38:03,770 --> 00:38:06,920 위로 하루에 당신이 GUI를하지 않은 경우, 당신은 대신 명령 줄 환경을 가지고 649 00:38:06,920 --> 00:38:11,580 당신이 표시해야 10과 11을 각각 지정 얼마나 많은 자 650 00:38:11,580 --> 00:38:13,950 터미널 창에서 실제로 필드를 표시합니다. 651 00:38:13,950 --> 00:38:19,150 그것은 실제 필드의 비트 길이와는 아무 상관이없는, 그래서 우리가 지금 그런 무시됩니다. 652 00:38:19,150 --> 00:38:20,990 지금이 테이블에 가야 해요. 653 00:38:20,990 --> 00:38:24,610 그리고 데이빗 메이에 거주하는 경우, 집은, 0이 아니어야합니다 654 00:38:24,610 --> 00:38:27,350 이는 NULL에 가장 가까운 기본 정수 값입니다. 655 00:38:27,350 --> 00:38:29,810 그는 집 하나에 살고 있습니다. 656 00:38:29,810 --> 00:38:36,870 하자 임의로 그런 말을 Pfoho의 마이크 생활 때문에 집 번호 2. 657 00:38:36,870 --> 00:38:40,160 지금 내 표는 조금 더 이상한 보입니다. 658 00:38:40,160 --> 00:38:41,960 하지만 효율성을 고려하십시오. 659 00:38:41,960 --> 00:38:44,860 지금, 집 파악 만 32 비트를 사용 660 00:38:44,860 --> 00:38:49,530 이는 내 집에 메이와 Pfoho의 1 표준 정의가 의미 661 00:38:49,530 --> 00:38:52,090 그리고 그 집 테이블에 있습니다. 662 00:38:52,090 --> 00:38:55,880 지금이 테이블에 다시 가입하고 싶다면 이런 식으로 생각합니다. 663 00:38:55,880 --> 00:39:01,980 여기 내 학생 테이블을 가지고 있고, 오른쪽에 숫자 1과 2가 있습니다. 664 00:39:01,980 --> 00:39:04,180 1 메이이며, 2 Pfoho입니다. 665 00:39:04,180 --> 00:39:08,580 우리는 집이라고이 다른 테이블에있는 동일한 번호를 가지고 666 00:39:08,580 --> 00:39:11,020 그 3 주택에 대한 1, 2, 3. 667 00:39:11,020 --> 00:39:14,990 우리가 지금하고 싶은 것은 코드의 능력, PHP와 SQL을 가지고 있습니다 668 00:39:14,990 --> 00:39:18,800 의 정렬하려면이 테이블을 재가입 곳이이 학생들 이들의 주택 인 경우는, 669 00:39:18,800 --> 00:39:22,050 우리는 어떻게 든 1 그게 그렇게 한 라인 업을 결합 할 670 00:39:22,050 --> 00:39:25,670 이 2까지 라인, 그래서 우리는 어디에서 데이비드을 알아낼 수 671 00:39:25,670 --> 00:39:28,000 , 어디 마이크, 어디 다른 사람들이 살고있다. 672 00:39:28,000 --> 00:39:31,850 이 작업을 수행하려면 우리는 다음과 같은 SQL 쿼리를 실행할 수 있습니다. 673 00:39:31,850 --> 00:39:40,470 학생들이 ON 주택을 가입로부터 * 선택 - 674 00:39:40,470 --> 00:39:43,000 그리고 지금 우리는에 가입 할 것을 필드를 원하는거야? 675 00:39:43,000 --> 00:39:49,520 students.house = houses.id 했어요. 676 00:39:49,520 --> 00:39:54,150 >> 약간의 암호화하지만,이 부분의 의미는 말 그대로 새로운 임시 테​​이블을 만들 677 00:39:54,150 --> 00:39:56,690 그 학생 집에 참여의 결과입니다. 678 00:39:56,690 --> 00:40:00,340 그리고 어떻게 여기가 내 손가락 끝을 결합 하시겠습니까? 679 00:40:00,340 --> 00:40:05,280 ID 필드 학생들의 집과 동일 주택 필드 '를 설정합니다. 680 00:40:05,280 --> 00:40:10,220 그리고 지금 이동을 클릭하면, 난에 희망 정확히 다시. 681 00:40:10,220 --> 00:40:15,890 데이빗 메이에, 마이크 Pfoho에, 나는 또한 고유 식별자를 참조하십시오. 682 00:40:15,890 --> 00:40:18,640 그러나 중요한 점은 난 완전히 테이블이 지금입니다. 683 00:40:18,640 --> 00:40:23,020 그리고 pset 7 여기에 테이크 아웃이나 정말 마지막 프로젝트에 대한 : 684 00:40:23,020 --> 00:40:25,830 당신은, 이중화 정보의 조각을 저장하는되는 경우 685 00:40:25,830 --> 00:40:28,850 이 아니라 집이든, 어쩌면 도시, 주 및 ZIP입니다 686 00:40:28,850 --> 00:40:32,050 ZIP은 보통 항상은 아니지만 고유 한 식별자로 사용할 수있는, 687 00:40:32,050 --> 00:40:35,810 phpMyAdmin 같은 뭔가 정신적하고 운동을 통해가는거야 688 00:40:35,810 --> 00:40:40,660 그 공통 자료를 고려해 인해 귀하의 웹 사이트가 더 잘하더라도 특히 689 00:40:40,660 --> 00:40:45,440 더 인기있는,이, 당신이 모든 빠르게 있는지 확인하는 방법입니다 690 00:40:45,440 --> 00:40:51,930 가능한 한 독자성에 대한 많은 힌트로 데이터베이스를 제공하여. 691 00:40:51,930 --> 00:40:53,860 그건 많이했습니다. 692 00:40:53,860 --> 00:40:59,010 질문? 괜찮아요. 의이 5 분 휴식을 취한 모여서 보자. 693 00:41:01,600 --> 00:41:03,540 괜찮아요. 694 00:41:03,540 --> 00:41:08,680 다음은, 내가 CS161을 찍었을 때 몇 년 전에 사용 된 예입니다 695 00:41:08,680 --> 00:41:10,960 이는 대학에서 운영 체제 클래스입니다 696 00:41:10,960 --> 00:41:15,160 놀라운 존재로 알려져 있지만, 작품의 미친 양하는, 697 00:41:15,160 --> 00:41:19,810 그리고 운영 체제에서 발생하는 낮은 수준의 문제의 일부에 정말 초점을 맞추고 698 00:41:19,810 --> 00:41:22,700 또한 심지어 데이터베이스의 세계 요. 699 00:41:22,700 --> 00:41:27,040 >> 다음과 같이 그 해 제 교수, 마고 탄산수로 말을 들었다 이야기했다. 700 00:41:27,040 --> 00:41:30,990 당신은 당신과 당신의 룸메이트에 대한 약간의 기숙사 냉장고가 있다고 가정합시다 701 00:41:30,990 --> 00:41:34,030 그리고 둘 다 정말 우유를 좋아해요. 702 00:41:34,030 --> 00:41:36,360 따라서 1 등급 날부터 집에 돌아 오면, 니 룸메이트가 아직 도착하지 않습니다 703 00:41:36,360 --> 00:41:39,650 당신은 냉장고를 열고는 걸 "이런 이런, 우리가 우유를 벗어난다." 704 00:41:39,650 --> 00:41:42,070 그래서 냉장고를 닫습니다, 당신은 CVS에 길 건너편에 걸어 705 00:41:42,070 --> 00:41:45,830 그리고 CVS에서 우유를 구입하기 위해 점점 더 긴 선으로와. 706 00:41:45,830 --> 00:41:48,470 한편, 니 룸메이트는 자신의 클래스에서 집에 와서는 707 00:41:48,470 --> 00:41:51,690 방 안에 들어 와서 정말 우유하고자 냉장고가 열립니다 708 00:41:51,690 --> 00:41:54,130 냉장고를 열고, "이런, 아니 우유." 709 00:41:54,130 --> 00:41:57,890 그래서 그는 또는 그녀는 냉장고를 닫고 문을 걸어, 그리고 ABP에갑니다 710 00:41:57,890 --> 00:42:00,910 당신이 서로 우연히 않을거야 CVS 이상 또는 어딘가 다른 711 00:42:00,910 --> 00:42:02,790 우유를 이동합니다. 712 00:42:02,790 --> 00:42:04,820 물론 몇 분 후, 당신 둘은 집으로 돌려받을 713 00:42:04,820 --> 00:42:07,740 그리고 지금 당신은 당신이 실제로 원하는 두 배나 많은 우유가 있습니다. 714 00:42:07,740 --> 00:42:10,670 당신은 우유를 좋아하기 때문에 우유되고, 지금은 나쁜 갈거야 715 00:42:10,670 --> 00:42:14,200 하지만 우유를 좋아하지 않아, 그래서 지금 너무 많은 우유를 가지고 있으므로 신 겁니다. 716 00:42:14,200 --> 00:42:16,830 이 끔찍하게 상황입니다. 717 00:42:16,830 --> 00:42:22,920 당신은 첫 번째 룸메이트 홈한다면 어떻게이 곤란한를 해결 할 수 있었을까요? 예. 718 00:42:22,920 --> 00:42:25,970 [학생] 당신은 메모를 남겨해야합니다. [웃음] 719 00:42:25,970 --> 00:42:28,090 좋아. 당신은 메모를 남기 있어야합니다. 720 00:42:28,090 --> 00:42:32,320 당신은 "우유에 대한 사라지다"라는 말처럼 후 그 메모 또는을 했어야 721 00:42:32,320 --> 00:42:36,830 다음 룸메이트는 개념적으로 실제로하는 일을 배제되었을 것이다. 722 00:42:36,830 --> 00:42:38,010 또는 1 단계 더 갈 수 있습니다. 723 00:42:38,010 --> 00:42:41,060 당신은 말 그대로 자​​물쇠의 일종으로 냉장고를 잠글 수 있습니다 724 00:42:41,060 --> 00:42:44,870 지금 당신의 룸메이트는 그대로 냉장고에서 배제됩니다. 725 00:42:44,870 --> 00:42:48,520 우리는 프로그래밍으로 일반화 경우, 726 00:42:48,520 --> 00:42:51,610 당신은 거의 변수의 어떤 또는 구조체로 냉장고 생각할 수 727 00:42:51,610 --> 00:42:53,500 자세한 내용은 컨테이너의 일종. 728 00:42:53,500 --> 00:42:58,290 이 문제는 근본적으로 여기서 당신을 모두 검사 할 수 있다는 것입니다 729 00:42:58,290 --> 00:43:02,370 또는,이 데이터 구조의 상태를 읽어 730 00:43:02,370 --> 00:43:08,050 하지만 다른 시간에서 조회하고 아직 둘 다 결정을 내린 731 00:43:08,050 --> 00:43:11,920 시간에 그 다른 순간의 세계의 상태에 따라. 732 00:43:11,920 --> 00:43:15,570 당신이 냉장고 문을 잠 한, 당신은 적어도 당신의 룸메이트을 피할 수 있었을 것 733 00:43:15,570 --> 00:43:19,070 세계의 상태를 검사 할 수 있었다는 것을에서, 734 00:43:19,070 --> 00:43:22,530 그래서 그는 또는 그녀가 같은 결정을 한 수 없습니다. 735 00:43:22,530 --> 00:43:25,780 상황이 정리되고 나면 데이터베이스 그래서, 지속적으로이 문제가 있습니다. 736 00:43:25,780 --> 00:43:31,050 >> 우리가 시나리오를 만들 수 있는지 봅시다. 737 00:43:31,050 --> 00:43:34,310 당신이 나쁜 사람의 일종 있다고 가정하고 미국 은행으로 이동 738 00:43:34,310 --> 00:43:37,950 옆으로 몇 현금 지급기 측이 광장에있는 다른 장소 또는 하나 739 00:43:37,950 --> 00:43:41,200 그리고 어떻게 든 당신은 ATM 카드를 복제하는 방법을 알아 냈어 - 모든 어려운 없습니다. 740 00:43:41,200 --> 00:43:42,730 이건 그냥 자기 스트립입니다. 741 00:43:42,730 --> 00:43:45,180 그리고 당신은 무슨 일을 시도 할 것은이 게임을 연주하는 742 00:43:45,180 --> 00:43:49,060 상기 당신은 다른 기계로, 1 기계로 다른 카드를 한 카드를 넣어 743 00:43:49,060 --> 00:43:51,980 당신은 본질적으로, 동시에 돈을 인출하려고 할 744 00:43:51,980 --> 00:43:54,930 상상하기 때문에 그 이야기는 다음과 같이갑니다. 745 00:43:54,930 --> 00:43:57,350 왼쪽에있는 기계, 카드 및 PIN 필요 746 00:43:57,350 --> 00:44:00,240 그리고 당신은 "나에게 100 달러를주세요."라고 747 00:44:00,240 --> 00:44:04,790 ATM 먼저 데이터베이스 또는 동등한에서 선택을하도록 프로그램되어있다 - 748 00:44:04,790 --> 00:44:10,780 가 사용하고있는 건 데이터베이스 - 볼이 사용자는 자신의 계정에 최소 100 달러를 가지고 있습니까? 749 00:44:10,780 --> 00:44:16,180 그렇다면 100 달러를 뱉어하고 잔고에서 $ 100 뺍니다. 750 00:44:16,180 --> 00:44:20,470 물론 여기에 여러 시스템이있을 경우 또는 검사의 여러 가지 방법 751 00:44:20,470 --> 00:44:23,560 그 세계의 상태, 은행 금고, 당신은 돈이 얼마나 볼 수 752 00:44:23,560 --> 00:44:26,780 왼쪽의 기회 기계를하여 해당 단지 가정하고 오른쪽 753 00:44:26,780 --> 00:44:30,140 모두 시간에 대략 같은 순간에 그 질문을 물어보십시오. 754 00:44:30,140 --> 00:44:34,160 >> 그리고 이건 정말 문제가 발생할 수 있습니다. ATM은 요즘 컴퓨터입니다. 755 00:44:34,160 --> 00:44:37,670 왼쪽에있는 기계가 말했다면, "그래, 당신은 적어도 $ 100이" 756 00:44:37,670 --> 00:44:42,150 한편 오른쪽에있는 기계 "예, 당신이 적어도 $ 100이"라고 757 00:44:42,150 --> 00:44:47,420 그리고 둘 다 자신의 프로그램을 마치려면 계속해서 실제로 100 달러를 뱉어 758 00:44:47,420 --> 00:44:50,820 와 "이전에 200 달러를했습니다."라고 759 00:44:50,820 --> 00:44:54,890 "내가 지금 계정에 남아 백달러 될 수있는 변수를 업데이트하자." 760 00:44:54,890 --> 00:44:58,780 둘 다 귀하의 계정 잔액을 확인하고 발견 한 경우 그러나 200 달러라고 761 00:44:58,780 --> 00:45:02,000 100, - 그리고 둘 다 다음 수학 및 말 200 일 762 00:45:02,000 --> 00:45:06,990 기계는 잠재적으로, 각 기계의 두 백달러 지폐를 뱉어 한 763 00:45:06,990 --> 00:45:11,360 하지만 단지 만원으로 귀하의 합 계정 잔액을 업데이트했습니다. 764 00:45:11,360 --> 00:45:15,130 즉, 당신은 200 달러를 냈어요,하지만 그들은 세계의 상태를 검사하기 때문에 765 00:45:15,130 --> 00:45:18,840 동시에 한 다음,이 값에 따라 결정을 내렸다 766 00:45:18,840 --> 00:45:21,930 그들은 궁극적으로 정확하게 계산을 수행하지 않을 수도 있습니다. 767 00:45:21,930 --> 00:45:25,520 따라서 은행 상황에 너무 당신이 정말로 잠금 어떤 종류의를 갖고 싶어요 768 00:45:25,520 --> 00:45:28,450 그럼 당신은 변수의 상태를 확인 한 즉시 그 769 00:45:28,450 --> 00:45:31,220 즉, 귀하의 계정 잔액처럼, 정말 중요한거야 770 00:45:31,220 --> 00:45:36,070 귀하 일을하고 완료 될 때까지 다른 사람이 그에 따라 결정을 내릴 수있게하지 말아, 771 00:45:36,070 --> 00:45:38,920 이 경우 당신은 왼쪽에있는 ATM 곳입니다. 772 00:45:38,920 --> 00:45:41,160 다른 사람을 잠급니다. 773 00:45:41,160 --> 00:45:44,650 당신은 실제로 서로 다른 몇 가지 방법이 효과를 얻을 수 있습니다. 774 00:45:44,650 --> 00:45:48,660 >> MySQL에서 가장 간단한 방법은 우리가 준 SQL의 줄입니다 775 00:45:48,660 --> 00:45:52,030 정확히과 같은 문제 세트 사양 인치 776 00:45:52,030 --> 00:45:57,420 제목이 무엇이든 - - ID, 상징, 그리고 공유, 주식의 수, 테이블에 삽입 777 00:45:57,420 --> 00:45:59,660 다음 값 예를 들어. 778 00:45:59,660 --> 00:46:03,370 당신은 아직 사양을 읽을하지 않은 경우, 여러분이 어떻게해야할까요 관련된 예입니다 779 00:46:03,370 --> 00:46:07,340 대통령 Skroob이 페니 주식의 10 주식을 구입, 780 00:46:07,340 --> 00:46:10,340 그의 사용자 ID는 숫자 7로 어떻게됩니까? 781 00:46:10,340 --> 00:46:14,070 이 표 다음 ID, 상징, 그리고 주식의 수에 삽입 말한다 782 00:46:14,070 --> 00:46:18,200 7 'DVN.V', 그리고 10. 783 00:46:18,200 --> 00:46:21,510 하지만 -하지만,하지만,하지만, - 두 번째 줄은 중요한 하나입니다. 784 00:46:21,510 --> 00:46:26,310 중복 KEY UPDATE 공유 ON = 주 + VALUES (주). 785 00:46:26,310 --> 00:46:28,350 너무 기분이 한눈에 암호 보이는. 786 00:46:28,350 --> 00:46:31,990 그러나 그런 사실이 SQL 쿼리, 그건 2 라인에 래핑하더라도하면, 787 00:46:31,990 --> 00:46:35,920 한 긴 쿼리이며, 그것이 원자는 뜻 788 00:46:35,920 --> 00:46:41,000 이 쿼리가 하나 전혀 모두 함께 여부 실행됩니다 이었어요. 789 00:46:41,000 --> 00:46:45,100 와 MySQL의 정의에 의해, 그 사람들이이 쿼리를 구현하는 방법입니다. 790 00:46:45,100 --> 00:46:51,010 다에 한 번 또는 모든을 실행할 보장 설명서에서 정의하는 것입니다. 791 00:46:51,010 --> 00:46:54,020 다음과 같이이를위한 동기 부여입니다. 792 00:46:54,020 --> 00:46:58,540 이 경우 당신은 주식의 10 주식을 구입하려는 경우 793 00:46:58,540 --> 00:47:02,260 이 우유 같은 이야기 네요,이 ATM과 같은 이야기 이죠. 794 00:47:02,260 --> 00:47:04,970 >> 당신이 한 경우의 실수는이 구문을 사용하지 795 00:47:04,970 --> 00:47:09,610 대신 데이터베이스에서 선택하면이 페니 주식 얼마나 많은 주식을 볼 수 796 00:47:09,610 --> 00:47:13,750 대통령 Skroob이 있습니다, 그는 10 주식을 가지고 가정 않습니다 797 00:47:13,750 --> 00:47:19,330 그러다 순식간에 나중에는 UPDATE 문을 수행, 798 00:47:19,330 --> 00:47:24,810 이는 진행 10 더 많은 주식을 추가라는 SQL에서 다른 문입니다 799 00:47:24,810 --> 00:47:28,700 그의 현재 10 있도록 이상적으로 합계가 20입니다 800 00:47:28,700 --> 00:47:33,490 문제는 현재의 데이터베이스 시스템과 때문에 오늘날의 컴퓨터에 801 00:47:33,490 --> 00:47:35,990 여러 개의 프로세서, 멀티 코어가 - 802 00:47:35,990 --> 00:47:38,920 즉, 컴퓨터는 그대로 한 번에 여러 가지 일을 할 수 있습니다 - 803 00:47:38,920 --> 00:47:44,270 보장 할 수 없습니다 귀하의 SELECT이 경우에 UPDATE 804 00:47:44,270 --> 00:47:46,150 백업 다시 일이 일어날 수 있습니다. 805 00:47:46,150 --> 00:47:49,140 나쁜 시나리오는 것 그래서 당신은 당신의 SELECT 해줄 806 00:47:49,140 --> 00:47:51,670 얼마나 많은이 페니 주식의 주식 Skroob 가지고 않습니다 확인하려면, 807 00:47:51,670 --> 00:47:54,710 그리고 그냥 우연히 다른 데이터베이스 쿼리를 실행합니다 - 808 00:47:54,710 --> 00:47:57,740 어쩌면 다른 브라우저 창에서의 Skroob 10 주식을 구입하려고 809 00:47:57,740 --> 00:48:00,700 다른 창에서 모두 많은 ATM 등 - 810 00:48:00,700 --> 00:48:05,410 다른 쿼리가 SELECT와 UPDATE 사이에 도착했다고 가정합니다. 811 00:48:05,410 --> 00:48:10,210 이 Skroob 지금 주식 일부 번호를 잃게되는 경우가 수 812 00:48:10,210 --> 00:48:14,340 다른 프로세스가 자신의 세계의 상태를 검사하기 때문에, 813 00:48:14,340 --> 00:48:17,800 또는 그는이 있어야보다 더 주를 얻을 수 있습니다. 814 00:48:17,800 --> 00:48:23,250 우리는 이러한 특정 스토리 라인이 될 정확히의 세부 사항에 가지 않을거야 815 00:48:23,250 --> 00:48:28,380 당신이 변수 값을 확인하고 다음 결정을 내릴해야하는 경우 그러나 요점은 816 00:48:28,380 --> 00:48:32,500 다른 사람이 그 두 문장 사이에 뭔가를하고있는 중이의 위험이 있다면, 817 00:48:32,500 --> 00:48:36,220 으로는 멀티 코어 시스템에서 멀티 프로세서 시스템에서 발생할 수 있습니다 818 00:48:36,220 --> 00:48:41,220 한 번에 여러 일을 할 수있는 능력을 컴퓨터가 나쁜 일이 발생할 수 있습니다 819 00:48:41,220 --> 00:48:44,530 같은 은행 계좌는 배 많은 우유를 구입, 잘못 청구 된 820 00:48:44,530 --> 00:48:46,730 주 또는이 경우 잘못된 번호입니다. 821 00:48:46,730 --> 00:48:48,370 그러나이 생각 할 수있는 쉬운 방법이 있어요. 822 00:48:48,370 --> 00:48:53,290 >> 제대로 테이블을 구성하는 경우는, SQL도 지원 밝혀 823 00:48:53,290 --> 00:48:56,920 나는 논쟁하는 겁니다 transactions라는 것이 이해하기 실제로 더욱 쉽게 824 00:48:56,920 --> 00:49:00,650 이보다하지만 1 라이너 아니라, 때문에 실제로는 더 관여 비트입니다. 825 00:49:00,650 --> 00:49:04,960 START 거래라는 SQL의 문은 그대로 있습니다. 826 00:49:04,960 --> 00:49:08,300 거기 SELECT UPDATE, INSERT, DELETE 및 가입이 있고 다른 사람의 무리대로하면, 827 00:49:08,300 --> 00:49:10,970 START 트랜잭션과 같은 키워드가 없습니다. 828 00:49:10,970 --> 00:49:13,560 그리고 당신은 다음 pset 7 맥락에서 무슨 짓을 - 829 00:49:13,560 --> 00:49:17,270 당신은 pset 7이 작업을 수행 할 필요가 없습니다, 그것은 명시 적으로 필요하지로 면책있어, 830 00:49:17,270 --> 00:49:18,830 하지만 최종 프로젝트가 유용 할 수 있습니다 - 831 00:49:18,830 --> 00:49:22,820 당신은 START 거래 쿼리 한 다음 다른 쿼리를 호출하는 경우 832 00:49:22,820 --> 00:49:25,620 그리고 또 다른 쿼리 한 다음 다른, 다른, 다른, 833 00:49:25,620 --> 00:49:31,860 당신은 SQL 문이 COMMIT 연락 할 때까지 해당 쿼리는 실제로 실행되지 않습니다 834 00:49:31,860 --> 00:49:37,220 어떤 시점에서, 지금은 2 문 20 문이든, 그것들은 모두 한 번에 실행됩니다 835 00:49:37,220 --> 00:49:42,770 이는 다른 사람이 실수로 너무 많은 우유 나 직불 너무 많은 돈을 살 수 없다는 836 00:49:42,770 --> 00:49:46,340 귀하의 쿼리의 모든 실행되므로 또는 너무 많은 주식을 살 837 00:49:46,340 --> 00:49:48,410 다시 백업 백업 백업합니다. 838 00:49:48,410 --> 00:49:51,580 그리고 여러분이 이런 일을하고 있어요 특히, 슈퍼 것이 중요합니다. 839 00:49:51,580 --> 00:49:54,900 이 해보자 은행 계좌를 업데이트라는 임의의 예입니다 840 00:49:54,900 --> 00:50:00,200 계좌 번호는 2입니다 1천달러 - 잔액에 대한 동등한 균형을 설정하여. 841 00:50:00,200 --> 00:50:04,260 그리고 두 번째 문은 지금의이 1,000달러 입금하게되어 있습니다 842 00:50:04,260 --> 00:50:07,310 에 다른 사람이 그의 계좌 번호를 1 은행 계좌입니다. 843 00:50:07,310 --> 00:50:10,400 >> 즉, 여러분이 있는지 확인하려는의 완벽한 예입니다 844 00:50:10,400 --> 00:50:13,590 이러한 조건에 모두가 전혀 발생하거나하지 않는 것이 845 00:50:13,590 --> 00:50:15,450 그렇지 않으면 고객은 망하려면 거니까 846 00:50:15,450 --> 00:50:17,670 그리고 당신은 돈을 가지고 다른 곳을 입금하지 않는 것 847 00:50:17,670 --> 00:50:20,470 당신이 돈을 입금 할 거지? 곳이나 은행 망의 피해를 입을 것 848 00:50:20,470 --> 00:50:23,140 하지만 실제로 사용자의 계정에서 빼지. 849 00:50:23,140 --> 00:50:25,810 그럼 당신은 둘 다 함께 실행하고 싶습니다. 850 00:50:25,810 --> 00:50:29,140 따라서 세계 거래로 들어갑니다. 851 00:50:29,140 --> 00:50:31,360 그럼, 네 마음의 뒤쪽에 유지하기 위해 뭔가 852 00:50:31,360 --> 00:50:34,710 단지 최종 프로젝트의 목적을 위해 많이하지, 853 00:50:34,710 --> 00:50:36,700 어디 선가 최종 프로젝트를하고 싶다면, 854 00:50:36,700 --> 00:50:39,040 당신은 주위 몇몇 회사를 시작하려는 경우 855 00:50:39,040 --> 00:50:41,270 당신은 학교에서 일부 학생 그룹의 문제를 해결하려는 경우 856 00:50:41,270 --> 00:50:45,210 실제로 수행중인 웹 사이트가, 이것들이 발생할 수 있습니다 미묘한 버그의 종류 아르 857 00:50:45,210 --> 00:50:49,480 당신은 매우 통해 생각하지 않을 경우 어떤 일이 일어날 수있는 경우 이명 858 00:50:49,480 --> 00:50:54,190 시간에 그대로 같은 시간에서 웹 사이트에 액세스하려고합니다, 859 00:50:54,190 --> 00:50:56,890 상기의 쿼리는 달리 결합한받을 수 있습니다. 860 00:50:58,840 --> 00:51:01,420 >> 일부 자바 스크립트, 그 맛보기 메시지에 대한 준비가 되셨습니까? 861 00:51:01,420 --> 00:51:04,320 이 학기를위한 우리의 마지막 언어입니다. 괜찮아요. 862 00:51:04,320 --> 00:51:09,940 다행히, 자바 스크립트, 2 언어, C와 PHP를 매우, 매우, 매우 유사 해 보입니다 863 00:51:09,940 --> 00:51:11,140 우리는 지금까지 했어. 864 00:51:11,140 --> 00:51:14,340 이 pset 7에 자바 스크립트는 아니 구요,하지만 매우 유용한 도구입니다 865 00:51:14,340 --> 00:51:18,840 이 웹 기반 최종 프로젝트를 수행하거나 단지 웹 프로그래밍 더 일반적으로 할 때. 866 00:51:18,840 --> 00:51:20,950 DOM라는 걸 너무 간단한 개요. 867 00:51:20,950 --> 00:51:23,600 여기가 그냥 인사 만, 세계라는 슈퍼 간단한 웹 페이지입니다 868 00:51:23,600 --> 00:51:25,970 제목과 본문에 모두. 869 00:51:25,970 --> 00:51:29,270 들여 쓰기는 얼마 동안 제안 된 바와 같이 870 00:51:29,270 --> 00:51:31,380 웹 페이지에 계층 구조가 실제로 있습니다. 871 00:51:31,380 --> 00:51:34,220 나는 나무로 HTML이 같은 스 니펫 (snippet)을 그리는 수 872 00:51:34,220 --> 00:51:37,470 , C의 데이터 구조 우리의 토론으로 돌아 생각은​​ 다음과 같습니다. 873 00:51:37,470 --> 00:51:40,710 나는 문서 노드라는 특별한 루트 노드가 874 00:51:40,710 --> 00:51:43,650 우리는 단지 순간에 자바 스크립트에서의 아날로그를 볼 수 있습니다. 875 00:51:43,650 --> 00:51:48,330 이 경우 첫 번째 자녀와 그 자녀가 만 HTML 태그입니다. 876 00:51:48,330 --> 00:51:49,880 DOCTYPE의 직접적인 매핑이 없습니다. 877 00:51:49,880 --> 00:51:53,170 그건 특별한 일이야, 그것은이 DOM에 관한 한 우리가 그것을 무시해야하므로 878 00:51:53,170 --> 00:51:55,810 이 문서 객체 모델 트리. 879 00:51:55,810 --> 00:51:59,530 공지 내가이 직사각형으로 임의로 묘사 한 HTML 태그, 880 00:51:59,530 --> 00:52:02,890 머리와 몸 : 2 자녀가있다. 881 00:52:02,890 --> 00:52:04,840 >> 사람들은 마찬가지로 사각형으로 그려져 있습니다. 882 00:52:04,840 --> 00:52:08,970 그것은 머리가 몸의 왼쪽에있는 것을 pictorially 의미입니다. 883 00:52:08,970 --> 00:52:11,960 시사 머리를 트리에서 먼저한다는 것입니다. 884 00:52:11,960 --> 00:52:14,910 이처럼 그리 할 때 나무에 주문, 사실은이 885 00:52:14,910 --> 00:52:17,460 모양과 이것 저것는 임의인데도라고 생각 했어요. 886 00:52:17,460 --> 00:52:20,360 헤드 한편, 타이틀이라는 하나의 아이를 가지고 887 00:52:20,360 --> 00:52:25,170 그리고 제목은 실제로 "안녕, 세계"입니다 자신의 아이를 가지고 888 00:52:25,170 --> 00:52:32,210 가 내가 의도적으로 사각형에서이 약간 다른 수 있도록 여기에 타원형으로 그렸다. 889 00:52:32,210 --> 00:52:37,420 안녕하세요, 세상은 정말 텍스트 노드 반면,이 사각형은 요소입니다. 890 00:52:37,420 --> 00:52:39,850 그럼 트리의 노드이지만, 노드의 다른 유형입니다 891 00:52:39,850 --> 00:52:41,730 그래서 내가 임의로 다른 생각을 끌었다. 892 00:52:41,730 --> 00:52:45,000 마찬가지로 몸은뿐만 안녕하세요, 세계라는 아이를 가지고 893 00:52:45,000 --> 00:52:47,910 그들은 우연히 같은 텍스트인데도 이렇게 다른 노드, 894 00:52:47,910 --> 00:52:52,100 하지만 같은 모양을 사용하여 그려 놨거든요. 누가 무슨 상관이야? 895 00:52:52,100 --> 00:52:56,820 음, HTML에 대한 좋은거야은이 계층 성격을 가지고 있다는 것입니다. 896 00:52:56,820 --> 00:53:01,010 그리고 자바 스크립트와 자유롭게 사용할 수 있습니다 특히 도서관에 대한 좋은 무엇을이야 897 00:53:01,010 --> 00:53:07,120 그리고 jQuery를 같은 인기 그렇게 놀랍도록 쉽게 트리 구조를 탐색 할 수 있습니다. 898 00:53:07,120 --> 00:53:11,790 우리가 포인터 및 트래버스 측량 나무와 C에서 한 일들을 어떠한 노드에 recursing 899 00:53:11,790 --> 00:53:15,300 부여에 맞는 자녀에게 왼쪽 자녀, 우리가 정렬 할 수 있습니다 갑자기 시간이 걸리는 900 00:53:15,300 --> 00:53:19,450 조금 실망하지 않을 경우 놀랍도록 계몽로서 901 00:53:19,450 --> 00:53:22,470 하지만 거의 프로그래밍에 대해 갈 수있는 효율적인 방법입니다. 902 00:53:22,470 --> 00:53:24,470 그리고 자바 스크립트와 같은 이러한 높은 수준의 언어로 903 00:53:24,470 --> 00:53:28,340 우리는 훨씬 더 직관적으로이 나무를 탐색 할 수 있습니다. 904 00:53:28,340 --> 00:53:30,430 >> 그리고 실제로 문법은 아주 익숙한 것입니다. 905 00:53:30,430 --> 00:53:32,950 당신이 전에 자바 스크립트를 본적이 없어요 경우에는 정말 좋은 참조입니다 906 00:53:32,950 --> 00:53:35,910 모질라 사람들에서 사람들은 누구 Firefox를 확인 907 00:53:35,910 --> 00:53:38,370 있도록 편리한 시간에 그를 찾아 자유롭게 않습니다. 908 00:53:38,370 --> 00:53:41,590 당신이 찾을 수 있습니다 - 이러한 슬라이드는 우리가 다른 일 사용한 동일합니다 - 909 00:53:41,590 --> 00:53:44,030 마찬가지로, 기본이 사라졌어. 910 00:53:44,030 --> 00:53:47,010 그래서 자바 스크립트에서 프로그램을 쓸 때, 더 주요 기능은 없습니다. 911 00:53:47,010 --> 00:53:48,690 당신은 코드를 작성 시작합니다. 912 00:53:48,690 --> 00:53:51,660 그러나 자바 스크립트와 C와 PHP 사이의 키 차이 913 00:53:51,660 --> 00:53:55,890 즉 C와 PHP는 지금까지 서버 측을 실행 한 반면, 914 00:53:55,890 --> 00:53:59,180 이 경우 어플라이언스에서 이상 일반적으로 서버에서, 915 00:53:59,180 --> 00:54:04,270 디자인의 자바 스크립트는 일반적으로 브라우저에 의해 실행됩니다. 916 00:54:04,270 --> 00:54:08,440 즉, 우리가 약이에요, 자바 스크립트 코드를 작성 할 수 917 00:54:08,440 --> 00:54:13,080 어플라이언스 서버,하지만 당신이 CSS 사이, 당신의 HTML 사이를 포함에, 918 00:54:13,080 --> 00:54:16,100 귀하의 GIF를하고 PNGs 및 JPEG 파일들 919 00:54:16,100 --> 00:54:19,170 그래서, 당신은 자바 스크립트를 사용하는 경우, 사용자가 웹 페이지를 방문 할 때 그 920 00:54:19,170 --> 00:54:21,770 그 자바 스크립트 코드는 서버에서 브라우저에 제공 921 00:54:21,770 --> 00:54:24,540 그리고 실제로 그것을 실행하는 브라우저입니다. 922 00:54:24,540 --> 00:54:27,960 그래서는 지적 재산권에 대한 의미있는 영향을 미칠 수 있습니다. 923 00:54:27,960 --> 00:54:32,600 이 자바 스크립트 코드에 관한 때 심지어 IP를 보호 생각해 바보 같은거야 924 00:54:32,600 --> 00:54:37,560 언어의 본질하여 일반적으로 브라우저 측 실행됩니다 때문입니다. 925 00:54:37,560 --> 00:54:40,360 >> 당신은 당신이 미친 짓하고 추한 볼 수 있습니다 즉, 그것을 당황하게하다 수 있습니다 926 00:54:40,360 --> 00:54:45,400 없이 공백으로, 사람들이 귀하의 IP를 도용하기가 어려워 할 무시 무시한 변수 이름,, 927 00:54:45,400 --> 00:54:48,120 하지만 키가 브라우저 측을 실행된다는 점입니다. 928 00:54:48,120 --> 00:54:51,790 비록 옆 자바 스크립트를 사용할 수 있습니다 서버 쪽 등, 929 00:54:51,790 --> 00:54:54,480 가장 일반적인 사용 케이스는 지금 브라우저에 남아 있습니다. 930 00:54:54,480 --> 00:54:59,800 그리고 여기 보이는거야. 다음은이 경우 - 다른 경우 - 다른 단지 PHP처럼, 그냥 C처럼 만들 수 있습니다. 931 00:54:59,800 --> 00:55:02,420 때 "또는"2 가지가 함께 여기 부울 식입니다. 932 00:55:02,420 --> 00:55:04,330 여기 함께 할 때입니다 "와"2 가지. 933 00:55:04,330 --> 00:55:08,300 여기에 PHP와 유사한 스위치 문입니다 934 00:55:08,300 --> 00:55:10,810 그런 당신은 가치의 다른 유형에 전환 할 수 있습니다. 935 00:55:10,810 --> 00:55:15,180 루프는 마찬가지로 우리가 전에 본 적이있는 것과 동일하게 구성되는, 여기를 루프에 있습니다. 936 00:55:15,180 --> 00:55:18,110 동안이 루프, 우리는 루프 동안 할있어. 937 00:55:18,110 --> 00:55:20,290 변수, 아무리 약간의 차이가. 938 00:55:20,290 --> 00:55:24,560 당신은 PHP와 C에서처럼 당신은 변수를 선언합니까 939 00:55:24,560 --> 00:55:27,860 하지만 마찬가지로 자바 스크립트를 약하게 입력합니다. 940 00:55:27,860 --> 00:55:32,730 당신은 정수 또는 부동이나 문자열이나 보통 그런 일을 지정하지 않습니다. 941 00:55:32,730 --> 00:55:34,240 당신은 VAR 지정할 수 있습니다. 942 00:55:34,240 --> 00:55:38,040 당신은 VAR을 지정할 필요가 없지만, 그렇지 않은 경우는 의미가 있습니다. 943 00:55:38,040 --> 00:55:42,000 당신은 VAR 생략 보통 경우 실수로 대신 지역의 전역 변수를 만들 수 있습니다. 944 00:55:42,000 --> 00:55:46,420 그래서 당신은 거의 항상 VAR 말 한 후 변수의 이름있는 날 제안 보자. 945 00:55:46,420 --> 00:55:48,740 그건 취향이 아니야, 그것은 변수에 대해 단지 VAR입니다. 946 00:55:48,740 --> 00:55:52,930 이것은 123 또는 "안녕, 세계"이든, 예를 들어 것입니다. 947 00:55:52,930 --> 00:55:58,910 배열은 현재와 PHP에 대한 구문과 비슷합니다. 948 00:55:58,910 --> 00:56:03,690 나는 VAR 번호를 말씀 드리죠 그럼 내가 변수를 선언 다시 대괄호를 사용하여 949 00:56:03,690 --> 00:56:08,870 쉼표로 구분하여 거기에 이러한 특정 숫자를 가지고 배열은 누구의 유형입니다. 950 00:56:08,870 --> 00:56:11,740 그리고 마지막으로,이 정말 달라 보이는 유일한 하나입니다. 951 00:56:11,740 --> 00:56:16,700 PHP에서 우리가 학생 연관 배열을 구현 한 것으로 기억 952 00:56:16,700 --> 00:56:20,220 Zamyla 같은 변수가 학생이라고하는 곳은 다음과 같이 보일 수 있습니다. 953 00:56:20,220 --> 00:56:23,370 대괄호 여기에 배열되어 의미합니다. 954 00:56:23,370 --> 00:56:28,500 >> 난 숫자 인덱스하지만 문자열을 사용하지있는 것이 사실 - ID, 집, 이름 - 955 00:56:28,500 --> 00:56:30,990 ,이 연관 배열을 의미합니다 956 00:56:30,990 --> 00:56:34,490 와 함께 이러한 화살표는 로그인 및 직각 브래킷을 동일 957 00:56:34,490 --> 00:56:37,310 키가 "이드"을 의미합니다, 값은 1이다; 958 00:56:37,310 --> 00:56:39,310 키가 "집"이며, 값은 Winthrop 하우스이다; 959 00:56:39,310 --> 00:56:41,800 키가 "이름"이며, 값은 Zamyla 찬 것입니다. 960 00:56:41,800 --> 00:56:47,110 안으로 자신의 가치를 가지고 각이 연관 배열, 3 키가 있습니다. 961 00:56:47,110 --> 00:56:52,880 우리는 pset 7 또는 너 곧 알게 될, 자바 스크립트 같은 생각에 본 962 00:56:52,880 --> 00:56:55,220 하지만 이렇게 보이는거야. 963 00:56:55,220 --> 00:57:00,070 따라서 VAR 학생 - 아니, 달러 기호 및 유형에 대한 언급 여전히 있지만, VAR - 964 00:57:00,070 --> 00:57:05,860 자바 스크립트에서 키 값 쌍을있을 때하기 때문에 중괄호를 엽니 다 동일하고, 965 00:57:05,860 --> 00:57:08,900 당신은 실제로 객체라는 것을 사용합니다. 966 00:57:08,900 --> 00:57:13,490 그리고 APCS을하거나 같은 않은 분들은 Java에서 개체를 기억 할 수 967 00:57:13,490 --> 00:57:15,140 또는 유사한 언어입니다. 968 00:57:15,140 --> 00:57:17,880 자바 스크립트는 우선, 자바 없습니다. 969 00:57:17,880 --> 00:57:21,600 그것은 인기 다른 뭔가를 떨어 뜨려야 신중한 디자인 결정 년 전이었다 970 00:57:21,600 --> 00:57:25,640 그 이름, 그 자체를 자바 할 근본적인 관계가없는 경우에도. 971 00:57:25,640 --> 00:57:31,490 자바 스크립트 객체를 가지고 있으며, 당신은 곱슬 브레이스 표기법의 방법으로 그들을 만들 수 있습니다. 972 00:57:31,490 --> 00:57:36,710 자바 스크립트에서 객체 PHP의 연관 배열에 거의 같습니다 973 00:57:36,710 --> 00:57:40,030 그것은 그들 내부 저장 데이터를 제공합니다. 974 00:57:40,030 --> 00:57:44,100 >> 그러나 훨씬 강력 자바 스크립트에서 당신은 매우 쉽게 기능을 연결할 수 있습니다 975 00:57:44,100 --> 00:57:48,040 객체의 내부, 그리고 다른 언어에서이 작업을 수행 할 수 있지만하면, 976 00:57:48,040 --> 00:57:50,040 우리가 보게 될이 상당히 일반적인 패러다임입니다. 977 00:57:50,040 --> 00:57:54,380 즉,이 객체는, 특히 Zamyla 누가, 학생을 나타냅니다 978 00:57:54,380 --> 00:58:00,380 그리고, 개념이에서 구문 다른 유사합니다. 979 00:58:00,380 --> 00:58:03,840 의 실제 파일에서 자바 스크립트를 사용 봅시다. 980 00:58:03,840 --> 00:58:05,570 스크립트 태그가 아웃이 변합니다. 981 00:58:05,570 --> 00:58:08,180 우리는 스타일 태그를 본 우리는 다른 HTML 태그를 봤어요. 982 00:58:08,180 --> 00:58:11,510 스크립트 태그는 실제로 어떤 자바 스크립트 코드를 포함합니다. 983 00:58:11,510 --> 00:58:15,500 우리가 어떤 소스 코드를 미리 만든이 곳이 어디 어플라이언스로 가자. 984 00:58:15,500 --> 00:58:18,700 나는 웹 사이트에 아직 게시하지 않은,하지만 난 수업 후에 할 수 있습니다. 985 00:58:18,700 --> 00:58:21,770 의는 blink.html을이 하나를 열어 보자. 986 00:58:21,770 --> 00:58:27,560 위로 1990 년대에 깜짝 태그라는 HTML 태그는 그대로가 발생했습니다 987 00:58:27,560 --> 00:58:30,340 이는 인터넷에서 가장 멋지고 남용 태그 중 하나 988 00:58:30,340 --> 00:58:36,140 당신은 어떤 1990 년대 스타일의 웹 페이지를 방문하고, 이런 식으로 깜박이는 텍스트를 표시 시작 했죠된다 989 00:58:36,140 --> 00:58:39,810 후작 태그의 결과는, 그 텍스트 이렇게 계속했다. 990 00:58:39,810 --> 00:58:45,070 세상은 실제로 웹 표준에 합의했다 몇 번 중 하나 991 00:58:45,070 --> 00:58:48,250 전반적으로 모든 사람들이 몇 년 전에 깜짝 태그를 죽였어. 992 00:58:48,250 --> 00:58:52,860 하지만 우리는 당신이 가진 힘의 시위로 자바 스크립트와 함께 부활 할 수 993 00:58:52,860 --> 00:58:56,660 당신은 웹 페이지의 내부 프로그램을 작성할 수 있습니다 때. 994 00:58:56,660 --> 00:59:00,240 먼저의이 새로운 콘텐츠를 통해 건너 뛰고 이전에만 집중합시다. 995 00:59:00,240 --> 00:59:01,780 >> 다음은이 예에서 기존의 것들입니다. 996 00:59:01,780 --> 00:59:06,350 나는 HTML 태그, 머리 태그 및 제목 태그가 있습니다. 997 00:59:06,350 --> 00:59:11,210 그럼 난 사업부 여기 body 태그를 가지고있는 리콜은 페이지의 사각형 부서입니다 998 00:59:11,210 --> 00:59:14,720 난에 "인사"의 임의의 고유 한 ID를 제공 한 것은 999 00:59:14,720 --> 00:59:18,320 그냥 제가 고유를 참조하는 방법이, 그 아주 간단한 텍스트가 있습니다 : 1000 00:59:18,320 --> 00:59:20,220 안녕하세요, 세계. 1001 00:59:20,220 --> 00:59:23,940 지금 당신은 나를이 파일의 상단까지 스크롤하고 새 기능을 보자. 1002 00:59:23,940 --> 00:59:27,710 새로운 최대 톱의 첫 번째 문제는, 스크립트 태그입니다 1003 00:59:27,710 --> 00:59:31,280 그리고 내부의 스크립트 태그 통지 나 함수를 선언했습니다. 1004 00:59:31,280 --> 00:59:34,610 PHP 꽤 유사한 자바 스크립트에서 함수를 선언하려면, 1005 00:59:34,610 --> 00:59:37,930 당신은 그대로 함수에게 함수의 다음 이름, 괄호를 작성 1006 00:59:37,930 --> 00:59:40,400 그리고 아마도 몇 가지 인자가 모든이 있다면. 1007 00:59:40,400 --> 00:59:43,510 , 그리고는 평소처럼 내 둥근 브레이스이있어, 이제 우리는 약간 새로운 코드를 1008 00:59:43,510 --> 00:59:45,230 하지만이 무슨 뜻인지 알아 보자. 1009 00:59:45,230 --> 00:59:48,670 VAR 사업부 그래서이 나에게라는 변수 div를 제공 의미합니다. 1010 00:59:48,670 --> 00:59:50,530 나는 foo를 신고 할 수도 있지만, 난 그게 사업부라고하고 싶어 1011 00:59:50,530 --> 00:59:52,620 두 번째로 맑은 될 것입니다 이유. 1012 00:59:52,620 --> 00:59:57,480 그럼 자바 스크립트로 판명 -이 내 웹 페이지에 포함 된 자바 스크립트 코드입니다 - 1013 00:59:57,480 --> 01:00:01,760 문서라는 종류의 특별한 전역 변수가 있습니다. 1014 01:00:01,760 --> 01:00:04,780 자바 스크립트는 실제로 객체 지향 언어입니다. 1015 01:00:04,780 --> 01:00:07,230 우리는 그게 뭘 뜻을 같이 50에 자세히로 이동되지 않습니다 1016 01:00:07,230 --> 01:00:11,180 하지만 지금은 객체가 구조체처럼 거의 것을 알고있다. 1017 01:00:11,180 --> 01:00:14,740 최초의 문제 중 하나를 설정하면 우리는 다시 길을 걸 본 것 1018 01:00:14,740 --> 01:00:17,150 어디에서 우리는 구조체에 많은 정보를 넣어 1019 01:00:17,150 --> 01:00:21,330 마찬가지로, 브라우저와 함께 제공되는 특별한 구조체를 문서입니다 1020 01:00:21,330 --> 01:00:24,810 웹 페이지가 제공됩니다. 내가 만든 게 아니예요. 1021 01:00:24,810 --> 01:00:28,210 이 문서 구조의 내부,하지만 당신은 데이터뿐만 아니라이 1022 01:00:28,210 --> 01:00:30,010 뿐만 아니라 기능을 가지고 있습니다. 1023 01:00:30,010 --> 01:00:34,090 >> 그리고 언제든지 당신은, 내부 객체, 구조의 내부 기능이 1024 01:00:34,090 --> 01:00:36,490 그것은 방법이라. 그러나 같은 일입니다. 1025 01:00:36,490 --> 01:00:40,110 방법은 너무 다른 내부에서 일어나는하는 기능입니다. 1026 01:00:40,110 --> 01:00:42,990 이 특별한 전역 변수는 문서라는 것을 의미합니다 따라서 1027 01:00:42,990 --> 01:00:47,690 기능은 그대로 그을 수행 getElementById를 촉구했다. 1028 01:00:47,690 --> 01:00:52,460 당신 DOM에서 요소 문서 객체 모델 트리, 얻을 것이다 1029 01:00:52,460 --> 01:00:55,520 이 경우 인사에서 누구 ID입니다. 1030 01:00:55,520 --> 01:00:59,200 즉, 우리가 데이터 구조에 소요 된 모든 시간은 놀이에 있습니다. 1031 01:00:59,200 --> 01:01:01,400 우리가 좀 전에했던 DOM의 사진, 1032 01:01:01,400 --> 01:01:06,100 페이지 내가이 사진에 사업부가 있다면, 조금 다른, 비록 1033 01:01:06,100 --> 01:01:11,180 어떤 document.getElementById 나에게 돌아올 것이라고하는 것은 효과적으로 포인터가 될 것입니다 1034 01:01:11,180 --> 01:01:15,440 나무, 나무에있는 사각형에 대한 참조의 직사각형 있습니다. 1035 01:01:15,440 --> 01:01:18,410 그래서 그게 실제로 이러한 기능 중 하나를 호출의 의미입니다. 1036 01:01:18,410 --> 01:01:21,960 이 경우 다시는 사업부입니다. 이 몸이나 제목 없습니다. 1037 01:01:21,960 --> 01:01:26,480 그래서 그때 지금이라는 변수 사업부의 내부를이 있다는 사업부와 알아 보자. 1038 01:01:26,480 --> 01:01:32,580 당신이 동적으로 페이지의 CSS를 조정 할 수있는 능력을 자바 스크립트로 밝혀졌다. 1039 01:01:32,580 --> 01:01:39,060 지금까지, 우리는 제한된이라도 한 CSS, 모든, 스타일 속성에 1040 01:01:39,060 --> 01:01:41,730 또는 우리는 CSS 어디 다른 넣었습니까? 1041 01:01:42,730 --> 01:01:45,810 버릇이 하나어요. 파일의 맨 위에있는 스타일 태그에. 1042 01:01:45,810 --> 01:01:49,180 또는 3 위는에 있었습니까? 1043 01:01:50,710 --> 01:01:54,590 >> 외부 파일이 있는데. CSS. 1044 01:01:54,590 --> 01:01:56,730 그래서 그 우리가 CSS 지금까지 한 3 장소입니다 1045 01:01:56,730 --> 01:01:59,310 하지만 그 댓가가 우리가 열심히 모든 것을 코딩 한 것입니다. 1046 01:01:59,310 --> 01:02:04,060 우리 CSS가 될 것을 설교하기 전에 pset 7로 내렸다대로 결정, 우리는 결정했다. 1047 01:02:04,060 --> 01:02:07,380 귀하의 CSS를 변경하려는 경우 그러나, 당신은 실제로 할 수 1048 01:02:07,380 --> 01:02:09,370 일단 실제 프로그래밍 언어가 있습니다. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - 프로그래밍 언어 없습니다. 자바 스크립트입니다. 1050 01:02:13,910 --> 01:02:18,200 그럼 빨리 당신이 나무에서 그 사각형 중 하나를 갖고있는 것이 밝혀 1051 01:02:18,200 --> 01:02:23,050 DOM라고, 그것은 자체 그것의 내부에 일부 데이터가 있습니다. 1052 01:02:23,050 --> 01:02:27,820 그래서 난 나무에서 움켜있는 div는 우리가 안에 속성을 뭐라고 부를 있습니다 1053 01:02:27,820 --> 01:02:34,390 스타일라고하고, 스타일 속성 자체가 가시성라는 속성이 있습니다. 1054 01:02:34,390 --> 01:02:37,330 전 단지 CSS 사용자의 설명서를 찾는하여이 문제를 알게 될 것입니다. 1055 01:02:37,330 --> 01:02:41,160 이 말 않는 가시성 CSS 속성이가 있다는 사실을 알아가집니다. 1056 01:02:41,160 --> 01:02:44,530 그것은 표시 여부, 표시 여부 무언가를합니다. 1057 01:02:44,530 --> 01:02:46,810 그리고 당신이 어떻게 그런이 있습니다. 1058 01:02:46,810 --> 01:02:50,510 이 사업부의 가시성이 숨겨져 경우, 프로그램 부탁 해요 1059 01:02:50,510 --> 01:02:53,390 내가 무엇을 할 수 변경하려면 어떻게해야합니까? 공개됩니다. 1060 01:02:53,390 --> 01:02:58,840 이 페이지의 가시성이 숨겨져 있지 않은 경우 다른 논리적 나는 숨겨진하려면 어떻게해야합니까. 1061 01:02:58,840 --> 01:03:04,070 나는이 표시 및 숨김 파일과 보이는 것들과 보이지 않는하지 왜 아무 생각이 없습니다. 1062 01:03:04,070 --> 01:03:06,000 이 길을 따라 가난한 디자인 결정했습니다. 1063 01:03:06,000 --> 01:03:09,530 하지만 그 참 CSS의 opposites 있습니다 가시성과 숨겨진. 1064 01:03:09,530 --> 01:03:15,520 모든이와 오프, 그것이 켜고 내 파일의 CSS를 변경을 의미합니다 않습니다 1065 01:03:15,520 --> 01:03:16,870 특정 사업부에 대한. 1066 01:03:16,870 --> 01:03:20,630 다시 한 번,이 깜박라는 기능입니다. 깜박 기능은 언제라고? 1067 01:03:20,630 --> 01:03:24,080 그것은 또 다른 특별한 전역 변수라는 창이있을거야 밝혀 1068 01:03:24,080 --> 01:03:28,220 문서 정신에 유사하지만 문서가 웹 페이지를 말합니다 반면 것은 1069 01:03:28,220 --> 01:03:31,700 DOM 트리처럼, HTML 당신은 서버에서 전송 1070 01:03:31,700 --> 01:03:35,250 창은 주위의 크롬, 주소 표시 줄, 제목 표시 줄을 의미합니다 1071 01:03:35,250 --> 01:03:37,880 귀하의 웹 페이지 그딴거의 모든. 1072 01:03:37,880 --> 01:03:42,800 >> 그리고 윈도우 객체가 setInterval이라는 그것의 특별한 기능 내부를 가지고 밝혀 1073 01:03:42,800 --> 01:03:44,360 그 방법은 우리가 말한 않습니다. 1074 01:03:44,360 --> 01:03:48,600 이 간격을 설정합니다 -이 경우에는 모든 500 밀리 초 - 1075 01:03:48,600 --> 01:03:52,270 하고 추측을, 어떤 500 밀리 초마다 할거야? 1076 01:03:52,270 --> 01:03:55,240 그렇게 기능 깜박를 실행하는거야. 1077 01:03:55,240 --> 01:03:58,560 그리고 여기에 좋은 것은 우리가했던 적이에도 불구 우리가 C에서이 작업을 수행 수 있다는 것입니다. 1078 01:03:58,560 --> 01:04:01,580 C는 주변 기능을 전달할 수 함수 포인터라는 걸이 있나요 1079 01:04:01,580 --> 01:04:03,140 인수 있습니다. 1080 01:04:03,140 --> 01:04:07,620 마찬가지로 자바 스크립트에서 또 다른 함수에 함수의 이름을 전달할 수 있습니다. 1081 01:04:07,620 --> 01:04:10,630 그리고 내가하는 일이납니다. 이 짓도 안할거야. 1082 01:04:10,630 --> 01:04:14,380 나는 깜짝 후 괄호를 입력하면, 그 깜박이는 함수를 호출 의미 할 것입니다. 1083 01:04:14,380 --> 01:04:17,430 내가 그들을 생략하면 그 깜박이는 기능입니다 뜻이 1084 01:04:17,430 --> 01:04:21,330 그래서 setInterval은 모든 500 밀리 초 호출 할 수 있습니다. 1085 01:04:21,330 --> 01:04:28,200 그래서 최종 결과는 그게 끔찍하지만, 내가 로컬 호스트에 가서 blink.html로 이동하는 경우이다 1086 01:04:28,200 --> 01:04:32,120 지금은 또 한번, 또 한번 이런 일이 있었는지 있습니다. 1087 01:04:32,120 --> 01:04:34,950 그리고 실제로 요소를 검사하는 경우, 우리가이를 볼 수 있는지 보자. 1088 01:04:34,950 --> 01:04:38,550 나를 요소를 검사하자, 저를 조금 아래로 스크롤 해 1089 01:04:38,550 --> 01:04:44,320 내가 여기에 요소를 선택할 수 있으며, 크롬의 검사의 DOM 내부를 확인합니다. 1090 01:04:44,320 --> 01:04:48,840 그것은 문자 그대로 앞뒤로마다 500 밀리 초를 변경있어. 1091 01:04:48,840 --> 01:04:55,660 우리는 우리의 친구 네이트에 가면 1092 01:04:55,660 --> 01:05:00,020 혹시 간격으로이 제대로 작동하는지, 비슷한 생각을 궁금해, 경우 1093 01:05:00,020 --> 01:05:04,810 하지만 네이트가 실제로 여기이 특정 경우에 색을 매우 효율적으로 사용하고 있습니다. 1094 01:05:04,810 --> 01:05:07,350 그래서 더 많은 우리가 실제로 이걸 할 수 있습니까? 1095 01:05:07,350 --> 01:05:09,990 의 다른 예를 열고 무언가를 시도해 봅시다 1096 01:05:09,990 --> 01:05:12,940 그 프로그램 일을 깜박하는 것보다 훨씬 더 유용합니다. 1097 01:05:12,940 --> 01:05:17,990 나 오늘 우리의 양식 디렉토리로 이동하여 form0로 가자. 1098 01:05:17,990 --> 01:05:20,820 이것은 내가 할 수있는 추한 형태가했다 1099 01:05:20,820 --> 01:05:23,290 이 날 그냥 브라우저에서의 모습을 보여 드릴게요. 1100 01:05:23,290 --> 01:05:28,960 >> 나 로컬 호스트 / 형태로 이동이 form0입니다 봅시다. 1101 01:05:28,960 --> 01:05:33,400 이, 비밀번호, 이메일에 대한 몇 가지 필드를 가진 슈퍼 추한 HTML 양식입니다 1102 01:05:33,400 --> 01:05:37,190 비밀번호를하고 일부 용어 및 조건에 동의하는 약간의 확인란을 선택합니다. 1103 01:05:37,190 --> 01:05:41,350 내가이 양식을 방문하고 난 당신에게 내 이메일 주소를 제공하지 않으려면 캐치는, 1104 01:05:41,350 --> 01:05:44,730 나는 어쩌면 약관에 동의하고 싶지 않아요, 등록 클릭 할 수 있습니다 1105 01:05:44,730 --> 01:05:46,920 그리고 어쨌든 저를 통해 할 수 있습니다. 1106 01:05:46,920 --> 01:05:50,800 이 dump.php라는 바보 같은 PHP 파일을 제출 발생합니다. 1107 01:05:50,800 --> 01:05:58,420 그것을 행하는 모든 단지 진단 목적을 위해 $ _GET의 내용을 인쇄합니다. 1108 01:05:58,420 --> 01:06:01,580 그게 지금 사용자가 제출 한 거죠. 1109 01:06:01,580 --> 01:06:05,010 그러나 우리가 실제로 사용자의 양식 제출을 확인하려는 것 같아요. 1110 01:06:05,010 --> 01:06:06,530 저 버전 1에 가자. 1111 01:06:06,530 --> 01:06:11,420 이 form1.html입니다. 단지 나쁜 같이 심미적를 확인하지만 얼마나 멋진납니다. 1112 01:06:11,420 --> 01:06:15,450 나는 협력하지 않고 등록을 클릭하면, 나는 화가나. 1113 01:06:15,450 --> 01:06:17,320 "당신은 귀하의 이메일 주소를 입력해야합니다." 1114 01:06:17,320 --> 01:06:21,670 괜찮아요. 그래서 내가 그걸 해보자. malan@harvard.edu 그럼. 나는 암호가 필요하지 않습니다. 1115 01:06:21,670 --> 01:06:25,100 등록하십시오. "당신이 암호를 입력해야합니다." 괜찮아요. 1116 01:06:25,100 --> 01:06:28,470 그래서 진홍의 암호를 제공합니다. 등록하십시오. 1117 01:06:28,470 --> 01:06:32,300 "비밀번호가 일치하지 않습니다." 지금은 진홍색 여기에 입력해야합니다. 1118 01:06:32,300 --> 01:06:35,710 실수하는 확인 했어요. 등록하십시오. 1119 01:06:35,710 --> 01:06:39,860 "당신은 이용 약관에 동의해야합니다." 괜찮아요. 거기에 동의합니다. 등록하십시오. 1120 01:06:39,860 --> 01:06:43,700 그리고 지금 저에게 저기 진단 결과를 보여줍니다. 1121 01:06:43,700 --> 01:06:45,630 >> 그럼 무슨 일이 일어난 거지? 1122 01:06:45,630 --> 01:06:48,330 우리는 양식 제출을 확인하려면이 기능을 했어. 1123 01:06:48,330 --> 01:06:51,420 당신이 pset 7로 다이빙을 한 경우 사실, 사과 기능이있어 1124 01:06:51,420 --> 01:06:54,620 그 화면에 메시지와 함께 사용자의 소리하기가 매우 쉽습니다. 1125 01:06:54,620 --> 01:06:57,580 나는 약간 다른 메커니즘, 알림 기능을 사용 1126 01:06:57,580 --> 01:07:03,690 그 말은 아주 못생긴 사용자 메시지를 만드는 것이므로시 웃으며있어 기능을하지 않습니다. 1127 01:07:03,690 --> 01:07:05,710 하지만 내가 여기서 뭘 알아 보자. 1128 01:07:05,710 --> 01:07:09,620 이 form1.html입니다, 그리고 내가 꽤 익숙한 구문을 가지고주의 사항 : 1129 01:07:09,620 --> 01:07:12,920 body 태그, 폼 태그, 액션 속성, 메소드 속성입니다. 1130 01:07:12,920 --> 01:07:17,050 하지만 내 형태 편의를​​ 위해 고유 ID를 제공 한 것을. 1131 01:07:17,050 --> 01:07:19,190 그럼 난 누구의 유형 텍스트입니다 이메일 필드를, 있어요 1132 01:07:19,190 --> 01:07:23,780 그의 종류의 타입 암호 암호 확인 필드에있는 암호 필드 1133 01:07:23,780 --> 01:07:28,070 그리고 그의 이름은 여기에 동의합니다 확인란이 유형 확인란이 있습니다. 1134 01:07:28,070 --> 01:07:30,380 그리고 제가 제출 버튼이있어. 1135 01:07:30,380 --> 01:07:33,050 하지만 좀 더 내가 갖고있는 것에 상단에있는 확인합니다. 1136 01:07:33,050 --> 01:07:35,810 우선, 스크립트 태그의 또 다른 사용은 있어요. 1137 01:07:35,810 --> 01:07:40,520 당신이 방금 CSS와 같은 다른 파일에 일부 자바 스크립트 코드가 경우를 포함시킬 수 있습니다. 1138 01:07:40,520 --> 01:07:44,530 그리고 당신은 스크립트 소스와 그런 짓을, 그리고 난 분명히 연결 중이 발견 1139 01:07:44,530 --> 01:07:50,349 매우 긴 경로에 googleapis.com하지만 누구의 파일 이름은 jquery.min로 끝나는하기 1140 01:07:50,349 --> 01:07:52,420 최소. JS. 1141 01:07:52,420 --> 01:07:55,969 jQuery를는 자바 스크립트를 만드는 자바 스크립트를 위해 초대형 인기 라이브러리 1142 01:07:55,969 --> 01:07:58,230 모든 이상 사용자 친화적 사용합니다. 1143 01:07:58,230 --> 01:08:00,610 그것은 효과적으로 사실상의 표준이 될거야. 1144 01:08:00,610 --> 01:08:04,090 그래서, 당신이 만날 건지하지만하면, 순수 자바 스크립트 이라기보다는하지 않습니다 1145 01:08:04,090 --> 01:08:09,340 그것은 많은 CS50 라이브러리와 마찬가지로 자바 스크립트의 상단에 라이브러리 레이어입니다 1146 01:08:09,340 --> 01:08:13,670 낮은 수준의 C 코드의 상단에, 현실은 거의 인터넷에 모든 사람이 그것을 사용합니다. 1147 01:08:13,670 --> 01:08:18,030 따라서 이것들은 훈련 바퀴 없습니다. 이것은 단지 가장 최근 연습입니다. 1148 01:08:18,030 --> 01:08:22,830 지금 내 자신의 스크립트 태그입니다 아래의 것을, 그리고 내가 여기서 무슨 짓을했는지 확인합니다. 1149 01:08:22,830 --> 01:08:27,450 그것은 jQuery를가 뭔가 조금 고급 않는 밝혀졌다. 1150 01:08:27,450 --> 01:08:29,660 자바 스크립트는 달러 기호를 가지고 있지만 의미가 있습니다. 1151 01:08:29,660 --> 01:08:32,870 >> 그들은 문자 A 또는 B 또는 C. 같다 1152 01:08:32,870 --> 01:08:36,670 jQuery를 단순히 사실에 여유로운 청구의 대회 나 정렬을 채택하고 있습니다 1153 01:08:36,670 --> 01:08:40,280 $는 자신의 특별한 상징는 않습니다. 1154 01:08:40,280 --> 01:08:44,950 당신은 스크립트 태그로 여기에 글로벌 자바 스크립트 파일을로드 할 수 있도록 즉시 1155 01:08:44,950 --> 01:08:49,080 당신은 $라고 특별한 전역 변수에 액세스 할 수 있습니다. 1156 01:08:49,080 --> 01:08:53,009 그것은 더 적절하게 jQuery를라고하지만, $만큼 섹시 해 보이지 않는. 1157 01:08:53,009 --> 01:08:56,250 그러나 $는 특별한 의미가 없습니다. PHP에서는 특별한 의미를했다. 1158 01:08:56,250 --> 01:08:58,440 당신은 변수의 앞에가 있었다. 1159 01:08:58,440 --> 01:09:01,670 이것은 단지 사람들이에 걸린 섹시한 것입니다. 1160 01:09:01,670 --> 01:09:03,389 무슨 일이 일어나고있는 거죠? 1161 01:09:03,389 --> 01:09:08,830 나는 jQuery를 함수 내 전역 변수 문서를 지나고 있는데 공지 사항 1162 01:09:08,830 --> 01:09:10,860 그럼 내가 전화 했어. 준비. 1163 01:09:10,860 --> 01:09:15,480 어떤 jQuery를 본질적으로 당신이 어떤 바닐라 자바​​ 스크립트 일들을 할 수 있습니다 않습니다 1164 01:09:15,480 --> 01:09:17,889 문서 객체 같은 창 개체, 1165 01:09:17,889 --> 01:09:20,790 그리고 당신은 jQuery를 함수에 전달하면 - 1166 01:09:20,790 --> 01:09:24,429 다시 정확하게 말하면,이 jQuery를 호출하는 기능입니다 - 1167 01:09:24,429 --> 01:09:28,240 그게 무엇을 그에게 문서의 특별한 버전을 반환 1168 01:09:28,240 --> 01:09:30,700 그게과 관련된 더 많은 기능이 있습니다. 1169 01:09:30,700 --> 01:09:34,760 따라서 원시 자바 스크립트에 더 준비 기능은 없습니다 1170 01:09:34,760 --> 01:09:37,810 하지만 먼저 jQuery를 함수에 문서를 통과하면, 1171 01:09:37,810 --> 01:09:40,960 당신에게 문서 개체의 특별한 버전을 반환 1172 01:09:40,960 --> 01:09:43,030 그게 더 멋진 기능을 가지고 있습니다. 1173 01:09:43,030 --> 01:09:48,230 사람들이 왜 좋아하는 고. 단지 우리가 볼 것 등 할 일이 쉬워집니다. 1174 01:09:48,230 --> 01:09:49,820 따라서이 코드 줄은 무엇을 의미합니까? 1175 01:09:49,820 --> 01:09:52,690 문서가 준비되면 코드의이 줄은 뜻이 - 1176 01:09:52,690 --> 01:09:56,830 즉, 한 번 브라우저가이 파일 맨 아래로를 읽고 이루어집니다 - 1177 01:09:56,830 --> 01:09:59,200 가서 다음과 같은 기능을 실행합니다. 1178 01:09:59,200 --> 01:10:03,540 어떻게 자바 스크립트에서 정말 흥미로운 - 그리고 PHP도이가 - 1179 01:10:03,540 --> 01:10:05,450 익명 기능입니다. 1180 01:10:05,450 --> 01:10:10,560 자바 스크립트에서는 전혀 이름이 없지만 사람들이 몸이 어떻게 기능을 선언 할 수 있습니다. 1181 01:10:10,560 --> 01:10:12,570 여기서 무슨 일이 있었는지 확인합니다. 1182 01:10:12,570 --> 01:10:16,220 >> 이 준비라는 기능이며, 단지 다음을 수행 의​​미 1183 01:10:16,220 --> 01:10:20,220 전체 웹 페이지가 준비되면, 그것은 모든 서버에서 읽을 된 경우. 1184 01:10:20,220 --> 01:10:23,090 당신은 무엇을 하시겠습니까? 나는 코드의 덩어리를 실행하고 싶습니다. 1185 01:10:23,090 --> 01:10:27,120 우리가 바로이 코드를 실행하지 않도록주의하십시오. 1186 01:10:27,120 --> 01:10:34,350 내가 이걸 생략하면이 코드의 다음 줄을 실행 시작 즉시 의미 할 것입니다. 1187 01:10:34,350 --> 01:10:39,040 하지만 안돼, 안돼, 안돼 말은 사실이 같은 익명 함수에서이 작업을 싸다 1188 01:10:39,040 --> 01:10:43,000 수단은 아직 실행하지 않는, 결국를 호출합니다. 1189 01:10:43,000 --> 01:10:45,430 우리는 우리의 이전 양식의 예에서 잠시 전에이 것을 보았다. 1190 01:10:45,430 --> 01:10:49,990 우리는 500 밀리 초 후, 결국 어떤 함수를 호출 했어? 깜박. 1191 01:10:49,990 --> 01:10:51,480 같은 생각 했어요. 1192 01:10:51,480 --> 01:10:53,950 이 조금 이상 보이는 경우에도 다시, 지금 신앙에 대해 수행 1193 01:10:53,950 --> 01:10:57,060 결국이라고 익명의 함수를 선언하는 1194 01:10:57,060 --> 01:11:01,720 당신은 단순히 기능을 () {작성 1195 01:11:01,720 --> 01:11:05,380 그래서 코드를 우리는 결국 실행하는거야? 다음. 1196 01:11:05,380 --> 01:11:10,460 , 이건 너무 작은 새 보이지만,이 jQuery를 기능이라고 의미 1197 01:11:10,460 --> 01:11:13,430 이 이제 바로 가기입니다. 1198 01:11:13,430 --> 01:11:18,830 물론 화면의 맨 아래에있는 HTML 조각 일부 나무 표현이 있습니다. 1199 01:11:18,830 --> 01:11:21,730 그것은이 아닙니다. 이 페이지는이여보세요, 세계 예를 들어보다 더 흥미 롭습니다. 1200 01:11:21,730 --> 01:11:25,210 하지만이 HTML에 해당하는 일부 나무가 있습니다. 1201 01:11:25,210 --> 01:11:28,910 그것은 재귀 함수의 일부 종류를 구현해야 할 목에 통증이있을 것 1202 01:11:28,910 --> 01:11:34,380 루트 노드에서 시작하고 누구의 ID 등록이 노드를 찾을 수 있습니다. 1203 01:11:34,380 --> 01:11:38,340 우리는 말 그대로이이기 때문 그래서 jQuery를하는 것은 매우 쉽습니다. 1204 01:11:38,340 --> 01:11:43,000 어서 날 데려가 어떤 사업부 나에게 어떤 양식이든 HTML 요소 1205 01:11:43,000 --> 01:11:45,820 등록 ID가 있습니다. 1206 01:11:45,820 --> 01:11:52,440 이 document.getElementById ( '등록')와 동일합니다. 1207 01:11:52,440 --> 01:11:54,170 >> 왜 jQuery를 같은 사람이 그래? 1208 01:11:54,170 --> 01:12:00,110 이 입력 짧아 때문입니다. 그러나이게 전부입니다. 이 같은 생각이야. 1209 01:12:00,110 --> 01:12:02,630 나에게 누구의 ID 등록이 태그를 가져 오기. 1210 01:12:02,630 --> 01:12:06,300 그리고 결제 방법으로 그런 일이 태그는, 제출 될 때, 1211 01:12:06,300 --> 01:12:08,300 가서이 코드를 실행합니다. 1212 01:12:08,300 --> 01:12:11,320 어느 우리가 양식 유효성 검사를하고있는 방법에 대해 지금 살펴은 봅시다. 1213 01:12:11,320 --> 01:12:15,950 문법은 처음에 보면 이상한이지만, 무슨 일이야? 1214 01:12:15,950 --> 01:12:21,050 이 코드 줄은 사실 있다면 자신의 이메일 주소를 제공하는 사용자에 소리거야. 1215 01:12:21,050 --> 01:12:22,970 따라서이 코드 라인은 무엇입니까? 1216 01:12:22,970 --> 01:12:25,560 $는 jQuery를 의미합니다. 이제이를 확인합니다. 1217 01:12:25,560 --> 01:12:27,920 이 CSS 같은 가지입니다. 1218 01:12:27,920 --> 01:12:33,370 당신은 아직 CSS로 다이빙 한 경우이 누구의 ID 등록이 요소를 것을 의미합니다. 1219 01:12:33,370 --> 01:12:39,840 공간은 어린이 또는 그의 이름은 입력이 등록의 후손을 찾을 것을 의미합니다. 1220 01:12:39,840 --> 01:12:42,970 그리고 대괄호 안의 무언가가 좀 필터입니다. 1221 01:12:42,970 --> 01:12:47,010 그리고이 이상한 모양 경우에도이는 누구 ID 등록되는 양식으로 이동을 의미합니다 1222 01:12:47,010 --> 01:12:51,230 그의 이름은 이메일입니다의 입력 요소 내부로 이동 1223 01:12:51,230 --> 01:12:55,440 다음의 값이 될 한테 무슨 일이 일어나 든 그 값을 얻을 - 1224 01:12:55,440 --> 01:12:59,670 asdf을 그게 내가 입력 한면 그게 내가 타이핑 또는 malan@harvard.edu 모든 이죠. 1225 01:12:59,670 --> 01:13:05,250 폼의 이메일 필드 == 아무것도의 값은, 사용자의 소리면. 1226 01:13:05,250 --> 01:13:09,700 다른 암호 필드의 값은 == 아무것도 사용자에 소리없는 경우. 1227 01:13:09,700 --> 01:13:19,520 >> 다른 암호 필드의 값이 확인 필드의 값을 동일하지 않을 경우, 1228 01:13:19,520 --> 01:13:22,850 다른 폼 요소 있었는지, 사용자의 소리. 1229 01:13:22,850 --> 01:13:25,680 그리고 마지막으로 -이 사람은 역시 그 자신의 새로운 문법을 가지고 1230 01:13:25,680 --> 01:13:29,270 하지만 일단 당신이 그것을 본 적이 적어도 좀 더 합리적이에요 - 1231 01:13:29,270 --> 01:13:34,060 누구의 ID 등록이 양식은 그의 이름 계약입니다 입력 요소가 다른 경우 1232 01:13:34,060 --> 01:13:39,720 그리고이 선택되어, 가서 사용자의 소리. 1233 01:13:39,720 --> 01:13:42,520 그래서 난 완전히이 한눈에 완전히 압도적입니다 인정합니다. 1234 01:13:42,520 --> 01:13:46,530 이 새로운 구문이 많이 있습니다. 그러나 jQuery를 모든 패턴 이러한 종류의를 따릅니다. 1235 01:13:46,530 --> 01:13:49,880 그리고 사실대로 말하면, 나는 몇 분 전까지 만이 존재 몰랐어요. 1236 01:13:49,880 --> 01:13:53,640 난 "확인란이 jQuery를 체크인하는 경우 어떻게 확인합니까?"검색해 1237 01:13:53,640 --> 01:13:55,680 그렇게하고 여러 가지 방법이 있기 때문에이 방법은 구문입니다 1238 01:13:55,680 --> 01:13:58,010 실제 원시 자바 스크립트 코드를. 1239 01:13:58,010 --> 01:14:01,030 문제 설정 7 첫 페이지가 강조 수 있도록, 1240 01:14:01,030 --> 01:14:04,500 pset 7 매우 자신을 부트 스트랩의 운동입니다 1241 01:14:04,500 --> 01:14:08,650 어디에서 우리는 희망, pset를 해결하는 데 개념적 프레임 워크를 제공하고 있습니다. 1242 01:14:08,650 --> 01:14:12,280 >> 그러나 자주 웹 디자인의 경우는, 정말 주변에 찔러 줄 것인지는 당신에게 달렸 1243 01:14:12,280 --> 01:14:16,680 오랫동안 당신이 그들을 인용으로 웹에서 코드 조각 및 예제를 포함 1244 01:14:16,680 --> 01:14:17,960 첫 번째 시트에 조건에 따라, 1245 01:14:17,960 --> 01:14:21,460 그리고 알고 있습니다 HTML, CSS, 자바 스크립트, 심지어 SQL 학습 1246 01:14:21,460 --> 01:14:26,020 정말 우리가이 훈련 바퀴를 벗고 시작으로에서 가정 운동 할 운명입니다. 1247 01:14:26,020 --> 01:14:29,150 그리고 당신도이 브라우저로 할 수있는 더 많은 것을가 알고 있습니다. 1248 01:14:29,150 --> 01:14:33,790 이러한 요소 대부분의 내부 이벤트 핸들러라는 다른 일이 있습니다. 1249 01:14:33,790 --> 01:14:37,140 그리고 우리가 사람을 바라 보았다하더라도, onsubmit과 onready라고 1250 01:14:37,140 --> 01:14:40,310 당신은 onkeydown, onkeyup 같은 일을 할 수 1251 01:14:40,310 --> 01:14:43,410 사용자가 키를 닿을 때처럼, 당신은 그와 키까지들을 수 있습니다. 1252 01:14:43,410 --> 01:14:45,940 Gmail은 키보드 단축키가 있습니다. 1253 01:14:45,940 --> 01:14:49,490 Google은 작성을위한 C와 같은 키보드 단축키를 구현합니까? 1254 01:14:49,490 --> 01:14:54,120 그들은이 onkeypress 또는 onkeyup과 onkeydown처럼,라고하는 등 이벤트를 들어 봐. 1255 01:14:54,120 --> 01:14:56,360 지금까지 일부 메뉴 옵션 위로 마우스를 기웃 거리고 한 경우 1256 01:14:56,360 --> 01:15:00,180 갑자기, 좋아, 모든 메뉴가 나타납니다 또는 그래픽의 색상이 변경됩니다 1257 01:15:00,180 --> 01:15:01,920 어떻게하는거야? 1258 01:15:01,920 --> 01:15:06,940 onready 또는 onsubmit에 들어보다는, 당신은 onmouseover 나 onmouseout에 들어. 1259 01:15:06,940 --> 01:15:10,920 >> 그래서 짧은에,이 아주 간단한 기초 우리는 오늘날의 표면을 발굴하기 시작 한 1260 01:15:10,920 --> 01:15:13,940 우리는, 점점 더, 당신이, 수요일에에 더에 잠수 할것입니다 1261 01:15:13,940 --> 01:15:17,530 이미 잘 알고 있다는 것을의 종류를 구현하는 힘. 1262 01:15:17,530 --> 01:15:21,620 그럼이 종료하게, 우리는 수요일에이 계속 진행됩니다. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]