DAVID 마란 : 좋습니다. 이것은 CS50,이입니다 주 아홉의 끝. 그것은 이상 회오리 바람되었습니다 지난 몇 일. 당신이 무릎 있다면 그리고 문제는, 일곱 설정 깊은 그것으로, 꽤 거기에 실현 비트 새로운 것을 거기에 있습니다. 그러나 우리는 조각 할 수없는 경우에 보자 모든 것을 여기에서 함께 간단히 그 전에 아직 오프 기울고 다른 방향으로 보는 다른 어디 우리가 갈 수 있습니다. 그래서 지금까지 우리는 HTML에 대해 이야기했습니다. 우리는 CSS에 대해 이야기했습니다. 우리는 PHP에 대해 이야기했습니다. 당신은 SQL을 경험하기 시작했습니다. 오늘, 우리는 조금 얘기하자 자바 스크립트에 대해. 그러나 방법이 다른 모든 수행 언어는 서로 맞지? 그래서 우리는에 대해 지난 주 이야기 서버를 갖는 개념. 그래서 그냥이 사각형을 그려 보자 여기에서 웹 서버 등. 그리고 웹 서버는 반드시 파일을 제공합니다. 그리고 그 파일 중 일부 HTML 파일이 될 수 있습니다. 그래서 중 하나가 웹 서버 뱉어 수있는 것은 파일이있을 수 있습니다 그 우리는 단지 다음과 같이 그릴 수 있습니다 일부 HTML을 포함. 그래서 쉽게 설명하자면, 어떤 HTML은 당신이 할 수 있도록합니까? 청중 : 페이지보다 좋은. DAVID 마란 : OK, 페이지가 좋은 보이게, 내가 증명했다고 생각하지만, 그 그렇지. 따라서 HTML은 페이지의 레이아웃을 수 있습니까 구조적으로, 그리고 당신은 할 수 있습니다 종류의 예술 페이지를 표시, 정적 콘텐츠를 마크 업 있도록 다음 웹 브라우저로 볼 수 있습니다. 하지만 그 핵심입니다. 그것은 정적 콘텐츠입니다. 당신이 그것을 쓰기, 당신은 그것을 저장, 그 때 당신은 그것을 발송한다. 그리고 웹 서버는 역할을 그것은 당신의 방문자까지. 그러나 우리는 다른를 사용하여 물건을 양식에 일치 모두 언어입니다. 우리는 스타일 특성을 사용하기 시작 특정 태그에. 그리고 스타일 속성은 우리가 설정할 수 있습니다 글꼴 크기와 색상 같은 것들. 그리고 당신은 아마 발견하기 시작했습니다, 또는 당신은 곧 마지막에 대한 의지 잠재적 프로젝트, 또 다른 당신은 CSS에서 사용할 수있는 속성. 그래서 쉽게 설명하자면, 어떤 정말 그런 다음 CSS는합니까? 사람들은 그 단지 예입니다. 무엇 당신이 할 수 있도록 않는 HTML 것과하지 않는 것 우리는 지금까지 본 적이? 청중 : 직접 스타일을 정의합니다. DAVID 마란 : 스타일을 정의 혼자서. 그래서 같은 클래스 같은 것들을 정의 고유하게 발생, 또는 수도 문서의 노드를 식별하므로 당신이 그들을 양식에 일치 할 수있다. 그러나 더 구체적으로, 그 CSS에게 말할 것 정말 당신이 일을 할 수있는 마지막 마일은 당신이 많은 것을 지정할 수 있습니다 더 정확하게 미학, 대부분의 경우 HTML이 할 수있는 반면 당신은 당신의 페이지를 구성. 일부 디폴트는있다하더라도, 같은 우리의 태그를 보았다 대략 말하기 제목 태그, 상황이 크고 대담했다. 즉, 꽤 일반적인 정의의 태그 - 크고 대담한. 무슨 글꼴 크기? 무슨 색입니까? 그 방법은 대담? 그리고 CSS는 더 미세하게 당신을 수 그런 조정할 것. 뿐만 아니라 레이아웃, 일부 등 의 설명했습니다. 솔직히, CSS 조금이다 지저분한 언어. 그것은 당신이 할 수 있다는 점에서 매우 강력 당신은했습니다 말 그대로 어떤 웹 사이트 그것으로 오늘 웹에서 볼 수 있습니다 만, 그것은 목에 통증의 일종이다. 그리고 당신의 일부는 머리를 부딪 혔습니다 이미 단지 할 수있는 벽에 센터 메뉴에 같은 멍청한 짓 당신이받은 한 경우 문제가 일곱 설정 아직 그 시점. 하지만, 그 일을 실현 시간이 지남에 따라 더 쉽게. 당신은 패턴을 발견하기 시작합니다. 그리고 또, 구글은 당신의 친구가 될 것입니다 당신이 할 수있는 다양한 방법에 대한 이러한 종류의 문제를 해결한다. 그리고 CSS로 감히 및 HTML보다 일반적으로, 당신의 문제를 해결할 수 있습니다 많은 방법으로, 모두 매우 수도 잘 당신이 할 수있는 것보다, 정확 C와 같은 뭔가도 현재 PHP 나 자바 스크립트. 다른 단지 많습니다 물건을 배치하는 방법. 그러나 이것은하기 시작 지저분한, 우리는 말했다. 다만 종류의 당신의 HTML을 혼합 방사 스타일 특성과 함께 CSS했다 조금 엉성. 그래서 우리는 대신에 일종의 말했다 추상적으로 말하자면, 당신이해야한다고 적어도 요인에 시작 아마 당신의 CSS 중. 안 스타일 속성,하지만 적어도 어떤 내부의 스타일 태그를 사용 웹 페이지의 일부? 청중 : 머리. DAVID 마란 : 머리에. 지금까지, 우리는 제목을 가지고 거기에,하지만 당신은 스타일을 추가 할 수 있습니다 태그를, 당신은 대략 당신의 CSS를 넣을 수 있습니다 페이지 상단으로 말하기. 그러나 우리는 한 단계 더 일을했다 우리는 더 많은 것을을 고려 별도의 파일로. 그리고이 두 파일이 있었다 어떻게 든 지금 연결했다. 그리고 실제로 그것은이었다 그 한 태그입니다. 그리고 무엇 무엇보다 중요한 중 하나 우리의 CSS를 인수 분해를위한 동기 부여 더욱? 청중 : 재사용. DAVID 마란 : 재사용. 오른쪽? 당신은 볼 수도 P-설정 이미 일곱 그 많은 페이지, 구매 페이지, 판매 페이지, 포트폴리오 페이지는 아마 다소 유사하게 구성. 상단에 CS50 금융 로고가있다 당신은 그것을 변경하기로 결정하지 않았다면. 에서 바닥 글이있다 페이지의 맨 아래. 그리고 CSS는 다음을 인수 분해 할 수 있습니다 그것은 별도의 파일에 만약에 그래야 당신은 세계적으로 뭔가를 변경하려면 귀하의 사이트 전체에 걸쳐, 당신은 할 수 실제로 한 곳에서 변경할 수 있습니다. 하지만 당신은 잠재적으로 지불 가격이있다 인수 분해 한 것으로 별도에 내 HTML 파일에서 CSS 그것을 참조하는 파일 우리는 월요일에보고 태그. 단점이 어떻게 될 수 있는가? 우리가있을 때까지 일주일 전에 다시 생각 HTTP 및 TCP / IP와 방법에 대해 이야기 인터넷이 작동합니다. 여기 뭔가? 관객 : 그것은 더 많은 시간이 걸립니다. DAVID 마란 : 그것은 더 많은 시간이 걸립니다. 왜? 대상 : [들림]. DAVID 마란 : 네. 그래서 틀림없이 조금 더 시간이 소요됩니다. 하나는, CSS는 분명히 있기 때문에 아니 같은 파일합니다. 그래서 지금 당신이하지 않는 것을해야 한,하지만 두 요청. 그리고 그 요청의 각 우리에서 보았 듯이 소위 Inspector에서 크롬, 우리는 각각의 네트워크 탭을 보았다 이러한 파일 중 하나를 HTTP를 필요로 우리가 걸립니다보고 요청 다소의 시간. 지금, 어쩌면 그것은 많은 아니에요. 어쩌면 그것은 단지 20 밀리 초입니다. 아마 200 밀리 초입니다. 하지만, 페이스 북과 같은 페이지에 대한 생각 많이하거나 CNN, 또는 Google, 우리가했습니다 예보다 큰 지금까지 바라 보았다. 해당 페이지는 수십 개의 파일이있을 수 있습니다 이는 각각이 필요할 수 있습니다 파일로 다운로드 할 수 있습니다. 그래서 일 가능성이 있습니다 천천히 시작합니다. 특히 요즘 때 우리 모두가 우리의 주머니에 휴대 전화를 가지고 느린 인터넷 연결이 필요 몇 가지, 몇 밀리 초를 기다립니다 추가로 더 많은 밀리 초 파일이 실제로 속도가 느려질 수 있습니다. 대기 시간을 설명하는 단어입니다 종류의 당신이 가지고있는 대기하는 당신 기다릴 때 경험 정보의 일부 조각. 그러나 거꾸로가있다. 그래서 모든 종류의 아닙니다 - 실제로 여기 시소의 비트입니다. 이제 단점,하지만 브라우저에서 할 수 있습니다 그들은 방지하기 위해 스마트 있다면 같은 styles.css가 요청하지 파일을 다시 무엇을 할 수 있습니까? 이를 캐시. 그래서 캐싱 - C-A-C-H-E - 일반적으로 단지를 저장하기 위해 여기를 의미 당신이 처음 요청 된 파일과 다음에 대한 캐시를 확인합니다. 당신은 저장 용기의 일종입니다 확인 그리고 당신은 이미이있는 경우 styles.css가 사본, 심지어 다른 경우 P 세트,​​ 또는 웹 사이트에있는 페이지 요청은 다시 단지를주는 사용자가 동일한 캐시 된 복사본. 를 요청 귀찮게하지 않습니다. 이 단점하지만, 여러분 중 일부 등 P-세트에 걸려 넘어있다. 당신은 서버에서 변경 한 경우 당신은 브라우저로 돌아가서 때때로 브라우저가 않습니다, 다시 당신은 호의와 귀찮게하지 않습니다 귀하의 styles.css가 파일을 다시 다운로드 때문에, 제발, 확률은 무엇입니까 이 페이스 북을 사용하는 이러한 스타일 시간에 시간을 변경하거나 예정 하루 하루? 그것은 꽤 낮은입니다. 그들은 시간이 지남에 따라 변화하지만,하지 않을 수도 있습니다 분하거나 시간 있습니다. 웹을 할 때 속임수 그래서, 그냥 FYI 개발, 자주를 누르고 있습니다 예를 들어 키를 이동하고 다음을 클릭합니다 브라우저에서 다시로드, 그 것이다 일반적으로 브라우저의 새로 고침을 알려 모든, 당신이 이미 가지고있는 경우에도 캐시에. 그래서 다시 그나 및 단점, 하지만 그들 모두 궁극적으로 디자인 결정. 그래서 지금, 우리가하지 않았다 여기에 이​​야기를 끝낸다. 지금 되돌아 가서 다시하고 다시하고있는 경우 다시, 우리는 단지 소개하기 시작 HTML,하지만 PHP. 그래서 평신도의 관점에서, 어떤 PHP는 우리가하자합니까? 대상 : [들림]. DAVID 마란 : 저게 뭐죠? 대상 : 로직을 소개 코드로. DAVID 마란 : 그래, 소개 코드에 논리. 그래서 진정한 프로그래밍 언어의 루프, 변수 및과 함수, 조건, 그리고 모든 우리는 다시 길을 사용했던 것 때 처음입니다. 그리고 PHP는, 우리가 본 적이 사용할 수 있습니다 두 명령 줄에서 - 그것 할 수있는 아무것도 할 필요가 없습니다 웹과, 심지어는 비록 정말 그 기원과 그것이 무엇 경향 에서 좋은에 공헌 할 수 - 하지만 당신은 자연에 의해 단순히 PHP를 사용할 수 있습니다 이 인쇄 ()를 가지고 있다는 사실의 기능 및 printf의 () 함수 또는 에코 () 함수를 호출합니다. 방법 큼 거기이다 PHP와 텍스트를 인쇄 할 수 있습니다. 따라서이 프로그램을 사용할 수 있습니다 정확히 출력 할 언어 우리는 전에 무슨 얘기를했는지. 당신은 동적으로 생성 할 수 있습니다 귀하의 HTML. 어쩌면 그것의 모든. 같은 어쩌면 당신은 하드 코드 것들 머리글 및 바닥 글 및 로고, 당신의 스타일 시트 그 모든. 그러나 P 세트 일곱와 같은 뭔가를, 당신은 주식을 조작하고 가는지 하는 사용자의 포트폴리오를 보여주는 당신은 동적으로 변화하는 수 것 확실히 PHP 해주는 논리를 사용 프로그래밍 언어로 당신에게 출력은 동적 부분 집합 페이지. 그래서 당신은 동적 웹 사이트에 대해 이야기 할 때, 또는 웹 프로그래밍, 그건 당신이 진정으로 무엇을 이야기하고 있습니다. PHP와 같은 언어 또는 물건을 사용하여 라는 파이썬이나 루비 또는 Java 또는 데이터베이스를 쿼리 아직 다른 언어 자주, 또는 다른 서버 및 다음 동적으로 HTML을 뱉어. 이제 최종 결과는, 옆으로,이다 대부분의 웹 사이트의 H​​TML, 귀하의 P-세트 일곱 포함하면 아마 거대한 엉망하면 될 것 당신은 소스를 보면 브라우저에서 코드입니다. 그것은 큰 문제가 아니다. 이 시점에서, 우리는 신경 때 스타일, 우리는 신경 당신이 작성하는 물건. 우리는 물건을 걱정하지 않습니다 어떤 코드를 출력합니다. 그래서 들여 쓰기에 대해 걱정하지 마십시오 그건 PHP의 여기 경우 실제로 물건을 출력. 결국, 브라우저, 걱정하지 않습니다 그리고 인간은보고되지 않습니다 소스에서 어쨌든. 우리 직원은, 예를 들어, 것 귀하의 PHP에서 찾고. 그래서 나는 간단한 예를 지금 제공하자 왜 다른 사람의이 유용 할 수 있습니다. 그래서 솔직히, 나는 마지막을 기억할 수 없다 내가있는 문제를 해결하기 위해 C를 사용하는 시간 현실 세계. 이 대학원에 아마 때 I는 언어를 사용할 필요가 있다고 매우 낮은 수준이었고, 나에게 준 매우 높은 작업을 수행 할 수있는 기회 정말 많은 CPU를 저장 수행 사이클 내가 할 수있는 등, 많은 부분에서 나는 거대한 데이터 세트를 사용했기 때문에, 모든 CPU 사이클 카운트. 솔직히, 심지어 전화와 같은 것들에 이 일 및 기타 장치 당신은 아주 많은이없는 곳 메모리와는 사뭇이 없습니다 많은 CPU, 빠른 언어를 사용하여 여전히 매력적입니다. 그러나 현실 세계에서, 때 그냥 에 함께 일부 프로그램을 드릴게요 일부 데이터를 분석하거나, 수집 한 에 대한 등록의 전체 무리 일부 학생 그룹과 당신이 매우 원하는 신속하게 이메일을 보내는 자동화 있는 모든 사람들을 하나 하나 등록자, 당신이 도달하는거야 더 높은 레벨의 언어 보다 C 말하자면. PHP 나 파이썬이나 루비 같은, 또는 존재 대여섯 사람 요즘. 하지만 그 세 개는 아마 지금 가장 트렌디 한. 그리고 이것이 의미하는 것은 당신이 열 수 있다는 것입니다 텍스트의 gedit 같은 편집기 또는 최대 그냥 시작 후 다른 대부분의 아무것도 고민 할 필요없이 코드를 작성 않고도 컴파일 약 정말 메모리 관리에 대한 걱정, 하지만 염두에두고 그 작은 엉성함은 결국 다시 올 것이다 데이터 세트가 얻는 경우에 당신을 물린 크거나 문제가 큰 가져옵니다. 그러나이 수단 우리는 다음과 같다. 내가 가서 검사기를 실행하자 에서 문제가 여섯을 설정합니다. 그래서 이것은 내 트라이 기반 구현 나는 큰에 사용한 내가 잘하지 수행 보드. 우리는 일주일의 시간에 돌아오고 있습니다 꼭대기 끝 않은 사람들을 다시 우리의 마지막 강의에서 큰 보드. 하지만 지금은 내가 앞서 그냥 가자 텍스트 내 솔루션을 실행하고, 우리는 할 수 있습니다 킹 제임스 성경, 그리고 여기에 우리가 간다. 그래서 사람들은 가정의 모든 있습니다 중 맞춤법이 틀린 단어 킹 제임스 성경. 그리고 내 구현했다 총 절반 두 번째. 이에 따라서도 나쁘지 않다 특정 컴퓨터. 그러나 얼마나 많은 생각 코드를 내가 작성했다. 여러분이 작성했던 코드의 양 생각합니다. 당신이에서 보낸 몇 시간 생각 D-홀이나 기숙사 또는 어디에 실제로 솔루션을 코딩. 음, 사실은 높은 수준이있는 경우 PHP와 같은 언어, 노트를 가지고 나는 여기에서 무엇을 할 수 있는지. 첫째,이 대신라고 가정 배포 코드입니다. 이 검사기라는 파일입니다. 그것은 오늘날의 일환으로 사용할 수의 배포 코드입니다. 그리고 대부분에 내 손을 흔들거야 세부 사항,하지만 실제로의 방법의 흥미로운 예 당신은 포트 언어를 수도 PHP를 통해 C 등을들 수있다. 말 그대로 두 개의 텍스트 창을 열어, speller.c 내 C 버전으로 하나, 그리고 나는 단지로 번역하기 시작 내 PHP에 머리 및 사용하여 그것을 입력 가장 비슷한 기능을합니다. 그래서 이런 것들 중 일부는 다릅니다. 우리는 PHP를 사용하지 않는 마지막을 보았다 아주 동일한 방법으로 있습니다. 그래도 일반적으로 필요합니다 등이 존재하지 않습니다. 정의는 다소 다르다 #은 C에서 정의하지만 그건 우리는 일정을 확인하는 방법. $, 그것은 PHP에 존재 밝혀 ARGC 그래서 우리는 그 전에 봤어요. 이것은 단지 변수, 모든입니다 하는 달러 기호로 시작합니다. 이들은 다만 무리입니다 리콜 점을 떠. , 당신은 환영 너무 오래 짧은 이야기입니다 이 넘기 호기심 경우,이는 거의 라인을위한 라인 전환 PHP에 speller.c의 C 버전. 그리고 당신은 다시이 작업을 수행 할 수 대여섯 다른 언어. 그러나 흥미로운 것은 이것이다. 아니면 무슨 일이 솔직히 엉망이다 이입니다. 내가 가서 약을 입력하자 난 dictionary.php 및 청구 가서 다시 구현하는 것 문제는 여기에 여섯을 설정합니다. 그래서이에 먼저 제안하자 구현 될 파일 PHP는, 그래서 나 같은 내 태그를 열 수 있습니다. 나 자신에게 세계를 줘 보자 변수 $의 크기가 0을 가져옵니다. 그리고 줄거야 자신 해시 테이블. 나는이 일을 위해 해시 테이블을 사용합니다. 어떻게 PHP에 해시 테이블을 선언합니까? 완료. OK. 그래서 오픈 브래킷 대괄호 나타냅니다 우리가 본 것처럼 PHP에? 배열 할 수 있지만, 배열 연관 배열합니다. 연관 배열은 데이터 구조 것을 값으로 키를 연결합니다. 이제 숫자 인덱스 간단한의 배열, 그 열쇠는 무엇인가? 제로, 하나, 둘, 셋, 오른쪽? 오래된 학교는 다시 C.에서 물건 그러나 수 또한 foo는, 바 같은 문자열 수, 또는 맥스웰, 또는 같은 문자열입니다. 그래서 나는 그것을 활용할 수 다만 순간. 내가 가서 선언하자 같은 함수 - 의 첫 번째로드를 () 할 수 있습니다. 그래서 기능 하중 (). 그리고 PHP는 점에서 조금 다르다 당신은 말 그대로 기능을 입력하지만, 반환 유형을 입력하지 마십시오. 내가 가서 말 거​​라는 부하 () 함수에서해야 인수 $ 사전, 단지 같은 C 버전은 않았다. 나는 메모리에서 그 일을 해요. 그리고 난 것을 제안 이 작업을 수행하는 것. 단순히 foreach는 할거야. 나는라는 함수를 호출하는거야 그의 이름을 전달, 파일 () 변수입니다, 파일 $ 단어로 $ 사전. 그리고 내 여기 루프, 난의 내부 가서에 저장하려는 내 $ 단어가 참 얻는다 $ 테이블. 완료. 아, 잠깐. 완료. OK. 즉, 부하 () 함수 PHP에서 말한다. 지금, 왜 작동합니까? 그리고 종류는 여기에 바람을 피우고 있어요. 그래서, 하나, 우리는 보았다 FOREACH 잠시 시간입니다. 그것은 당신이 반복 할 수 있음을 의미 내가 고생하지 않고 배열 n 및 플러스 플러스, 그 모든. 사전은 물론 파일 이름 크고 작은 같은 두 우리가 지난 시간을 사용 사전. 파일은 텍스트를 여는 기능입니다 파일 라인으로 라인을 읽고, 당신이 거대한 배열을 다시 손, 그 각각의 요소 인 해당 파일의 라인. 그래서 fopen을의 조합, 그리고 FREAD, 루프 및 fclose를하는 동안, 그리고 그 모든. 단어는 단지 수단으로서 마지막으로, 그의 변수는 난에 액세스 할거야 이 루프의 모든 반복에. 그래서 한마디로, 여기 하나 라이너는 의미 이름이있는 파일을 열어 사전, 변수는 반복 그 줄의 선, 그리고 당신이 얻을 때마다 변수라는 단어 라인, 저장, 다음 단어로 작업을 수행합니다. 나는 무엇을 하시겠습니까? 내 해시 테이블에 단어를 넣을. 글쎄, 난 뭔가를 넣을 수 있습니다 내 다만 C에서 같은 테이블을 해시 대괄호를 사용하여. 이것은 내 해시 테이블의 이름입니다. 그 해쉬에 인덱스에 갈거야 이 위치에서 표. 그래서 제로 브라켓없는, 하나의 브라켓 없습니다. 브라켓 인용을 끝 맺다 뭔가, 무엇이든 그 단어입니다. 그리고 당신을 좋아하는가에있을 수 있습니다 당신의 해시 테이블 작업 트라이, 당신은 상점 효과적으로 부울 암시 또는 명시 적으로. 완료. 나는 값이 true 저장하고 있습니다. 이제 몇 가지가있다 여기에 모서리를 절단하고 있습니다. 기술적으로,이있을거야 의 끝 부분에 짜증나는 새로운 라인, / N, 이러한 각각의 단어. 그래서 아마 PHP 함수를 호출한다 라고 잘라 ()하는 것 말 그대로 그 잘라낼. 그리고 실제로 필요 다른 하나의 일을. 아마 각각의 크기를 증가한다 반복, 그래서 추적을 유지하고있어 세계적으로 그것이 무엇의. 솔직히, 이것은 중 하나입니다 당신이 있다면 PHP의 나쁘지 측면, 전역 변수를 사용하여, 당신이 필요합니다 명시 적으로 당신이 말할 수 있습니다. 그래서 사실은 세계에 입력거야 지금 $ 크기, 글로벌 $ 테이블 및 내 기능이 완료됩니다. 그래서 확실히 이전과 간단하지만 아마 C 이하의 시간이 걸렸습니다 버전, 아마? OK. 그래서 지금의이 체크 () 함수를 수행 할 수 있습니다. 이 이상했다 있는지 보자 이 C. 그래서 우리를했다 끝에 시간 내가 가서 선언하자 함수로 확인. 인, 인수 단어에 걸린다 철자에서 온 것. 그리고 난 그냥 확인하는거야 경우 다음 변수 ISSET, 테이블 단어의 브라켓하여 strtolower - 의 내 괄호를 모두 균형있게 - 다음 true를 반환합니다. 다른 - 정말 힘들었다 이 프로그램의 일부입니다. 그렇지 않으면, false를 반환합니다. 완료. 즉, () 확인합니다. 자, 왜이 작동합니까? 음, 하나는 내가 단어에 전달 하는 문자열입니다. 둘째, 난 해시 내부 알아보고 있어요 $ 테이블라는 테이블. 나는 호출하여 소문자로 그것을 강요 해요 에서 () tolower를 매우 유사한 기능 C,하지만 전체 단어를 않습니다, 아니 하나의 문자. 그리고 거기 즉 설정되면 값 즉, 설정되고, 그게 사실이라면, 다음 네, 이 단어입니다. 내가 부하가 넣어 있기 때문에 (). 그렇지 않은 경우, 나는 false를 반환하겠습니다. 이제 다른 사람은 쉽습니다. 기능 크기 (), 나는이 방법을합니까? 나는 기본적으로 $ 크기를 반환 할. 하지만 기술적으로 필요 이 성가신 일을. 실제로 듣고까지, 나는 절단 된 너무 많은 한 구석. 정말 글로벌 $ 테이블을 할 필요가있다. 그러나 고 말했다되는) 언로드있다. 언로드 ()은 놀랍습니다. 기능 언로드 (). 어떻게) (언로드를 구현하고 싶어? 완료. OK. 그래서 (), 메모리 관리가 언로드 완전하게 당신을 위해 알아서 PHP와 많은 같은 높은 레벨의 언어. 그래서이 놀랍습니다. 도대체 우리가 과거를 보냈다 않은 이유와 같은 C 쓰기에 여덟 플러스 주 외관상으로는 아주 천천히, 정말 시간 수십 시간과 소모 문제 우리의 벨트에서 작동? 음, 한 가지,이 작동하지 않을 수 있습니다 작은 프로그램에 대한 벌금. 그것은 확실히 가속화 내 개발 시간. 그러나 이제 어떻게되는지 보자 현실 세계에서. 날이 디렉토리로 가자 터미널 창에서. 철자가있다. 그리고 옆으로 통지, 당신은 수도 설정 문제이 발생했습니다 여섯이나 문제가 일곱을 설정합니다. 당신은 엄격 필요가 없습니다 . PHP와 PHP 파일을 종료합니다. 당신의 그 처음과 같은 줄을 추가하는 경우 맨 위에, 즉 특별한 라인의 구문의 본질적 의미 찾기 PHP를 호출하고 그것을 사용하는 프로그램 이 파일을 해석한다. 그래서 지금 아무도 정말 알고 나는 PHP 프로그램을 실행하고 있습니다. 나는 것처럼 단지 그것을 실행할 수 있습니다 뭔가 C에서 컴파일 된 하지만, 여기에 일이다. 사실, 다시 한 번이 작업을 수행 할 수 있습니다. Dropbox/pset6 /. 철자가있다. OK, 0.44 초. 그것은 빨리이 시간을 얻었다. 이제 PHP 버전으로 가자. 좋은 터치. 그러나 얼마나 많은 시간을 생각한다 나는 근무 시간에 저장. OK. 그래서 3.59 초, 어떤 사실 하나 정확한 소리를하지 않습니다. 하지만, 긴 이야기를 짧은 때문이다 당신은 엄청난 금액을 인쇄 할 때 물건의 화면에, 그 자체가 느려진다. 정말의 CPU를했다 무엇 어플라이언스는 3.59 초에 있었다 0.44했다 C에 대비 초 가장 최근에. 즉, 진정의 명령이다 다른 크기. 어디 그 가격이오고있다? 이유는 너무 느리다? 왜 PHP는 저조한 수행합니까? 다니엘? 청중 : 당신은하지 않았다 정말 해시 테이블을 사용한다. DAVID 마란 : 정말하지 않았다 해시 테이블을 사용한다. 그래서 나는 종류의했다. 그래서 연관 배열입니다. 대부분의 경우 PHP에서 사람들이하는 경우 정말 똑똑, 그들은 아래에 사용 구현 후드 실제 해시 테이블 C 또는 C + +와 같은 뭔가. 그러나. 그래. 청중 : [청취]. DAVID 마란 : 네. 그래서 지금 내가 쓴 각각의 기능 - 실제로, 당신은 말할 수있는 그 한 번 더 조금 더 크게? 대상 : 각 기능이 당신이 포함되어 더 많은 전체 용량보다 - DAVID 마란 : 그래서 매우 사실입니다. 우리가 걸 더 많은 오버 헤드가있다 정말 만에 초점을 맞춤으로써 표시되지 난 그냥 쓴 dictionary.php. 대조적으로, 전체 인터프리터 거기 백그라운드에서 진행. 사실,이 프로그램을 실행하면, 컴파일 된 0과 1을 실행하지 않은 내 인텔 CPU를위한 설계. 오히려 선으로 라인을 실행중인 정확히 보이는 PHP 코드 처럼 우리는 그것을 입력했습니다. 그리고 당신에게 사용할 때마다 해석 언어, 당신은 실제로이 가격을 지불 않습니다. 그것은 읽을 시간이 걸릴 것 하단에 파일의 상단, 왼쪽 오른쪽하고 각 실행 선 또 다시. 지금 현실에서, 특히 웹, 실제로이 프로세스를 신속하게 처리 할 수​​ 있습니다 의 결과를 캐싱하여 PHP 코드를 해석된다. 그리고는, 웹에 의미가 있기 때문에 당신은 하나의 사용자처럼하지 않은 경우 나를 여기에,하지만 1,000 만 사용자, 다음 파일이 아마 처음 액세스는 그 후 천천히,하지만 그것은 훨씬 더 빠릅니다. 그러나이도 다시 무역 꺼져 있습니다. 그리고 연구 데이터와 같은 뭔가 설정, 또는 같은 큰 뭔가 이, 사용자는 결국 것입니다 그 감속을 느낄 시작합니다. 그래서 한마디로, 언어가 해석 , 유행에 매우 인기, 그리고 솔직히 언어 당신이 아마 문제를 풀 때 도달한다 CS50 이후. 하지만 실제로 당신이있어 얼마나 실현 후드 아래에 부여 복용 해시 정말 그 지난 몇 주 동안 테이블, 나무와 시도, 궁극적으로 실제로 사용되는 오픈 브래킷과 같은 것들을 구현 대괄호, 이는 우리가 지금 할 수 부여를 위해 기꺼이 걸릴. 그럼 이제 살펴 보겠습니다 이 웹 컨텍스트에서. 그리고이 있다는 것을 지난 시간에 언급 PHP의 슈퍼 전역의 무리가 정말 관련이없는 명령 줄에서. 그들은 상황에 더 많은 관련성이 의 웹 환경에서 PHP를 사용하여. 그래서 순서로 웹 서버에 PHP를 실행 HTML과 같은 물건을 생성 할 수 있습니다. 그리고 우리는 $ _GET과 $ _POST 훑어하고, 그 위치를 자동으로 사용자의 당신이 제출하는 경우 입력이 간단하게 끝납니다 로 끝나는 파일을 형성한다. 웹에서 PHP는 기기와 같은 서버. 하지만 그건에서 간략하게 살펴 보자 $의 _COOKIE와 $ _SESSION. 쉽게 설명하자면, 쿠키로 무엇인가 당신은 문맥에서 이해 웹을 사용하고 계십니까? 대상 : 컴퓨터에 파일. DAVID 마란 : 네. 그것은 사용자의 컴퓨터에있는 파일의 정보 어떤 웹 사이트에 심어 당신이 방문하는 일. 그래서 당신은 당신이 갈 페이스 북에 갈 때 당신이가는 bankofamerica.com에 google.com에, 당신은 거의 모든에 갈 때 세계 웹 사이트 요즘, cs50.net 포함, 쿠키가 심어 져 컴퓨터에서하는 것입니다 에 RAM에 저장된 값도 당신의 브라우저의 메모리 또는 컴퓨터에 때로는 참으로 파일 저장 하드 드라이브에. 그리고 일반적으로 해당 파일에 어떻게 저장되어 사용자 이름, 아닌 아닙니다 암호, 일반적으로하지 뭔가 민감한 웹 사이트는 그렇게하지 ​​않는 한 자신의 안전과 좋은 것이 아니라 그것은 큰 고유 식별자 중 하나입니다 다른 것들. 그것은 심어 큰 임의의 수의 사용자 컴퓨터하지만 당신은 생각할 수 에서 같은 종류의 가상 핸드 스탬프 클럽이나 일부 놀이 공원이 수있는 직원, 그것의 소유자 서비스,​​ 당신이 누군지 기억. 큰 난수처럼이 경우 12345678, 그 분명히 비록 등이 너무 랜덤하지, 생각 핸드 스탬프 당신은 방문 할 때 facebook.com 처음으로, 그들은 당신의 손에 그 번호를 각인. 그리고 당신은 당신은 HTTP를 구사하기 때문에 브라우저되고, 때문에 페이스 북 분명히 웹과 동일한 시군 서버 프로토콜 HTTP는 말한다 그 언제든지 이후 방문 facebook.com, 그것의 여부를 제 나중에 시간 후, 심지어 다음 날, 그래서 당신이 명시 적으로하지 않은 것처럼 로그 아웃, 어느 효과적으로 손을 씻는 것과 같습니다. HTTP는 당신이 존재해야한다고 말했습니다하여 핸드 스탬프 때마다 해당 웹 사이트로 돌아갑니다. 페이스 북은 그들이 무엇입니까 않습니다 그 손 스탬프를보고 그들은 123456789, 오, 말한다. 나는 첫눈에 모르는이 데이비드 마란 케임브리지입니다 매사 추세 츠,하지만 그들은 확인할 수 있습니다 그들의 데이터베이스와 말 오, 사람 그의 컴퓨터 우리는 123456789를 심어에 데이비드 마란, 케임브리지에서입니다 매사추세츠. 의 자신의 프로필을 해당 사용자를 표시하자 페이지 또는 자신의 뉴스 피드. 그러나 한 가지 문제가있다이 경우 웹이 실제로 작동하는 방법이다. 이제 간단한 예제를 살펴 보도록하자. 의 실제 facebook.com 말을 가자. 우리가 거​​기에 갈 수 전에,하자 내가 가서 크롬을 열어 여기 관리자 아래. 내가 네트워크 탭을 살펴 보자. 그리고 지금의이 가서 입력하자 https://facebook.com합니다. 우리가보고되지 않도록 그리고 그 일을 해요 그 리디렉션 및 폐기물의 모든 그 시간을 통해 찾고. 내가 입력 나갑시다. 좋아. 우리는 요청의 전체 무리를 참조하십시오. 페이스 북이 제공됩니다. 파일의 전체 무리가있다. 그리고 여기, 내 기재의 당 대기 마지막으로, 그건 HTTP 요청을 많이. 그러나 첫 번째는 아마도 가장 흥미로운. 그럼 여기에서 아래로 스크롤시켜, 나는 두 번째의 확대합니다. 이 종류의 될 것입니다 엉망, 그러나 보자. 페이스 북은 우리에게 보내는 물건의 전체 무리. 하지만 워, 흥미. 그들은없는 한,하지만 네 심기입니다 여기에 내 손 위에 손 스탬프. 설정 - 쿠키 설정 - 쿠키 설정 쿠키, 설정 쿠키. 그리고 몇 가지 기능이 여기에있다. 그들 모두는 몇 가지를 언급 만기 종류. 페이스 북은 기대하고있다처럼 그것은 보인다 2015까지 나를 기억합니다. 그래서 아마 시간이되는 나는 로그 아웃해야 또는 그들은 단지거야 자동으로 난 가정 돌아 오지 않아. 그래서 실제로 괜찮은의 시간. 그리고 다른이 있습니다 상황이 여기에 간다. 이 쿠키는 강제로 나타납니다 그것은 1970 년에 만료 말에 의해 삭제 쿠키가 존재하기 전에. 따라서 브라우저가 단지 것입니다 OK 가정, 그처럼 손 스탬프를 세척. 하지만 지금은 내 브라우저 만들 때 후속 요청 - 내가 가서 이렇게하자 또 다시로드. 지금 나에게로 다시 이동하자 상단 요청 및 아래로 이동 여기에, 헤더를 요청합니다. 이 알 수 있습니다. 그래서 지금은하지 응답 헤더에서 해요, 하지만 요청 헤더를 말한다 확인할 수 있습니다. 그리고 그 통지의 일환으로 내 브라우저 다시로드 타격 후 그 요청이 다음 적어도 전송 정보. 설정되지 않음 - 쿠키,하지만 쿠키. 그래서이 라인, HTTP 헤더 때문에 내 브라우저 종류이고, 말하자면 내 그것을 제시 모르고 내 페이스 북의 검사를 위해 손을. 그래서 이러한 쿠키는 할 수있다 무엇을 위해 그 사용? 당신이 누구인지 기억하거나 기억하는 방법 여러 번 당신은 거기, 또는 한 정말 아무것도. 그래서 여기 counter.php입니다. 그리고 나 글꼴을 확대 할 수 있습니다. 그리고이 페이지 통지를 다시로드 할 때마다 그것은 기억 얼마나 많은 시간 나는 거기에 갔었습니다. 글쎄, 그건 모두 인상적인 아니다. , 그냥 해당 탭을 닫을 수 있도록 그리고 이제 다시 가자 http://localhost/counter.php. 아, 재미있다. 아직 심지어 기억 내가 탭을 닫았지만. 솔직히, 나는 브라우저를 닫을 경우, 올바른 방법으로 구현하는 경우, I 여전히 사용자인지 기억할 수 그 또는 그녀는 누가 처음이고, 한 번만 나는 크롬의 메뉴로 이동하는 여기에 여기에, 그리고 이동 역사 및 인터넷 사용 정보 삭제를 클릭 당신의 일부에있을 수로 과거, 그런 후에 만​​ 쿠키 실제로 웹 중에 삭제 개발. 그래서, 우리가 갈 경우 - 여기서 gedit를 가까이하자. 그리고 우리는이 파일에 지금 이동합니다. 나에게로 가자 우리 가상 호스트 / 로컬 호스트 / 공공, 나를하자 counter.php. 이 사랑스러운 주목 간단한 프로그램. 그것은 매우 간단한 웹 사이트입니다. 따라서 파일의 맨 그냥 의견입니다. 하지만, 여기에 당신이 할 수있다 새로운 라인의 , P-설정 일곱 이미 보았다 때 session_start (). 이것은 PHP 코드의 라인입니다 본질적으로, 웹 서버 확인 지시 손을 스탬프와 확인하십시오 손 스탬프를 확인하십시오. 즉, 모든 라인이하는, 그리고 그것을 우리를 위해 그 과정을 모두 수행합니다. 그럼 난 그냥있어주의 여기에 두 가지. 만약이 내부 카운터 키 라는 특별한 전역 변수 $ _SESSION 설정한다 - 즉, 일부 값이이 있다면 - 의이 그것을 얻을 수 있도록하고 로컬에 저장 변수 $ 카운터했다. 또,의 원 카운터를 할당 할 수 기본값 인 0. 지금 여기에 PHP의 한 측면이다 축복과 저주. PHP는 조금 엉성하다. 그래서 반면 C에서, 어떤 것 카운터의 범위는왔다 하나는 여기에 또는 여기에? 그것은 밀폐 된 것 그 중괄호에. 무엇을 추측? PHP에서, 심지어는 사람들의 외부에 존재 중괄호, 여기, 그리고 여기, 여기, 여기, 그리고 도 아래로 아래. 그래서 나는이 점에서 축복이라고 당신은 생각하지 않는 것이 우리는 주 전에했던 하드로. 그러나 그것은 또한의 저주 약간의 당신의 변수를 사용하여 상관없이 PHP,이 같은 프로그램에서 적어도, 그것은을 위해 전 세계적으로 접근 가능 좋든 나쁘 든. 그래서 당신은 지금 명심해야 당신의 변수는 정의되지 않을 수 있습니다. 당신은 다른 곳을 정의 할 수도 있습니다. 하지만 제가 궁극적으로해야 돼? 그 세계의 내부에 저장하는거야 의 값으로 변수 카운터 결과를 키 입력 카운터에 1을 더한 일. 그래서 이것은 단지 산술 그 수행 해당 카운터의 점진. 내가 저장하고있어 사실 그 다시 여기에있는 값은 의미 기본적으로 데이터베이스를 업데이트 사용자 123456789이되었음을 기억 여기에 두 번. 그리고 다음 번 다시 할 때 페이지를 다시로드, 그것은 확인할 것 내 손 스탬프와 오, 말, 사용자 123456789 지금이 세 시간은 여기에 있었다. 그리고 어떤 PHP와 유사한 언어 우리를 위해하고있는 것은 그들이 계산하는 것입니다 방법과 장소 밖으로 얼마 동안 이 특별한의 값을 저장하는 전역. 이 전역 다음 I 페이지가 일종의 마술이다 방문 미리 채워진 그 값으로 채워 당신이 마지막으로 방문한 것은이 있었다 두 번째 전인지 여부, 주 전, 또는 2013 년과 우리가 지금 얘기 2015에 대한. PHP와 웹 서버가 알아서 당신을 위해 모든의. 대상 : [들림]. DAVID 마란 : PHP의 변수가있다 당신이하지 않으면 기본적으로 항상 글로​​벌 , 함수의 내부를 선언 그리고 그들은에 로컬 기능 만. 하지만 난 작성하지했기 때문에 함수는, 그들은 지금 효과적이다 여기에 내 모든 파일에 걸쳐 세계. 대상 : 방법이 그들이 현지 만드는 방법? DAVID 마란 : 어떤이 있는가 그들이 현지 만드는 방법은? 함수 만에 그들을 배치하여. 그 중 최신 버전 PHP, 당신은이 작업을 수행 할 수 있습니다 익명 함수. 의 그것에 대한하지만 더 자바 스크립트의 컨텍스트입니다. 하지만 짧은 대답은 no입니다. 더 이상 대답은 '예'입니다. 좋은. 좋은 퀴즈 질문입니다. 좋아. 그래서 마지막으로, 페이지 자체는 실제로 매우 간단하다. 한번 기억, PHP 모드를 종료 통지 그이 물건 아래의 아래는 다만 침을 얻을 수있다 브라우저.에 익지 내가 보내려 때문에 어느, 괜찮습니다 사용자가 어떤 HTML,하지만 난 싶어 동적으로 해당 HTML을 업데이트합니다. 그리고 내가 할 수있는 한 가지 방법은 정렬 할 수 있습니다 의 매우 빠르게 PHP로 다시 드롭 모드, 오픈 브래킷 물음표 이용 다음 등호 및 출력 값 카운터. 또는 조금 이상한 보인다면,이 등호은 실제로 일부입니다 이에 대한 구문 설탕 printf를 (카운터). 하지만 솔직히 그건 좀 추한 그리고 약간의 고민을 입력합니다. 그래서 PHP는 매우 친절이 기능을 제공합니다 당신은 다만 그것을 말할 수있는 간결 같은 방법으로한다. 그래서 밑으로 일어나고 후드? 네트워크 보면 빨리하자 counter.php 여기 탭을 클릭합니다. 그리고 내가 앞으로하고 처음으로 가자 의는 쿠키를 취소 할 수 있습니다. 이후하자의 브라우저 데이터 삭제 시간의 시작. 이제 여기에 다시 가자. 이제이 페이지를 다시로드 할 수 있습니다. 그리고 제로 돌아 왔어요. 나의 손 스탬프는 세척 되었기 때문에, 지금은 새 쿠키를 얻을. 내가 네트워크 탭을 보면 참 경우 통지, 응답 헤더를 보면 어플라이언스는 날을 보내는 것을 이름이 어쩐지 쿠키 의 임의하지만 종류 합리적 PHPSESSID. 그리고이 정말 날을 보내는 것 큰 임의의 숫자. 꽤 숫자 아니다. 꽤 진수 아닙니다. 그것은 영숫자 어떤 종류의 하지만 아마도 그것은 임의의. 그리고 이렇게에 손 스탬프입니다 내가 말하는 겁니다 것을 말한다. 그런 다음 다시로드를 클릭 한편 경우 내 두 번째이 두 번째 줄에 보면 요청 지금 알이 내 요청 헤더 PHPSESSID가이 같음 포함 없는 설정 쿠키,하지만 단지 쿠키입니다. 그리고 그것은 내 브라우저의 프레 젠 테이션의 나의 손 스탬프. 그래서 지금 맛보기로, 우리는 더 이야기 할 것 일주일 정도이 있지만, 약 어떤 방법이 당신을하지 않습니다 취약 Facebook 계정 취약, 그리고 기타 계정 취약? 대상 : 누군가가 쿠키가있는 경우. DAVID 마란 : 그래, 만약 누군가가 쿠키가 있습니다. 나는 진심으로 일부처럼, 진정한 의미 같은 클럽에서 시도했을 수 있습니다 놀이 공원, 당신이 뭔가를하려고하면 다음과 같이이기는하지만, 스탬프를 복사합니다 거꾸로 다른 사람의 손 위에, 그리고 그 또는 그녀가로 제시 자신의, 그것은 실제로 보면 않는 경우 다음과 동일, 123456789, 웹 서버는 분명히 그냥가는 해당 사용자는 것을 믿습니다. 그리고 이것은 참으로 중요한 요소입니다 위협 쿠키를 사용하는 시간 때문에 사람은 너무 스푸핑 경우 무엇 밖으로 쿠키, 인물 이야기 진정으로 그것을 복사하는 중 하나에 의해 컴퓨터를 보면서 그리고 OK처럼되고있다. 다윗의 쿠키 JJ3JIK하고 등등, 그리고 그들은 알만큼 똑똑 의 정렬 방법을 수동으로 그 전송 브라우저에서 또는에서 쿠키 그들이 쓰는 프로그램, 그들은 완전히 수 당신과 같은 웹 사이트에 로그인합니다. 그것은 힘든 척하는 것이 아니다 다른 사람이 우리가 P 세트를 다시하지 않는 무엇을 소개 두? 대상 : 암호화. DAVID 마란 : 약간 암호화 비트. 최소한의 간단한 암호화, 표준 버전,하지만 암호화 그럼에도 불구하고. 덜. 당신은 모두를 암호화하는 경우 그래서 그것은 밝혀 뭔가를 사용하여이 헤더를하는 당신 지금은 친하게 SSL로 알고 있습니다, 보안 소켓 계층 또는 https:// URL을 다음 이러한 것들을 우리 모두가 있었어요 에서이기는 것은 실제로 암호화 이것은 당신처럼 것을 의미합니다 손에 스탬프를 읽을 수 없습니다. 만 facebook.com는, 할 수있다, 또는 google.com 또는,이 경우 제품 수 그 손 스탬프를 참조하십시오. 비극적하지만, 다시이는 NSA 물건을 가진 모든 너무 적절한 늦게도 SSL을 깨뜨릴 수 있습니다. 그리고 그것은 실제로 어렵지 않다 그 암호를 해독도 있습니다. , 암호화 크래킹에 의해 너무 많이하지 그러나를 속여 해독에 브라우저 데이터를 중간. 그러나 다시, 우리는 당신을 애타게 것 그 전에 오래 함께. 지금은 그냥 두려워합니다. 그것은 사실의 비극적 종류입니다. 좋아. 그럼, 여기서 지금 우리를 떠나지 않습니다? 음,이 해 보자. 이제 가서 빠른 보자 우리가 휴식을 맛보기 전에. 그리고 나는 우리가 조금 더 남아있을 거라 생각 오늘, 그러나 우리는에 뛰어들거야 뭔가 아주 새로운 섹시한, 어떤 것 더를위한 당신의 식욕을 자극. 그래서 맛보기입니다. 그래서 SQL, 우리는 얘기를 시작했다 아무리 짧게 시간입니다. 당신은 정말 당신의 손이 더러운거야 P-설정 일곱에있는 그것의 일부. 그리고 쉽게 설명하자면, 어떤 SQL을 수행 - S-Q-L - 당신을 위해? 그것은 무엇입니까? 그래. 청중 : 당신의 데이터에 액세스하자. DAVID 마란 : 네. 그것은 당신의 데이터에 액세스 할 데이터베이스. 쿼리 언어를 구조적. 그리고 이것은 본질적으로 프로그래밍 언어입니다. 그것의 기능이 있습니다 그 우리는 심지어 클래스에서 사용하지 않습니다. 하지만 당신은 효과적으로 할 수 함수를 정의합니다. 그들은 저장이라 불리는 SQL 절차. 그러나 우리는 매우 간단하고 그냥 계속 거 몇 가지 기본적인 작업에 사용 , 데이터를 선택하는 데이터를 삽입처럼 데이터를 업데이트하고, 데이터를 삭제. 그리고 당신이 정말로 데이터베이스 생각할 수있는, SQL 데이터베이스와 같은, 그냥 Microsoft Excel을 주도했습니다. SQL 관계형 참조하기 때문에 데이터베이스 곳 관계는 단지 테이블을 의미합니다. 행과 열. 그러니 당신은 스프레드 시트에 넣을 수 있습니다 이 나 구글 문서 도구와 같은, 당신은 SQL 데이터베이스에 넣을 수 테이블을 선언하여. 지금, 당신은 어떻게 실제로 액세스합니까 그 내용은? 음, 명령 또는 이 같은 질의. SELECT, INSERT, UPDATE 및 DELETE. 그리고 대부분의 경우, 사람들은이 아르 당신이해야합니다 네 만 성분 아주 강력하게 뭔가를 문제의 칠을 설정합니다. 이제 그 시절에, 당신은 실제로 것 의 데이터베이스와 상호 작용 흑인과 백인 터미널 창 다음과 같은 프롬프트가 나타나면. 그리고 우리는 실행중인 데이터베이스 어플라이언스 인 MySQL의 호출 무료 및 오픈 소스 데이터베이스 엔진. 당신이 구글과 위키 피 디아에게 읽는다면 기사, 당신은 이름이 있음을 알 수 있습니다 일부 전환의 비트 리눅스 버전. 마리아 데이터베이스는 실제로 MySQL을 말하자면 포크. 긴 이야기를 짧게, 오라클은 MySQL을 샀다. 오라클은 큰 회사입니다. 사람들은 까봐 걱정되었습니다 더 이상, 확실히 오픈 소스 남아 그래서 이것은의 MySQL의 단지 사본입니다 여전히 무료 여전히 오픈 소스 및 기본적으로 페도라 리눅스에 설치. 그러나 이것은에있는 고통의 종류 에 익숙해하는 목 데이터베이스이 방법. 그래서 우리는 CS50 어플라이언스에 포함 라는 무료 오픈 소스 도구 phpMyAdmin을. 그냥 우연의 일치가 그것은 PHP로 작성된 것. 근본적인가 없습니다 여기에 PHP를 위해 필요합니다. 그러나 이것은 단지 웹 기반 도구입니다 우리는 설치, 무료로 다운로드 우리가 할 수있는기구, 그래픽 사용자 인터페이스가 어떤 P-설정 일곱 데이터베이스와 탐험 어느 새 데이터베이스를 만들려면 자신의 마지막 프로젝트에 대해 말을 당신이하려는 경우 등을들 수 있으며, 궁극적으로 만들 CS50 금융과 같은 동적 웹 사이트 데이터를 조회 할 수 있도록하고 데이터를 동적으로 업데이트 할 수 있습니다. 당신은 사용할 필요하지 않을거야 그냥 간단한 텍스트 파일 또는 CSV. 당신은 실제로 스마트 데이터베이스를 사용할 수 있습니다 당신은 더 많은 프로그램을 실행할 수 있도록 그냥 읽는 것보다 복잡한 쿼리 선형 적으로 모든 것을 통해. 그래서 예를 들어, 이것은 우리가주는 것입니다 P-설정 일곱의 상자 밖으로 당신. 이것은 분명히 이상이있는 테이블 그 중 하나는 세 개의 열, 이름 중 하나는, 해시 다른 어느은 ID입니다. 그러나 흥미로운 것은, 단지에 여기에 생각을 애타게, 사용자 이름 바로, 아마도 이미 고유? 내 말은, 대부분의 모든 웹 사이트, 경우 당신은 거기, 이름이 두 시저스 수 없습니다. 두 malans가 될 수 없습니다. 두 jharvards가 될 수 없습니다. 독특한. 그렇지 않으면 몰라하는 jharvard 실제로입니다. 그래서도에 대한 동기 부여가 될 수 있습니다 왼쪽에서 세 번째 열을 갖는 과 같은 존재라는 ID, 마찬가지로 고유의 번호? 그것은 약간의 중복을 느낀다 첫눈에 날에. 왜 가지고 강력한 수 있습니다 뿐만 아니라 고유 한 사용자 이름, 고유 번호뿐만 아니라? 독자 : 그들은 가질 수 같은 암호를 입력합니다. DAVID 마란 : 사람들이있을 수 있습니다 같은 암호를 확인합니다. 즉, 절대적으로 일어날 수 있습니다. 그러나이 독특한 이름이있는 경우, I 그 정말하지 않는 주장 문제 때문에 그들이에 입력하면 자신의 사용자 이름 만 검사 할 필요가 자신의 암호, 그 자신의 해시입니다. 왜 또? 청중 : 빠른 탐색. DAVID 마란 : 빠른 탐색. 왜? 청중 : ID는 하나입니다. DAVID 마란 : ID는 하나의 문자, 또는 더 정확히 말하면, 그것은 다수의 정보, 그래서 아마 32 비트의 또는 그런 일. 반면에 사용자 이름, 분명히 제이슨 허쉬 호른의 최대 종류의가 엄청나게 긴, 그리고 것 문자열로 나에게 더 많은 시간을 어쩌면 H-I-R-S-C-H-H-O-R-N을 비교하고, 위해 같은 / 0 또는 뭔가, 반대로, 제이슨를 찾기 위해 단지 말을하는 것은 나에게 사용자의 두 번째를 제공합니다. 즉, 32 비트입니다. 그것은 하나 INT의 그 당신이 비교해야합니다. 그리고 사실, 그건 이유를 정확하게 데이터베이스 에 고유 ID를 할당하는 경향이 그 행. 이제 다른 데이터 유형은 무엇입니까가 분명히 INT 게다가 이 같은 문자열? 음, 더 적절한 될, 같은 SQL 데이터베이스, MySQL은, CHAR 필드가 있습니다. 그리고 CHAR 약간의 오해 하나의 CHAR 없습니다. MySQL 데이터베이스의 CHAR 필드는 하나 이상의 문자, 그러나 그것은의 문자의 고정 된 수의. 그래서 예를 들면, 나는에 갈 경우, 당신은 이미 나있다 phpMyAdmin을로 곧 문제가 일곱 설정, 그리고 난 갈 것이다 내 데이터베이스에, 그냥 재미를 위해, 의라는 새 테이블을 만들 수 있습니다 단지 두 개의 열 테스트합니다. 그런 다음 이동을 클릭합니다. 그리고 이것은 상당히 잘 될 것입니다 특히 어설프게로 자신의 주위에. 여기 내가 작성하는 ID를 입력 할 수 있습니다 int 형식의 새 테이블. 그러나 나는 여기에 사용자 이름을 입력 할 수 있습니다 그 이전 테이블을 다시 만듭니다. 그리고 난 전체 무리를 발견 유형으로 선택할 수 있습니다. 그리고 너무 이유 phpMyAdmin을합니다 어떤 좋은입니다. 그것은 자기 수업의 종류의 점에서 당신 단지 점의 종류 및 클릭 수 드롭 다운 메뉴를 살펴보고에서 추론 힘 SQL이 당신을주는 그 무엇. 그리고 실제로, 나는 CHAR 선택하면, 그때 길이, 또는 방법을 지정해야합니다 많은 값, 얼마나 많은 문자. 그래서 아주 일반적인 값은 같은 것들입니다 255,하지만 조금 오래이다. 일반적으로 사용자 이름 여덟입니다. 하지만 조금 작은이 일이다. 그래서이 디자인 결정이다. 그것은 8 자 최대이며, 32, 255, 1000? 그것은 당신에게 정말이다. 그러나 CHAR 필드는 고정 된 숫자입니다. 그래서 너무 적은 선택하고 어떤 종류의이야 당신은 더 이상 이름을 원하는 경우 놨어. 너무 많은 선택과 무슨 단점? 대상 : [들림]. DAVID 마란 : 그것은 낭비입니다. 당신은 더 큰 있다면, 그냥 C에서와 마찬가지로 당신이 필요로하는 것보다 메모리 청크, 당신이있어 그냥 시간을 낭비하고 공간을 낭비. 그래서 대안으로 존재 이 문제를 해결 VARCHAR, 아닌 고정 길이로 길이를 치료, 하지만, 최대 길이, 그리고 사용과 같은 문자의 가변 수를 선택한 다음, 당신이 많은 문자로만 사용하는 경향이 실제로이 필요합니다. 그 완벽한 소리. 우리는 왜 제거하지 않습니다 CHAR 데이터를 입력 한 다음? 의 단점이 될 수 있는가 VARCHAR에를 사용하는 소리 그것은 좋은 승리처럼? 그래? 대상 : [들림]. DAVID 마란 : OK, 좋아. 모든 데이터는 동일합니다 그래서 만약 길이 관심사는 무엇입니까? 대상 : 당신이 낭비 때문에 그들 모두를 말하여 데이터. DAVID 마란 : 모든 데이터는 그래서 경우 같은 길이,하지만, 내가 주장 그 최대 길이를 지정 VARCHAR에 다르지는 않습니다 CHAR에 고정 된 길이의 경우 지정 당신은 사전에 해당 번호를 알고있다. 그러나이 참으로, 나는 일종의 것이다 그 대답 현실에서 추출 최대, 수는 여전히이 있다는 것을 , 성가신, 특히 당신 의 사람의 이름을 발생 비정상적으로 오래 당신이하지 않았다 기대하고 있습니다. 그리고 그것은 또한 좀 덜 효율적이다 실제로 같은 VARCHAR에 검색 할 특히, 검색 문자, 반대 제비가 긴 테이블 데이터를 제공합니다. 그래서 여기, 너무 주제는 또 다시 분명한 선택의 여지가 없습니다. 그래서 당신에게 다른 감각을주는 관심의 대상이 될 수있는 데이터 형식 하나 P 세트 일곱이나있는 미래는, INT있다. BIGINT는, 거기에 어떤 오래 오래 같이있다. 그것은 64 비트 경향이있다. 당신은에서 볼 수 있습니다 DECIMAL이 있습니다 많이 문제 세트 문제 클리너 응답 우리 플로트에있어서 부동 포인트 부정확. 그리고 DATETIME있다. 이 데이터 형식은 그대로 있습니다 년, 월, 일처럼 보이도록, 그리고 시간, 분, 초. 그러나 SQL 데이터베이스는이 일 우리가 인덱스를 호출합니다. 그리고 색인 뭔가하고 있다는 에 테이블을 만들 때 지정 검색 및 기타 작업을 보다 효율적으로. 특히,라는 뭔가가있다 당신이 할 수있는 기본 인덱스 다음과 같이 선언합니다. 우리는 당신을 위해 이런 짓을 사용자 테이블 우리는 당신을 제공합니다. 내가 수동으로 다시 한 경우에 통지 주고 여기에 사용자 테이블 사용자는 이름입니다. 난 이미 ID를 지정했습니다. 내가 INT를 지정했습니다. 내가와 이름을 지정 최대 32 자. 그러나 우리는이 공정에서 스크롤을 유지하는 경우 넓은 창이있어 주목 나는 지정할 수있는 다른 것들의 무리. 하나는, 내가 속성을 지정할 수 있습니다 좋아, 당신은 무엇을 알고,이 INT는 UNSIGNED해야합니다. 나는 음수를 원하지 않는 그럼 그것을 UNSIGNED 만들어 보자. 널 (NULL)이 여기에 해당되지 않기 때문에 나는에 모든 사용자가 원하는 고유 번호가 있습니다. 나는 그것이 null이되고 싶지 않아. 하지만이 흥미 롭다. 나는 ID 중 하나입니다하도록 지정할 수 있습니다 기본이 데이터베이스의 키, 또는의 독특한, 또는의 색인, 또는 전체 텍스트입니다. 그래서 오늘의 목적을 위해 긴 이야기 이한다 그 짧은 PRIMARY 방법 두 개념 및 기술적 수 우리는 고유에 사용하는 필드 사용자를 식별합니다. 그래서 우리는 사용자를 볼 때,이 종류는 에 의해 주로 그들을 볼 수있는 약속 이 고유 식별자입니다. 그리고 데이터베이스를 지킬 경우, 당신 사용자 번호 3을 가지고, 당신은 할 수 없습니다 물리적으로 다른 사용자 삽입 같은 번호 3. 데이터베이스은 거부합니다 변경 사항을 저장합니다. 당신이 할 수 있기 때문에 어떤 좋은 일입니다 자신으로부터 자신을 보호합니다. 자기 또한, 사용자 이름. 그래서 두 번째 행, 리콜, 사용자 이름 필드입니다. 그래서 두 번째 행, 여기에 사용자 이름 우리는 지금까지이 왼쪽에 그랬던 것처럼. 그래서 또 내가 지정 할 수 있습니다? I는 SQL에 따르면, 허용되지 않아 두 개의 기본 키를 지정합니다. 당신은 당신의 공동 키를 지정할 수 있습니다 두 필드를 봐,하지만 그들은 할 수 없습니다 개별적으로 기본 키합니다. 그래서 밖으로 질문입니다. 그래서 선택 할 수도 있습니다? 음, UNIQUE는 정신 비슷 당신이 지정하는 기본 키 필드는 유일해야한다, 그러나 그것은의 하나 될 수 없습니다 나는 모든 시간을 사용합니다. 그리고 우리는이 하나를 사용하지 않을거야 또 어떤 이유로 시간? 경우에 잠재적으로 느린 그것은 긴 이름이다. 그것은 단지 시간 낭비. INDEX는, 그 사이에, 그것의 것을 지정 고유 한 것,하지만 내가 좋아하는 것 없습니다 당신은 아래에 당신의 마술을 작동하는 더 빨리 나를 위해 할 수있는 후드 이 필드에 검색 할 수 있습니다. 그래서 이것은 아마 여기에 관련이 없습니다. 사용자 이름, 나는 주장하는 것 UNIQUE 좋은 대답이다. 그러나 우리는 더 많은 사용자를 만든 가정 단지 사용자 이름보다 재미있는, 해시 및 ID 번호. 우리가 사람들에게 전체 이름을 주면? 우리는 그들에게 주소를 준 경우는 어떻게 그리고 그들에 대한 다른 데이터? 물론, 경우에 당신은 지정이의 열 데이터베이스 색인, 즉 의미 MySQL은, 또는 오라클, 또는 어떤 데이터베이스 당신은 마술을 작동합니다, 사용하는 공상 데이터의 어떤 종류를 사용 나무, 또는 트라이, 또는 같은 구조 해시 테이블 또는 보증하는 것이 당신이 사용하여 데이터를 검색 할 때 특정 필드를 선택합니다 - 같은 날 모두에게 보여 그 옥스포드 스트리트 (Oxford Street)에 살고있다. 같은 쿼리. 당신은 사전에 지정한 경우 그 해당 필드에 인덱스를 원하는, 검색은 훨씬 더 빨리, 훨씬 더 될 것입니다. 당신은 인덱스, 최선을 지정하지 않는 경우 당신이 할 수있는 선형 검색하는 경우입니다 그것은 분류 아니에요. 하지만 당신은 INDEX, 스마트을 지정하는 경우 데이터베이스를 만든 사람들 - 지금은 나무를 알고 당신 같은 사람 그리고 시도 및 해시 테이블 - 자동적으로 데이터를 구축 할 것 있는지 확인하는 RAM의 구조 그 검색이 훨씬 빠릅니다. FULLTEXT는 한편, 정신 비슷 그러나 와일드 카드를 수행 할 수 있습니다 검색, 같은 날 모두에게 보여 그 로 시작하는 거리에 살고있다 어떤 이유에서 편지 O. 와일드 카드 검색을 수행 할 수 있습니다 그런. 또는, 쇼 같은 더 강력한 것들 저 단어가 모두 - 나에게 그 이름이 시작하는 모두에게 보여 특정 문자로. 당신은 키워드를 검색 할 수 있습니다 이러한 방법. 좋아. 따라서, 디자인 기회 이 잠재적으로. 다른 사람이 있다는 것을 나는거야 나의 손을 흔들어. 그것은 당신이 할 수 있다고 밝혀 다른 스토리지 엔진. 그리고 이것은 우리가 필요로하는 것보다 더 많은 비전입니다 확실히 문제에 대한 일곱을 설정합니다. 기본적으로 사람이 사용하는 이노라는 것을. 당신은이 곳의 언급을 볼 수 있습니다 phpMyAdmin과의 인터페이스 대부분. 그러나 다른 디자인이 있다는 것을 알고 잠재력으로 의사 결정 관심은 최종 프로젝트를 올 경우 당신은 웹 기반의 작업을 수행합니다. 그러나이 해 보자. 이제 가서에 이것을 넣어 보자 이야기에 대한 맛보기로 화면 당신을 포함, 룸메이트, 우유의 유리. 의는 2 분을 보자 또는, 그래서 여기에 휴식. 당신이 주변에 찌를 수 있다면, 이제 오게 다시, SQL에서 좀 더보고, 다음과 자바 스크립트의 비트 P-설정을 염두에 여덟. 좋아. 그래서, 당신이에 대해 생각하자 아주 쉽게 발생할 수있는 코너 케이스 데이터베이스를 사용하여, 또는 문맥 솔직히, 심지어 실제 물건을 사용하여 ATM은 돈을받을 것을 좋아합니다. 그래서 여기에 냉장고입니다. 당신은 너무 한있어 가정 기숙사 나 집. 그리고 당신은 하나의 룸메이트, 모두의있어 당신은 정말 예를 들어 우유를 좋아한다. 그래서 어느 날 클래스에서 집에 와서. 그 또는 그녀는 아직 돌아 오지. 당신은 냉장고를 엽니 다. 당신은 정말 우유의 큰 유리를 원한다. 어떤 우유가 없습니다. 그래서 당신은 무엇을해야합니까? 당신은 냉장고를 닫습니다. 당신은 당신의 키를 잡아. 당신은 광장에 나가. 그리고 당신은 그에서 CVS에서 줄을 얻을 셀프 체크 아웃 것들, 어떤 항상 이상 실제로보다 오래 걸릴 출납원 데. 여하튼. 그럼, 그 사이에,, 점 점 점 당신의 룸메이트가 집에 와서 그 또는 그녀 마찬가지로 열망을 가지고 일부 우유. 그래서 그 또는 그녀는 냉장고를 엽니 다 내부보고, 오, 빌어 먹을. 아니 우유 없습니다. 그래서 그 또는 그녀가 밖으로 머리는 갈 일이 만 있던 다른 CVS에 어떤 이유로 거리에 차단하고, 그 또는 그녀는 우유를 구입하는 줄을 가져옵니다. 그 사이에, 당신은 그가 집에 와서 또는 그녀는 집에 와서, 그리고 무엇 당신은 궁극적으로이? 두 배의 우유. 하지만 당신은 정말 싫어 우유 많이있다. 그래서 지금 당신은 지금 너무 많은 우유가 그 중 하나가 바로 신 갈 것입니다 결국. 그래서 이것은 정말 나쁜 문제입니다. 오른쪽? 그래서 무슨 일이 있었습니까? 그래서 기본적으로,이 종류 말도 안되는 예. 하지만 후드 아래에, 우리는 무엇을 했어 여기 발생하면 모두 체크 일부 조각의 상태 메모리, 냉장고. 당신의 두 상태를 확인 일부 변수. 둘은 결론을 끌었다 그런 다음에 행동 것을. 그러나 불행하게도, 동안 룸메이트 가게에 있었다, 그 상태 변수 변경, 그 또는 그녀가 돌아왔다 현재 상태를 변경하고자하지만 이미 변경 한 것 그 또는 그녀에. 그리고 물론, 그 또는 그녀는 없을 것 그들이 알고 있다면 가게에 갔다 당신은 도중에 이미 있다고. 그래서 현실 세계에서, 당신은 어떻게 할 수 당신이 가정,이 문제를 방지 냉장고, 당신은 룸메이트가, 당신은 실제로 우유를 좋아하세요? 청중 : 통신. DAVID 마란 : 통신. 확인을 클릭합니다. 그러나 당신은 어떻게 의사 소통을 할 수 있습니까? 대상 : 메모를 남겨주세요. DAVID 마란은 : 오른쪽 메모를 남겨? 항상을 위해 메모를 남겨 쇼의 팬. 바로 모든 있으므로 항상 메모를 남기거나, 자물쇠 또는 뭔가처럼 진정으로 넣어 당신을 유지하는 냉장고에 의 상태를 검사에서 룸메이트 그 변수. 자, 왜이 밀접한 될 수 있습니다 문제 세트 일곱, 또는 ATM을합니다. 음, ATM 곳에서 세상을 상상 당신은 ATM까지 갈 수 있습니다 여기에 기계, 여기에 또 다른 ATM. 그리고이 자주 발생합니다. 그리고, 두 개의 ATM 카드를 있다고 가정 어느 얻을 수있다. 그리고 당신은 두 시스템에 로그인 효과적으로 동시에 희망 아무도보고되지있는 동안. 그리고 당신은 당신의 PIN을 입력 거의 동시에. 그리고 당신은 균형 쿼리를 수행 당신이 얼마나 많은 현금을 볼 수 있습니다. 합시다 당신이 100 달러를 가지고 있다고 귀하의 계정에 남아. 그래서 본질적으로 동시에 당신 하나를 말하자면, 제로, 제로, 입력합니다. 그리고 당신은 잘하면 돈을 돌려받을. 하지만 다시 얼마나 많은 돈을받을 수 있습니까? 하루의 끝에 지금은 컴퓨터, 그들이 이야기하고 특히 서버는 반드시 일을하지 않 순서대로 해당이 예상있어. 그렇게 때문에, 무슨 가정 거기에 어떤 네트워크 속도 문제 , 또는 거기에 CPU의 문제, 또는 그런 아무것도, 가정이 최초의 ATM은 균형을 확인합니다 보고, 오,이 사람은 $ 100이 있습니다. 하지만 산만됩니다 아마 때문에 백업이 일어나고있다 그리고 그것은이다 둔화. 아니면, 네트워크를 확인하면서 연결은 약간 느린 가지고 있기 때문에 이것은 단지 발생합니다. 그들은 물리적 장치입니다. 그래서 그 사이에, 두 번째 ATM은 같은 질문을. 다윗은 얼마나 많은 돈을 가지고 있습니까? 대답은 $ 100. 하지만 첫 번째 ATM은 아직 가지고 있기 때문에 메시지가 모두 $ 100 빼기 보낸 현금 인출기는 은행의 금고를 검사했다 100 달러가있어보고, 그리고 지금 두 시스템은 잠재적 있습니다 대답을 뱉어 것. 지금이 어떤 의미에서 당신을 위해 중대하다 은행이 궁극적으로 무엇을하면 에 의해 마이너스 100의 양을 변경합니다 사용자에 해당 변수를 설정 0이 은행 계좌로 반대 100 마이너스하고 있습니다. 이제 은행에 대한 최악의 경우 - 또는 은행 제일의 사이에, 그들은 당신에게 $ 200주고, 귀하의 은행 계좌는 이제 음을 보여줍니다 정말하지 않는 $ 100 모두에서 당신을 혜택을 누릴 수 있습니다. 그러나 요점은이 경기 두 룸메이트를 얻는 조건 우유, 한 두 ATM은 현금을 얻으려고 와 볼트의 상태를 변경 동시에 모든 존재 시간은 당신이 데이터베이스가 있습니다. 지금 문제는,이 문제를 일곱 설정 의미에서 발생하는 경우를 구입하는 경우 다음 페이스 북 주식의 공유 및 용 예 당신은 두 번째 구매하기 공유 페이스 북의 주식은, 당신이해야 할 프로그래머로 결정. 을 업데이트하는 방법을 결정하기 위해, 데이터베이스 확률 당신은 거 야 수 있습니다 하나 그 주식에 대한 행이 있습니다 그것을 구현하는 한 방법입니다. 그리고 당신은 한 몫을해야 할 것입니다 그들의 주식 시세 상징 FB, 이 사용자 이름, 또는 사용자에 대한 ID, 고유 식별자입니다. 하지만 같은 이야기는 여기에서 발생할 수 있습니다. 당신이 볼 수로서 당신은, SQL에서 SELECT 경우 당신이 볼 때 문제에 일곱 설정 오, 데이비드 하나의 점유율을 가지고 페이스 북 주식. 나 이제 이주가 수 있도록이 변경할 수 그는 사고 싶어하기 때문에 두 번째 공유 할 수 있습니다. 그러나 다윗은 실제로 두 있다고 가정 브라우저 창을 열고, 또는 가정이 그것은 두 배우자와 공동 계좌의 그리고 둘 다 수행하려고 같은 작업도도 가능성이 될 수있는 결정을 위해 존재 이전에 기초를 두어 세계의 국가 - 계정을 하나의 점유율을 가지고 - 지금은 두 사람 또는 두 서버, 이주로 증가 말하려고합니다. 그러나이 경우에, 당신은 위탁 수도 나를 두 공유를 위해 돈 있지만, 그냥 한 번 증가합니다. 그래서 짧은, 근본적인 문제 여기를 떠나는에 대한 농담과 마찬가지로 주의, 또는에 자물쇠를 가하고있다 만약 두 사람 또는 두 개의 스레드 - 스크래치 다시 생각한다 - 일부 변수의 상태를 검사 할 수 있습니다 그리고 그 변수를 변경하려고 그러나 그 두 가지에서 발생하지 않습니다 동시에이 중단받을 수 있지만 다른 일들이 발생하여 데이터를 수 매우 이상한 상태로 얻는다. 그리고 당신은 혜택을 누릴 수 있습니다 또는 당신은 고통을 수 돈을 예제 의미합니다. 그래서 문제 세트 일곱, 우리는 당신을 제공합니다 이 코드 한 줄, 긴 짧은 이야기,이 해결 MySQL에서 문제가 발생합니다. 하지 않는이 매우 긴 명령어 도에 한 줄에 맞게 여기에 화면이 보장 당신의 작업 원자라는 것입니다. 그것은 한 번에 발생, 또는 전혀 발생하지 않습니다. 이 매우 긴 구절은 할 수 없습니다 부분적으로 중단됩니다. 그리고 그것이 무엇 문자 그대로 그것은 말하는. 일부 테이블에 다음을 삽입 세 개의 필드를 해당 특정 값, 하지만 중복 키에, 삽입하지 않습니다. 업데이트를 수행합니다. 그래서이 SELECT와 일을 같이입니다 동시에 말하자면 삽입합니다. 그리고 아마 키는 무엇인가 여기에서 참조되는? 그것은 밝혀, 당신은이를 볼 수 있습니다 문제는, 일곱의 사양을 설정하기 때문에 우리는 고유 키가있을 선언했습니다 이 특정 테이블에 같은 그 여러 행을 가질 수 없습니다 와 같은 사용자에 대한 같은 페니 주식 기호 - 여기이 예에서, DVN.V입니다 바보 페니 주식 우리 사양에 참조하십시오. , 우리가 고유하게 선언했습니다 때문에 이것이 의미하는 것은 당신에게 경우 중복 행을 삽입하려고하면 야 대신없이 업데이트 예정 다른 사람이 변경할 수있는 기회를 갖는 하나는 세계의 상태. 그래서 짧은에, 이렇게하면 가지 원자이다. 더 일반적으로하지만, 데이터베이스 MySQL은 같은 - 당신은이 기능을 필요로하지 않는다 일곱 P-설정하지만, 염두에 보관 미래 - 거래라는 것을 지원 당신은 말할 수 말 그대로 트랜잭션을 시작. 그런 다음 실행할 수 있습니다 두 SQL 문. 당신이 볼 수 있듯이 SQL 문 P-설정 일곱, 조금 보이는에서 다음과 같이. 테이블이라는 계정을 업데이트합니다. 무엇에 해당하는 잔액 항목을 설정 균형 열 현재 1,000 마이너스 여기서 숫자 사용자 ID와 같은 계좌 번호, = 2, 다음 업데이트 계정이 점 점 점. 그래서 쉽게 설명하자면, 어떤 않는이 두 쿼리에 일을 할 것 은행의 실제 의미? 청중 : 저축 전송. DAVID 마란 : 그렇지. 하나에서 자금을 전송 다른 계정. 그리고 이것은 또 다른 예입니다 당신 정말이 두 가지가 발생합니다 또는 발생하지. 당신은 무언가에 싶지 않아 그들 가운데 잠재적으로 엉망 수학, 또는 엉망으로 얼마나 당신이 돈, 또는 얼마나 많은 돈을 은행이 있습니다. 그렇다면 거래에 대해 정말 좋은 데요 MySQL에서 즉,과 더 일반적으로 데이터베이스이며, 그들이 및 구현 한 스마트 사람들 이러한 기능을 확인하는 방법을 알아낼 그 일이 모두 발생해야 또는 전혀. 그리고 당신은 진정으로 만들기 위해 야심 찬 경우 사람들에 의해 사용되는 웹 사이트 캠퍼스, 현실 세계에서 사람들은 일을 시작의 의미에서 무엇인가, 이러한 종류의 수 있습니다 디자인 결정이 아무리 중요하게. 그렇지 않으면, 당신은 손실, 데이터가 손실 시작 사용자, 또는 최악의 경우 우리는 잠재적으로, 여기에 본 적이 돈을 잃게됩니다. 그래서 다시, 더 많은 것을에 문제 설정 칠뿐만 아니라, 아마도 몇몇위한 최종 프로젝트에서 당신. 그럼 우리가 가진 그 사진을 변경할 수 하나 이상의 방법으로 전 잠시. 그래서 내가 할 수있는 경우에 저 실제로 보자 - 아니, 그가 사라 졌어요. 저기있다. 우리가 마지막으로 남아 곳이야. 그리고 그것은 우리가 던져거야 밝혀 여기에 믹스에 한 가지 더 - 자바 스크립트라는 언어. 따라서 자바 스크립트는 실제로 맞는 이 조각에 - 나는 아주 충분한 공간을 남기지 않았습니다, 그래서 이것은 확장 지금은 아닙니다. OK,이 정말 애처 롭다. OK, 그래서 자바 스크립트입니다. 괜찮아요. 난 정말 그것을 학대하고 있어요. 괜찮아요. 따라서 자바 스크립트는 다른 프로그램입니다 언어, 우리의 마지막, 그 도움이된다면 더는 존재하지 않는다는 것이 안심 여기 소화전의. 따라서 자바 스크립트는 해석이다 당신이하지 않는 것을 의미 언어, 0과 1로 컴파일. 당신은 그것을 실행합니다. 하지만이 근본적으로 다르​​다 자바 스크립트는 일반적으로 당신에게 그 웹 서버에서 실행되지 않습니다. 그것은 실행되지 않습니다 제품 자체. 오히려, 그것은 사용자에 의해 다운로드되는 브라우저에 HTTP를 통해 - 크롬, 사파리, 인터넷 익스플로러, 파이어 폭스, 무엇이든 - 그리고이를 실행하는 브라우저의 특정 프로그래밍 언어입니다. 그래서 명확하게, PHP는 지금까지왔다 명령 행에서 하나를 실행 서버에 우리의 검은 색과 흰색 창 기기, 컴퓨터 등 제품을 좋아하거나이되었습니다 웹 서버에 의해 실행될 컴퓨터에서 실행. 하지만, 여기에 주제는 지금까지 그 PHP입니다 서버 측 실행, 그래서 한 사용자와 사용자의 브라우저 PHP 코드의 라인을 결코 볼 수 없다. 사실, 당신은 영원히 브라우저를 열면 귀하의 웹 사이트 또는 다른 당신 실제로 윈도우에서 PHP 코드를 참조 누군가가 엉망입니다. 그것이 될 운명이 아니니까 직접 브라우저로 전송. 그것은 실행 및 설정을해야하는데 HTML과 같이 넣습니다. 그러나 자바 스크립트는 본질적으로 반대. 그것은 일반적으로 내부 실행 의미하는 것 사용자의 브라우저 창. 그리고 웹 사이트의 종류 사용 자바 스크립트 다음 요즘? 말 그대로 모든 인기있는 웹 사이트 등을들 수있다. 모든 웹 사이트가 너희들 아마 을 위해 자바 스크립트를 사용하여 매일 사용 간단한 심지어 매력적인 기능을 제공합니다. 그래서 페이스 북과 같은 당신이 그것을 사용하는 경우 채팅. 어떻게 그런 일이 실제로 작동합니까? 그럼 지금까지, 재료는 모두 우리했습니다 HTML로 수행 및 PHP는 가정 , 당신은 URL을 당겨, 당신은 Enter 키를 누르십시오 당신은 약간의 HTML 콘텐츠를 참조하십시오. 그리고 당신은 변경 링크를 클릭 URL는, 페이지를 변경하고, 다시로드 새로운 콘텐츠. 다른 URL을 클릭하거나, 폼을 제출 다른 페이지로 털과 기회 당신은 몇 가지 새로운 내용을 참조하십시오. 그러나 페이스 북 채팅과 같은 것을 사용하여, 또는 Gchat, 또는 Google지도, 드물게 전체 페이지는 것을 새로 않습니다 당신은 흰색 화면이 순간적보고 다음 새로운 콘텐츠. 오히려, 웹 페이지는 현재 동적 아르 다시 업데이트하고 점점 또 다시 모든 종류 의 장면 뒤에. 그리고 그것은 밝혀 당신은 이동 않는 경우 페이스 북, 또는 Gchat 같은, 또는 Gmail, 페이지 업데이트 자동으로 다시로드하지 않고 전체 화면이, 무슨 일이 있었는지입니다 브라우저가 일종의 몰래했다 추가 HTTP 요청 - 하지 전체 웹 페이지에 대한,하지만 단지에 대한 같은 데이터의 작은 덩어​​리, 인스턴트 메시지 당신의 친구 단지 당신이, 또는 상태 업데이트를 전송하는 누군가가 당신, 또는 트윗을 전송 누군가가 그냥 보냈다. 그것은 단지에 대한 약간의 요청을 만들고있다 데이터하고 자바, 이것을 사용 프로그래밍 언어는 무엇을 변경하려면 웹 페이지가없이 보이는 서버 서버없이, 도움 그 HTML을 생성하는 단계를 포함한다. 그래서 한마디로, 자바 스크립트는 사용할 수 있습니다 에서 데이터 업데이트를 할뿐만 아니라, 전체를 다시로드하지 않고 서버 페이지 또는 양식을 제출. 또한 변경하는 데 사용될 수있다 소위 DOM - 문서 객체 모델 - 어떤만을위한 멋진 방법입니다 HTML의 나무를 말 우리는 지난 시간을 보았다. 그래서 안심하기 위해, 자바 스크립트입니다 구문 때문에 C와 유사한뿐만 아니라. 더 주요 기능은 없습니다. 당신은 코드를 작성 시작 그리고 실행, 또는 얻을 것이다 더 제대로 해석. 조건은 다음과 같이 표시됩니다. 어떤 C에서 다른하거나 그 문제에 대한 PHP. 부울 식 또는 혼성 함께 다음과 같이 표시됩니다. AND로는 다음과 같습니다. 스위치는 다음과 같이 표시됩니다. 루프는 다음과 같이 표시됩니다하십시오. 루프는 다음과 같이 표시됩니다 동안. 루프는 다음과 같이 표시됩니다 동안 수행합니다. 이 새로운 기능입니다. 그래서 자바 스크립트에 foreach하지 그 자체를 구성하지만,이 구조 이 가변 배열의 난, 그리고 난 경우는 인덱스 값이됩니다. 그래서 그것과 조금 다르다 foreach는하지만 새 버전의 자바 스크립트는 항상 나오고있다, 그래서 심지어 이러한 언어 기능 진화하고있다. 그리고 옆으로, 자바 스크립트를 요즘으로 또한 마찬가지로 서버에 이용 될 수있다 PHP는 Node.js.라는 프레임 워크를 사용하여 CS50의 TF가, 케빈 중 하나를 주도하고있다 에서 사용할 수의 Node.js 세미나 cs50.net/seminars. 당신이 궁금 그렇다면, 알고 당신에게 그 서버 사이드로 이것을 사용할 수 있습니다 잘하지만, 상당히 최근의 추세입니다 하지만에서 강력한 한. 이 약간 다릅니다. 이것은 자바 스크립트의 배열입니다. 그리고 어떤 다른 당신을 공격 C 나 PHP 대? 몇 가지 간단한 이야기​​가있다 우리는 여기에서 알 수 있습니다. 어떻게 PHP 대 실종? 청중 : [청취]. DAVID 마란 : 예? 죄송합니다, 다시 말? 청중 : 선언되지 않음 변수의 유형입니다. DAVID 마란 : 우리는 선언하지 않을 변수의 유형입니다. 그래서 사실은 꽤 PHP와 같이, 우리는 아니에요 이 변수의 타입을 지정. 오히려, 우리는 일반적입니다 변수에 대한 말을 VAR. 우리의 PHP의 불편이 없습니다 달러 기호, 어떤 지루한에있는 동안 유형은 더 명확 있는지 확인 않습니다 뭔가가 변수입니다. 여기 반면, 우리는 종류의 뒷면에있어 바로 호출하여 C의 접근 방식 우리가 원하는 이름으로 변수 숫자처럼, 그것은을 제공합니다. 또한 PHP와 같이, 우리는이 에 대한 대괄호 그 배열 안에 값. 자바 스크립트에 따라서 변수도 다음과 같을 수 있습니다. 이의라는 문자열을 여기에 주목, 그러나 마찬가지로 우리가 지정하지 않은 그것은 문자열 있다고. 여기에 생각하지 않는 기능입니다 PHP에서 동일하게 존재 하지만 약간의 유사. 이것은 자바 스크립트의 개체입니다. 그리고 객체 종류의 스위스 군용 있습니다 당신의 데이터 구조의 칼 관광 명​​소의 번호를 사용할 수 있습니다. 여기에, 예를 들어, 우리는 선언입니다 변수는 인용했다. 그 변수의 유형 개체입니다. 당신은 C 구조체로 생각할 수 있습니다 그 키와 값을 가지고 있습니다. 기호 키입니다. FB는 분명히 값 주식 기호. 쉼표. 가격은 또 다른 핵심이며, 그 값은 외관상으로는 부동 소수점, 또는 더 일반적으로의 번호 $ 49.26의 자바 스크립트. 그래서 PHP는 없습니다 - 우리는 아주 PHP 객체에 보지 이 같은, 그러나 우리는 아날로그 봤어 무슨 일이있는인가? 청중 : [청취]. DAVID 마란 : 연관 배열. PHP는 연관 배열을 가지고있는 반면 따라서 누구의 구문도 약간 그렇습니다 다른 - 우리는 대괄호를 보았다. 우리는 이상한 화살표 기호를 보았다. 자바 스크립트 객체를 가지고 있지만,이는 대부분의 의미 차이 지금은 다른 동의어. 그러나, 옆으로, PHP는이 방식으로 개체하는 자바 및 기타 언어의 개체가 객체 지향 프로그래밍. 그러나 우리는이를 사용합니다 지금은 데이터 유형에 대한. 개체 및 연관 배열. 이 하나는 만들 수 있습니다 좀 더 명확. 개체가 유용한 이유는 여기에 있습니다. 당신은 학생을 선언 할 때, Zamyla처럼, 우리가 실제로 할 수 그래서 내부 말을 캡슐화 처럼 중괄호를 사용하여 객체 키를 왕창 전에 여기에 값. 우리는 ID, 집, 이름이 등 뒤에 세미콜론 Zamyla, 끝에 보통. 여기 아래도이 약간 다른뿐만 아니라, 매우 강력한 요즘. 여기에 배열, 그리고 내가 알고 있기 때문에 대괄호까지이있다 위쪽 및 대괄호 맨 아래에. 그리고 이것은 어떤 데이터의 배열 자바 스크립트 외관상으로 입력? 이것은 모양의 배열 세 개체처럼. 그리고 나는 그것이 개체를 알고 만 중괄호 때문에. 그리고 열린 중괄호가의 통지 몇 가지 물건, 닫기 중괄호, 쉼표, 다음 몇 가지 더, 쉼표, 그리고 좀 더. 그래서 세 가지 인수의 두 개의 쉼표로 구분. 그래서이 세 개체의 배열입니다. 그리고 그 각 개체는 것으로 나타납니다 일부 학생이나 교직원 정렬 각각의 ID와, 집 및 이름. 하지만이 뭔가라는 것 JSON이라고 - 자바 스크립트 객체 표기법. 그리고 이것은 실제로 데이터 형식입니다 그래서 매우 인기있는입니다 유행 요즘 당신이 작성하는 경우 그 페이스 북을 사용하는 응용 프로그램 API, 트위터 API, 정말 거의 거기 어떤 API 요즘, CS50의 자신의 일부를 포함 당신은 다시 데이터에없는 오래된 학교 CSV 형식입니다. 때문에 리콜하는 CSV 슈퍼 간단합니다. 그것은 단지 열을 분리 쉼표로. JSON 데이터는 더 많은 메타 데이터를 제공합니다. 모든 값 때문에와는 연관 키를 그들은 단지 가정 할 필요가 없습니다 0 번째 열에는 하나의 값 열입니다 또 다른 한개이고, 두 번째 열에는 또 다른 것입니다. JSON 오브젝트의 모든 여기 일종이다 자기 - 설명, 각 때문에 이 파일의 이름 중 하나는 그대로있다 로 그것의 앞에 이름 문자열을 인용. 그러니 살펴 보자 여기에 예제 몇 가지. 저 장비로 가자. 나 우리의 가상 호스트에 가자 공중에 디렉토리에 있습니다. 그리고 나에 가자 자바 스크립트 디렉토리에 있습니다. 그리고하자 가서 열어 DOM은 단지 의미 DOM-0.html, 문서 객체 모델. 그것은에 나무 물건의 아까 언급. 나 다음을 제안 할 수 있습니다. 여기에 그 웹 페이지의 몸은 매우 간단하다. 그래서 여기 아래 하단에있는, 나는 양식을 알 수 있습니다. 우리는 그 전에 봤어요. 그것은 두 개의 입력,가 그 중 하나입니다 이름 ID는 하나의 유형이있다 제출하고 첫 번째 하나의 유형은 텍스트입니다. 그래서 이것은 실제로 매우 간단 소리. 의 여기 가자. 의 여기이 페이지로 돌아 가자. 의 localhost를에 가자,하고로 이동 우리의 스크립트 디렉토리 및 이동 DOM-0, 그리고 여기 우리는이 양식이 있습니다. 그래서 분명히의 모든 페이지는 않습니다. 그와 함께 이름 필드가 버튼을 제출합니다. 하지만 여기에 PHP를 사용하지 않을거야. 나는 모든 클라이언트 측 할거야 그래서 다음과 같이 자바 스크립트로 말할 수 있습니다. 나는 실제로 이름을 준 것을 알 수 독특한이 입력 필드 식별자, 그 사실 것 순간에 좀 시간을 절약 할 수 있습니다. 그리고 다른 태그를 도입 한 알 내 웹 페이지의 머리에,  태그입니다. 그래서 자바 스크립트입니다 이러한 의미에서의 클라이언트 측 프로그래밍 언어입니다. 이 경우, 단지 CSS처럼, 내가 넣었습니다 그것은 바로 안에 내 HTML의. 하지만 함수를 선언 한 발견 PHP처럼 조금 보이는 구문, 그러나 이것은 실제로 자바 스크립트 때문에 다시, 그것은이다 브라우저에서 클라이언트 측. 그리고이가 무슨 생각 가지고 , 구문 비록 몇 가지 작업을 수행 여기에 새로운 기능입니다. 대상 : 누구에게 인사. DAVID 마란 : 그것은 인사거야 이 페이지를 누구를 방문 할 수 있습니다. 어떻게? 통지 그래서, 자바 스크립트 밝혀 경고 () 함수가있다. 이 슬픈 기능의 아주 종류이다 정말은 사용자를 귀찮게하는 경향이있다. 그것은 당신이 정말 사용해야 하나 아니에요 일반적으로, 그러나 신속하고 더러운 뭔가를 인쇄 종류의 방법 그래픽 사용자에게 브라우저의 인터페이스. 내가있어 그 여기에 주목 작은 따옴표 문자열입니다. 그것은 밝혀 그 C, 자바 스크립트와 달리 실제로 당신은 하나를 사용 가질 수 따옴표, 솔직히 그냥 일종의 사이 문체 대회 자바 스크립트 프로그래머 작은 따옴표를 사용합니다. PHP는, 실제로는 약간이 다른 의미. 하지만 지금은 그냥 알고 그 유일한 이유이다. 자바 스크립트 규칙에 자주 작은 따옴표를 사용하지만, 우리가 사용할 수 뿐만 아니라 두 곳에서 따옴표. 그래서이 재미있다. 우리가 그것을했던 지난 시간을 기억 나무를 그린 화면 사진 당신은 HTML 노드 및이 있었다 위치 헤드 노드, 몸 노드 그리고 일부 텍스트입니다. 그러나 하나의 특별한 노드가 있었다 나는 문서를 호출 한 맨. 잘, 그것은 자바 스크립트에서 어떤 밝혀 자바 스크립트에서 프로그램을 작성할 때 브라우저에서, 당신은에 액세스 할 수 있습니다 특별한 전역 변수. PHP의 슈퍼 전역에 정신 유사하게, 이 하나에서 호출됩니다 모두 소문자 문서입니다. 그것은 구조체처럼하지만,이 구조체 또한 내부 기능을 가지고 있습니다. 그래서 C 구조체은 일반적으로 데이터가 있습니다. 이 같은 자바 스크립트 객체 만 기술적으로도 기능을 가지고있다, 달리 방법으로 알려진, 그것의 내부. 그리고 당신은 내부의 함수를 호출 할 수 있습니다 이 객체는 말 그대로 그 일을 이름, 점, 다음의 이름 함수 또는 메서드를 다시. 정말, 그냥 동의어이다. 이 기능은 무엇입니까? 당신은 이름에서 추측 종류의 수 있습니다. ID에 의해 요소를 가져옵니다. 그래서 이것은, 웹 페이지를 검색 할 것입니다 찾고, 그 나무를 검색 어떤 노드 AKA 요소가 견적 맺다 이름의 고유 ID입니다. 그리고 무엇을 내가 할 것입니까? 나는 내부의 값을 가져 오는거야 이 트리의 노드, 나는 갈거야 어떻게 든 이름으로 인사합니다. 그래서 우리는하지 했는데도, 추측을 아직 본 적​​이, 무엇을 더하기 기호는 여기와 여기에 아마 의미? 청중 : 연결합니다. DAVID 마란 : 연결합니다. 마우스 오른쪽 단추로, 이들은 단지 종류의 의사 결정을 설계 사람들이 년 전했다. PHP에서는 연결할 점이있는 것을. C에서, 당신은 몇 가지 농구를 통해 점프 strcopy 같은 기능을 () 또는 전화 strcat와 () 또는 다른 같은 기능을합니다. 그러나 자바 스크립트에서, 당신은 플러스를 사용합니다. 그래서 이것은 단지 연접된다 세 개의 문자열 - 안녕하세요, 이름, 다음 느낌표. 그럼 언제 그리고 왜이 기능은 비록라고? 음,에서 추측을 하단의 HTML. 왜라는 () 인사, 또는 언제? 분명히, 베스트로 나는에 알 수 있습니다 이 양식을 제출하면, 제출, 나는 무엇이든 할거야 이 따옴표의 내부. 특히, 내가 전화하려고 해요 인사 () 한 후 false를 반환합니다. 그럼, 무엇을 그물 보자 효과는 여기에 처음이다. 그래서 내가 가서 입력하자 말하자면, 로렌, 제출합니다. 로렌 안녕하세요. 어쩌면이 그냥 있다면 보자 행운의 구현입니다. 아니. 그래서 밖으로 입력 뭐든간에 실제로이 둘의 이름을 지정합니다. 하지만 변경하지 않는 무엇을 알 수 있습니다. URL은 여전히​​ DOM-0.html입니다. 더 register.php가 없습니다. 더 번째 파일은 없습니다. 아무 작업의 속성은 없습니다. 그래서이 반환 거짓 아마 일을? 이유는 다음 인사 호출 () 및 AM 아마 false를 반환? 클릭 할 때 어떤 일이 일반적으로 발생 심지어 우리가이 양식에 제출 지난 주에 본 적있어? 청중 : [청취]. DAVID 마란 : 그것은 바로, 어딘가로? 그것은 어떤 대상 URL로 이동합니다. 하지만 난 여기에 발생하지 않습니다. 내 웹 페이지가 완전히되고 싶어요 일단 당신이있어 Gmail은, 같은 동적 , 당신은 거기에있어. URL은 방법이 변경되지 않습니다 전체 페이지를 다시로드 나타냅니다. 오히려, 내가 뭔가를 변경하려면 뭔가를 인쇄 등 여기에 화면에. 그럼 내가이 청소하자 위로 조금. 내가하지 DOM-0를 열겠습니다 만, 나 DOM-2를 열 수 있습니다. 그냥 그래서 당신은 여기에 몇 가지 구문을 본 적이있다. 그것은 밝혀 그 무엇을 우리 단지 원시 자바 스크립트를 사용했다. 그래서 이것은 진정한 언어 자바 스크립트. 여러분 중 일부는 알고 있습니다 jQuery를 호출 라이브러리. 그래서 jQuery를가 동일하지 않습니다 자바 스크립트와 같은 것. 그것은 정말 똑똑 단지 도서관의 사람이 쓴 대중화 등 지금은 세계에서 거의 모든 사람 자바 스크립트를 사용하는 경우 jQuery를 사용합니다. 그리고 첫눈에, 정직하게, 그것은 좀 더 비밀 보인다. 하지만 당신은 당신이 가고, 특히 찾을 수 있습니다 이 웹과 최종 프로젝트 개발, 당신​​은 찾을 수 있습니다 그이 물건을 정리하고 당신에게 꽤 저장 몇 줄의 코드. 그래서보기에 그냥 눈을하게하는 방법 이 양식이 작동하고 있습니다. 나는 분명히 무엇을 제거 않았다 주목 내 HTML에서? 제출 핸들러는 더에 없다 말하자면. 어떤 속성은 없습니다. 당신이 알고 있기 때문에, 무엇을 정말 맘에 안 들었어요? 우리가 떨어지는 것처럼 느꼈다 이 오래된 습관에. 그것은 루즈 느끼기 시작했다 것처럼 모두와 CSS를 뒤섞다하기 HTML, 당신이 종류의 던지는하고 있기 때문에 모든 개 이상의 다른 언어 장소와 유사하게이 느낌을 시작 했 아래로 이동하는 나쁜 도로 같은 곳 나는 내부에 자바 스크립트 코드를 걸었 내 HTML보다는 그것을 인수 분해. 그래서 여기에 교훈. DOM-2.html, 나는 그것을 감안하고 있습니다. 그리고 나는 약간 일을하고 있어요 다르게. 지금은 내 손을 흔들거야 이 어떤 기능을하는지에 후드 아래에. 그러나 지금에 대한 가정이 그 첫 번째 이 라이브러리의 코드 라인 jQuery를 그냥 의미라고 할 때 문서는 다음을 수행 준비가되어 있습니다. 웹 페이지가 걸릴 수 있기 때문에 로드 시간. 당신은 느린 인터넷에있을 수 있습니다 연결, 그리고 그것은 회전 될 수도 과 회전, 그리고 마지막으로 그것은 장전. 코드 줄은 때까지 기다리라고 전체 페이지, 문서 준비 이 코드를 실행하기 전에 준비가되어 있습니다. 그리고 지금 알이는 아마도 먼저 가장 유용 멀리 jQuery를 빼앗아. 여기이 선은 정신에 매우 유사합니다 여기이 훨씬 더 라인. 원시 자바 스크립트 코드에서,이 반면에 문서 전역 개체를 존재하는 ()있는 getElementById라는 기능이 있습니다 쓴 사람 jQuery를 그냥 말을 그렇게 단순화 달러 기호, 다음의 내부 괄호는 두 개의 따옴표를 넣고, 다음에 해시 기호를 넣어 당신이 잡아 할 고유 ID. 그래서이 동일합니다 document.getElementById를. 한편,. 단지에 의미 제출 당신이있어 어떤 형태의 제출 왼쪽 참조, 갈 앞서이를 실행합니다. 그러나 이것은 지금 너무 호기심이다. 에 대한 이상한 무엇 무엇을 여기서 강조했습니다? 뿐만 아니라 그것은 종류의 구문입​​니다 새로운, 뭔가 빠진도 있습니다. 청중 : 그것은 단지 함수라고? 그것은 경고라는 아니에요? DAVID 마란 : 네. 음, 경고 () 다운 여기에, 공정하게. 그러나 전혀 언급이 없다 당신이 아는 것처럼, 이름, foo는 나 여기까지 뭔가. 그리고 사실,이 기능 중 하나입니다 아주의 자바 스크립트의 강력하지만 또한 매우 새로운. 그리고 PHP는 실제로뿐만 아니라이 있습니다. 내가 가서 보자 진짜 빨리 뭔가. 내가 가서 여기를 넣어 보자. 저를 내버려 두세요. 기능. )의 (이 처리기를 호출 할 수 있습니다. 핸들러 함수는 말하자면. 일부 작업을 처리 한 것을. 내 들여 쓰기를 정리하자. 여기에 이​​것을 넣어. 그리고 여기에 넣어. 네. 확인을 클릭합니다. 그래서 지금이라는 기능을 가지고 정말 모르는 핸들러 () 그것은 아직 무엇을. 그것은 단지 아직도 그 물건을 가지고 있습니다. 으악. 너무 많이했다. 이 작업을 수행하자. 좋아. 미안 해요. 좋아. 내가이 작업을 수행 할 수 있습니다. 확인을 클릭합니다. 좋은 직선 보인다 앞으로 지금. 내가이 작업을 수행 할 수 있습니다. 이 작업을 수행합니다. 하고 확인을 클릭합니다. 그래서 지금, 여기에 이​​것을 넣어 보자. 즉시 더 이상 프로그램이 없습니다. 확인을 클릭합니다. 그래서 지금, 다시 가자 이야기가 시작된 곳. 이전에, 그이 줄 여기있다 문서가 준비되면, 이동 수단 앞서이 작업을 수행. 내가 무엇을 하시겠습니까? 그럼 구체적으로, 내가 가고 싶어 앞서 다음을 수행하십시오. 이 코드 줄을 실행 한 다음, 제가 당신이 원하는 것은이 호출됩니다 폼이 제출 될 때 작동합니다. 지금이 흥미로운 것입니다. 이 함수 자체가 아닙니다. 내가 괄호를 넣어 아니에요 통지 여기에 정상적인 방법으로합니다. 말 그대로라는 함수를 전달 해요 다른 기능 핸들러 () 인수로로) (제출라고 그것은 변수처럼 비록. 그리고 이것은의 기능 중 하나입니다 자바 스크립트 자체 기능입니다 정말 그냥 개체입니다. 사실, 그들은 정말 그냥있어 어떤 종류의 변수. 그리고 함수의 이름 인 경우 핸들러는 (), 내가하지 못할 이유가 없다 여기에 인수로 전달합니다. 이 의미 때 폼 데모의 ID입니다에 제출이 함수를 호출합니다. 하지만 지금은,이 모든 실행 취소 왜 그때는 아마하지 않았다 이 순간 전? 음,이 익명의 함수이다. 솔직히 때문에, 왜 내가 실현 를 선언 시간을 낭비 귀찮게 함수는 호출 할 핸들러 ()를 호출 단 하나의 장소에서 그것? 나는 이름이 필요하지 않습니다, 난하지 않으면 그것은 하나 이상의 장소, 호출 할 필요가 하자 그냥 함수를 구현 오른쪽 어디를해야합니다. 그리고 자바 스크립트와 PHP 지원 어떻게 익명 함수라고합니다 내가 그 여기에 정확하게 수행 할 수 있습니다. 그러나 우리는 단지 표면을 긁는거야. 하자 그냥 몇 애타게 여기에 최종 예. 나는 quote.php로 이동합니다. 이것은 실제로 PHP 것을 알 기능, 내가 쓴 PHP 프로그램 라는 HTTP 매개 변수를 예상하는 기호, 나는 전달할 수 FB 같은 값을 반환합니다. 그리고 우리는 실제로 소스를 보면 코드가,이 무료 웹 사이트를 쿼리합니다 단지 P-집합처럼, 야후 금융라고 일곱, 그것은 나에게 돌아 오는 것 분명히 뭔가 알려진 형식은 JSON입니다 - 자바 스크립트 객체 표기법. 그냥 객체입니다. 중괄호, 따옴표를, 통지 콜론과 쉼표. 이제 한편이 꽤 멋지다. 아마 프로그래밍을 사용할 수 있기 때문에 URL을 생성하는 언어 동적으로 다음과 같이 그 표정, 오른쪽? 내가 구글로 변경할 수 있습니다 구글의를 다시 $ 1,017.55의 주가. 그래서 우리는 이제이 기능을 사용 할 수없는 경우 보자. 여기에 내가 AJAX-0에 가자, 그 다음과 같습니다. 그냥이 웹 사이트의 버튼 형태. 내가 여기 가서 YHOO를 입력하자 야후의 주식 기호에 대해 가져 오기를 클릭 따옴표, 그리고 지금 내가 왔 통지 32.86와 경고. 내가 실제로 애호가 버전에 가자 이 페이지 버전 두 가지, 그리고 하자의 유형은 마이크로 소프트, MSFT 말한다. 견적. 그리고 지금, 어떤 경고를 확인할 수 없습니다. 그것이 말하는 곳 통지 가격 결정 하는가? 이 예제의 간단한이 있습니다 어떤 Gchat의 힌트와 페이스 북 채팅, 그리고 Gmail은, 등 기타 웹 사이트는 실제로로하고있다 웹 페이지를 변경. 이 알 수 있습니다. 내가 페이지를 다시로드 할 수 있습니다. 내가 크롬의 속성을 열 수 있습니다. 내가 요소에 가자 여기에 탭을 아래로. 지금 깨달으면 나는 여기 아래에있는 줌 이 최대를 열고이 내 것을 알 HTML DOM - 내 문서 객체 모델. 이건 내 HTML입니다. 이 것 비록 지금은, 알 모두 그것을보고 약간 어려운 것 한 번에 장소, 나는 FB에 입력하면 여기까지, 바닥을보고 화면 만. 실제로 변화하는 즉시 내 HTML. 그리고 그것은 아주 간단이 짓 이런 일을하고 있습니다. 나는 아약스-2를 열 경우, 구현 통지 로 섹시하게 뭔가 꽤 추한지라도, 그와 같은 그러나 같은 정교한 기능적으로, 그것은 몇 가지가 있습니다 하단에 HTML. 하지만 태그를 사용 확인할 수 있습니다. 우리는 전에 사용하지했지만, 이것이다 좋아하지만, 강제하지 않는다 새 줄로 모든 것을. 그냥 사각형 영역을 만든다 같은 줄에 기본적으로. 나는 그것을 가격의 ID를 준 것을 알 수 있습니다. 그리고 동일한을 사용하여 밝혀 자바 스크립트 라이브러리, 난 기능을 가지고 때마다라고하는 따옴표 ()를 호출 양식이 제출됩니다. 무엇을 내가하고있는 것은 이것이다. 나는 자바 스크립트에서 변수를 선언하고있어 값을 저장, URL 호출 quote.php? 기호 =. 즉, 나 자신이 시작하고 다음 HTTP 요청을 준비하고 할 나는 플러스로 그에 연결하는 해요 ID를 가진 어떤 요소 심볼, 그 통지하는가이다 바로 여기 아래 텍스트 필드. 그래서처럼 우리는 과거의 형태를 가지고 있었다. 경우 그리고 그것은있는 jQuery 밝혀 당신 발의 호출을 호출합니다. 발 () 가져 함수 값 함수 사용자가 들어 입력했다 어떤 그리고 네트워크 트래픽의 그 일이 일어. $.해서 getJSON. 그리고 여담으로, 달러 기호입니다 단지 속기 표기법. 정말 jQuery.getJSON입니다. 이 URL에서 JSON에 저를 얻을 때 요청이 돌아 오면,이 전화 함수와 인수로 전달 무엇이든은 서버에서 다시왔다. , 즉 그래서 다시 들으면 브라우저, 나는 quote.php로 돌아가, 무엇을 내 브라우저가하는 일은 점점입니다 이 데이터 덩어리. 그리고 여기이 웹 페이지로 이동하면, 우리는 대신에 네트워크에 가면 알 수 탭을 취소 한 다음 입력 구글에 대한 GOOG 같은 및 Get 견적 페이지가 변경되지 않은 알 수 있습니다. 그러나, HTTP 요청이 제로 무엇 우리가 보면 다시 여기에왔다 응답은 JSON의 전체 무리입니다 우리는 함께 마지막으로 액세스 한 여기에 간단한 라인. 데이터가 입수 된 것입니다 서버에서. 가격의 이름 내가 걱정 키. 그래서 data.price 날이 있습니다. 이제 한편,이 마지막 예입니다. 당신은 페이지에 아직 더 많은 작업을 수행 할 수 있습니다. 하나의 사실은, 두 개의 아니라. 우리는 다시 가져올 수있는 당신이 기억한다면, 태그. 즉, 자바 스크립트입니다. 우리는 할 수 있습니다. 매우 흥미로운. 우리는 클리프 행어로 그 둘 게요. 하지만 더 호쾌하게, 당신은 할 수 이 같은 일을 할. 나는이 위치 정보-1에 가면, 그것은 밝혀 크롬은 우리가 있다는 것을 알고 위도 경도 42.37. -71.10. 그래서 더이있다 귀하의 처분에. 하지만 그 다음 주에 더. 월요일에 참조하십시오.