[음악 재생] DAVID 마란 :이 CS50이며 이 주 여덟의 시작입니다. 그리고 우리는 환영 매우 기쁘게 생각합니다 다시, 놀랍게도, CS50 자신의 라몬 갈반,되었습니다 상승 수석 지난 몇 개월 지출 LA 년 7 월 이후, 할리우드, 말 그대로 새로운 TV 작업 식민지라는 쇼의 창조자 실제로 하버드 졸업생 자신이다. 그래서 우리는이를보고 매우 기쁘게 생각합니다 미국 네트워크 1 월에 데뷔. 그래서에 대한 계속 지켜봐 주시기 바랍니다, 그리고에 대한 주 동안 더 라몬이 올 수 있습니다. 끝이 가까운 것을 지금 알 수 있습니다. 그리고 이것이 의미하는 것은 없다라는 것이다 모두가 더 말할 필요도 슬픈, CS50의 왼쪽. 우리는 세 가지 문제가 세트가있다 있고이 문제에 six-- 설정 당신의 손은 현재 또는 곧 될 것입니다 나중에 의미 week--이 다리로 인해 명령 줄, 우리의 세계 우리가 사용하는 우리의 대부분의 시간을 보냈어요 C 및 웹 프로그래밍 세계. 글쎄, 당신은 아이디어를 많이 볼 수 있습니다 명령 줄 작업에서 차용, 하지만 새의 또한 많은 재미있는 아이디어 또한 대한 밀접한 될 것되는 모바일 애플리케이션을위한 기술, 더 일반적으로,있는 당신 사람들은 요즘 모두 잘 알고있는 노트북과 휴대 전화 등을합니다. 그래서 당신은하지 구현합니다 웹 페이지 또는 웹 사이트 본질적으로, 그러나, 실제 웹 서버. 사용자는 웹 서버의 나머지를 기록 할 그 목적은 인생에서 C로 작성 HTTP 요청들을 수신 할 우리는 계속 얘기 가상 봉투 약, 실제로으로 하나 응답 도트 HTML과 같은 몇 가지 정적 content-- 파일, JPEG 또는 도트 파일의 다른 수, 심지어 PHP 파일함으로써 웹 서버는 PHP를 해석하는 것입니다 코드와 결과를 뱉어. 이제, 우리는 당신을 제공 한 프레임 워크의 꽤 실제로 그건 ...에 대한 문제에 대한 분배 코드 여섯 1,000 선 길이 설정 의 많은 의견 fair--되어야한다 그러나 이것은 정말 의미 기회가 될 수 있습니다 더러운 다이빙 손을 얻으려면 상당히 큰 프로젝트에 우리는 매우 구체적으로했는지 당신을 위해 밖으로 조각 조각, 그래서 정말 CS50를 종료 할 때와 프로그래밍의 현실 세계를 입력 그리고 손 대고 싶어 프로젝트의 수, 당신은 훨씬 더 할 것이다 편안함 일부 소스를 다운로드 코드, 일부 오픈 소스 웹 프로젝트, 과 다이빙 및 만들기 당신이 맞는 볼 변경. 문제는 일곱에 대해 될 것입니다 설정 자신의 웹 기반 응용 프로그램을 즉 동적 입력을 받아, 형태로 동적 출력을 생성 etrade.com 같은 웹 사이트의. 그리고 문제는 여덟 아직에 초점을 맞출 것이다 설정 자바 스크립트로 알려진 또 다른 언어입니다. 한편, 최종 이 프로젝트는 수평선에 있습니다. 소위 프리 제안 오늘부터 일주일 예정이다. 사양에 따라 사전 proposal--, CS50의 website--에있는이다 꽤 캐주얼 기회입니다 당신은 매우 간결 이메일을 보낼 당신의 교육 동료에 그를 알리기합니다 또는 당신이 무슨 생각을하는지에 그녀의 사운드 보드로 그 사람이나 그 여자를 사용합니다. 그리고 정신이 check-- 당신이 생각하는 여부 너무 물고 약 너무 작은 많은 아니면, 또는 어쩌면 당신은 전혀 생각이 없다 과의 대화에 참여합니다. 그 후 제안이다 상태 보고서 여기에 소위 CS50의 해킹 마라톤 하버드와 예일 학생들을위한 캠브리지 모두. 최종 프로젝트의 구현은 다음 때문이다. 그리고 여기 CS50 박람회, 캠브리지, 뿐만 아니라 뉴 헤이븐에있는 다른있다. 제안 그래서 좀 봐 그 내역에 대한 웹 사이트. 하지만 더 호쾌도있다 기회는 당신의 손이 더러운 얻으려면, 그리고 전체에 개방 당신의 마음은 주제와 도구의 무리 그 기술은 보조입니다 과정의 핵심 강의로, 하지만 그럼에도 불구하고 관련. 또한 훌륭한 디딤돌로 정말 멋진 최종 프로젝트를 수행하는 물론 재료를 넘어 우리가 다루었 이동 공식적으로 문제에 설정하거나 강의한다. 그래서 위해 CS50의 웹 사이트로 이동 세미나의 전체 명단. 아직 등록하지 않으면, 그 괜찮아요. 가서 아직도 가입하고 우리는 것 라이브 스트리밍 링크와 다음, 날짜와 시간은 웹 사이트에 있습니다. 그리고 모든 것이 될 것입니다 기록과 온라인으로 넣어 당신은 할 수없는 경우 특정 날짜와 시간. thereafter-- 아니라 앞으로 무슨 일이 있을지에 관해서는, 물론, CS50의 해킹 마라톤이있다. 촬영 일주일에 0에서이 사진, 리콜, 년 과거에 저녁 일 오전 4시 주변. CS50 박람회, 이는 다시 두 도시에서 개최됩니다. 그리고, 단지를 심고 씨에도 여전히 우리하지만 한 달이 플러스 경우, 학기의 왼쪽 당신은 CS50 자신의 교육에 참여하고 싶습니다 직원, 당신은 시작하려면 CA되고에 대해 생각, 또는 교육 동료, 알고 우리는 그것에 대해 더 많은 이야기를 시작합니다 이번 학기. 그러나 여기에 사진 올해의 팀의 가장. 그리고, PHP-- 나는 너무 슬펐다 지난 주 [그? Allyse?] 친절 지고의 노력에 갔다 우리가이 멋진 소품 내가 사용하게하지 않았다, 그렇게 정말 종류의 바보 보았다 우리는 여기에 앉아 삽을 한 것으로 하루 지난 수요일, 그리고 약간의 숟가락. 그러나 이것은 나의 은유를했습니다 페인트 노력의 방법 왜 우리가 전환하고의 그림 C에서 PHP와 같은 언어. 그리고 같은 모든라고 할 수있다 languages​​-- 자바, 파이썬, 루비의 수 others--의 만에 반면 또는 다발 C는, 예를 들어 C에서 프로그램을 작성 일반적으로 같은 수 있습니다 이 같은 숟가락을 복용 그리고 구멍을 굴착 지상, 모래 나 흙에. PHP는 당신이 많이 걸릴 수 있습니다 문제의 밖으로 큰 물린, 훨씬 적은 코드를 작성 훨씬 작은 공구를 사용하여, 더 많은 그래서 거기 때문에 기능 개로 갈라. 이제, 우리가 정말 극적인한다면, 우리는 삽 뭔가이있을 것이다 여기에,하지만 그래서 그것을합니다. 한편, 다른 은유 우리가 함께했다 물론, 당신은 할 수있다 렌치 같은 것을 사용 손톱 같은 망치합니다. 그러나 물론, 오른쪽 사용하는 도구는 것입니다 순전히을 할 수 언어라는 C-- 지금 나는 그냥 짜증 [? 샌더스?] 아마, 우리는 그래서를 later-- 해결합니다 오른쪽 도구는 자주 사용하는 될 수 없습니다 이 가장 낮은 수준의 도구입니다. 그리고 실제로, C는 언어 아니라고 당신의 대부분은 지금, 사용하려는 또는 반드시 다시 사용해야합니다. 실제로, 작은 유일한 시간을 secret-- 나는 C 나 자신 사이에 꽤 많이 사용 매년 가을 9 월 및 전기 학기. 그리고 그 우리 때문에 기회로 사용 기본을 가르치는 프로그래밍, 과 컴퓨터 과학 기초, 데이터 구조, 알고리즘과 그때 엔하지만 매우 빠르게 당신은 것입니다 구문 이니까 참조 그리고 아이디어는 C의 기초 너무 멋지고입니다 현대에 양도 더 높은 레벨의 언어 등에 PHP와 Python과 Perl과 자바 및 목표 - C--, 너무 많은 실제로을 목표 - C--하지만 스위프트, 이러한 새로운 언어 당신의 많은 것 다음 최종 프로젝트에 손 대고. 속히 그래서, 실제로하자 몇 가지 문제를 해결하기 위해 PHP를 사용합니다. 마지막으로, 조기에 리콜 주, 우리가 사용 CS50 IDE, 우리는 말쑥한 작은 프로그램을 작성 그건 그냥 "안녕하세요 세계"고 말했다. 그리고 나는 그것을 저장 파일이 hello.php했다. 그리고 나는이 명령을 실행. 그리고 왜? 영어로, 여기 무슨 일이야? 나는 때 무엇을하고 있었 나는이 명령을 실행? 그래? 청중 : 일부 기능 PHP가있다 그 in-- 것을 이해하고 무엇을 읽습니다. 데이비드 마란 : 좋음, 일부 기능이있다 PHP--과 좀 더 구체적으로 보자 PHP라는 프로그램은 일명, 거기에 이해 통역, hello.php의 내용, 그리고 위에서 그것을 해석 아래, 왼쪽에서 오른쪽으로 그 명령이 무슨 말을한다. hello.php의 명령, 물론, 다만 code-- 기능을 소스 변수와 루프와 등, 우리 자신을 그 PHP로 쓰기 시작했다. 그러나 C는 달리, 어느입니다 컴파일 된 언어, PHP는 당신은 그것을 작성하고 실행합니다. 당신의 중개인의 단계를 건너 뛸 수 0과 1로 변환, 다음을 실행. 그리고 이것의 상승은 무엇인가? 왜 우리는 단계를 건너 뛰는거야? 왜 더 현대적인 언어를 할 이 단계를 생략하는 경향이? 이점은 무엇입니까? 아니면 그냥 직관적으로? 우리는 적이 없다하더라도 전에 많은 PHP를 작성, 무엇을하지에 대한 도움의 코드를 컴파일하는 것은 당신이 생각하십니까? 아니? 커밋하지? 머리를 긁적? 그래. 청중 : 더 동적. 데이비드 마란 : 더 동적? 당신은 무엇을 의미합니까? 청중 : [들리지] 데이비드 마란 : OK, 좋은, 그래서 입력에 따라, 당신은 매번 컴파일 할 필요가 없습니다. 그리고 그것은 정말로 같다 that-- 간단 무엇 계속의 포인트입니다 코드를 컴파일하는 방법? 이것은 그냥 단계입니다 making-- 이는, 요구되는 지난 몇 대한 주, 배 많은 단계 같은 당신의 프로그램을 실행. 그것은 당신이 있다는보고에 유용한이었다 , 등 몇 가지 오류 메시지 및 참조 하지만 여전히 단지 성가신 단계입니다. 그래서 프로그래머는 실현 시간이 지남에 따라, 우리는 왜하지 하지 않는 언어를 쓰기 시작 그 상당히 기계적인 단계가 필요합니다 그래서 그냥 쓸 수 있습니다 코드 및 실행합니다. 하지만 가격 뭔지 우리는 우리가 지불 보았다 하나의 특정 예와, 주 어제? 네? 속도. 그래서 [? ?] 통역 무엇 조금 느리게, 점에서 0과 1은 좋은 컴퓨터의 빠른 이해하기 때문에 인텔 CPU, 또는 그것이 무엇이든, 그냥 무슨 일이 일어나고 있는지 이해 비트 그 패턴에. 통역 반면 프로그램은 정말 아스키 소스를 읽을 수있다 당신이 작성한 코드, 및 변환, 말하자면, 또는하기 그것은 궁극적으로 변환하는 방법을 알아낼 0과 1에. 그래서 조금 걸립니다 성능 저하의 비트. 그래서 트레이드 오프의 비트입니다. 우리가 여기 이렇게 지금, 나하자 가서 다음과 같은 예를 않습니다. 내가 여기에 갈 경우, 새 파일, 내가 갈거야 다시 저장하는 hello.php입니다. 그리고 지금 나는 앞서 갈거야 와 "인쇄 안녕하세요"라고 말할 - 내가 인쇄를 사용할 수있는 기억, 내가하지 인쇄-F를 사용해야합니다. 그리고 지금 여기에 아래로 내가 hello.php의 PHP를 할 경우, huh-- 나는 그것을 해석 한 것으로 보이지 않는다. 내가 잘못 무슨 짓을 한거야? 청중 : 각도 팔찌. 데이비드 마란 : 그래, 당신이 필요로하는 그 꺾쇠 괄호까지 가기. 그래서 그것은 성가신의 종류,이다하지만 당신은 빨리 익숙해. 나는 PHP 코드를 작성할 필요가 있다면, 일반적으로 프로그램을 말할 필요, 또는 이봐, 인터프리터에게 PHP는, 여기에 몇 가지 PHP 코드를 온다. 그리고 좋은 측정을 위해, 나는 것 이하지이를 닫 아니라 그냥 물음표 각도 브래킷, 지금 여기 아래에 있기 때문에, 내가 다시 실행할 경우, 지금 내가 원하는 결과를 얻을. 이제 약간의 최적화를 할 수 있도록, 당신이 그것을 전에 본 적이 너무. 이 종류의 짜증나는 내가 그 PHP 공간 hello.php를 실행해야합니다, 때문에 과거 나에 단지 점 슬래시를 작성할 수 가지 좋은 프로그램 이름. 그것은 더 나은 사용자 경험을 가지입니다. 이 밝혀 그래서 당신은이 작업을 수행 할 수 있습니다 following-- I와 PHP에서 이 상당히 애매을 사용할 수 있습니다 여기에 상단의 주문, 이는 일반적으로 오두막이라고, 이 기호는 날카로운있다, 말하자면,이 강타이다 또는 느낌표. 그리고 이것은 지금 프로그램의 경로입니다 일반적인 리눅스 시스템에 그 환경, 또는 ENV라고합니다. 그리고 이것은 긴 이야기를 line-- short-- 라인 하나 단지 컴퓨터 이봐, PHP를 찾을 말한다 환경의 날을위한 통역, 말하자면, 당신의 기억에서 그것을 찾을 수 있습니다. 그리고, 지금은 좋은 무엇이다 그 내가 여기 내려 가면, 나는 점 슬래시을 수행 할 수 있습니다 안녕하세요 도트 PHP, or-- 흠. 권한이 거부되었습니다. 글쎄, 당신은이의 더를 볼 수 있습니다 당신이 경우 문제, 일곱 설정 아니 이미 권한이 있습니다. 내가 필요하다고 밝혀 이 명령을 실행합니다 [라고? chamod?] 변경 플러스 X의 hello.php를 mode--. 나는 [들림] 추가이 하나 필요 내 컴퓨터를 말하고 단계, hello.php 실행합니다. 그리고 지금 점을 happens-- 무엇을보고 hello.php 슬래시, 그냥 실행됩니다. 내가 지정할 필요가 없습니다 더 이상 인터프리터. 그리고 심지어 예쁘게 만들 수 있습니다, 여전히, 경우에 나는이 일을 이름을 바꿉니다. 난 그냥이에 hello.php를 이동하는 경우 Hello-- 그래서, 왼쪽 상단에 주목 프로그램의 이름입니다 실제로 지금 바로 안녕하세요. 지금은 C 프로그램처럼 보이게 할 수 있습니다, 그것은 PHP-- 작성 비록 나 솔직히 숫자 다른 언어의. 그래서 한계 향상, 기능상의 차이는 없습니다. 그러나 그것은 단지 작은 호기심이다 지금, 당신은 프로그램을 작성할 수 있도록 어떤 언어, 사용자는하지 않는다 알거나 그이 무엇인지 관심을해야합니다. 음, 좀 더 살펴 보자 뛰어난 예 지금 나는 사전에 채찍질있다. 그리고 이것은 quote.php이라고합니다. 그리고 온라인으로 사용할 수 있습니다. 그리고 그것은 꽤 short--의 통지 그러나의 커맨드 라인 프로그램이다 주식 가격을 찾아 볼 것 나를 위해, 이는 실제로 것입니다 문제가 일곱 설정에 밀접한합니다. 그래서 내가 뭘하는지 보자. 맨 위에 내가있어 오픈 브래킷 물음표 PHP. 나는 이에 그럼,이 라인을 가지고있어 functions.php--라는 파일을 필요로 우리는 보게 될 것입니다 조금이 더 많은, 그러나 이것은 C의처럼 날카로운의 버전은 포함 당신이 가고 싶은 곳 다른 파일을 포함한다. PHP는하지만, 그것은 필요 호출 또한이 기능을 포함 있습니다. 그리고 그것은 function.php임을 밝혀 뭔가 내가 수업 전에 썼다. 나는 때문에, 같은 디렉토리에 넣어 나는 몇 가지 코드를 고려하고 싶어 것을 우리는 다른 곳에서 사용 할 수 있습니다. 한편, 당신은 아마 수 여기에 무슨 일이 일어나고 있는지 추론. 이 C--하지만 약간 다릅니다 나는 무엇을 의미합니까 적절한 사용을 보장? 기술적으로이 번역. 어떤 상황에서 내가 오전 프로그램을 종료하거나 종료? 그래? 청중 : 당신이 필요가 없습니다 두 개의 명령 줄 인수. 데이비드 마란 : 나는이 없습니다 행 인수를 명령합니다. 그리고 그 중 하나를 기억 인수는 프로그램의 이름 자체입니다. 그리고 두 번째가 될 것입니다 다른 단어 나 프롬프트 후 입력합니다. 그래서 그냥 C와 같은이 검사의 나의 방법이다, 사용자가 협력 않았고 내가 의도 한대로 프로그램을 실행? 지금, 거기에 뭔가 조금 다른 모든 C-- 처음으로 우리 이 달러 기호를 가지고, 그리고 달러를 무엇 PHP에서 나타내는 서명? 그냥 변수입니다. 그 다음에 all-- 단지 변수의 당신이 무엇을 실제로 전화를 할 수 있습니다. 뭔가가 주목 내 PHP 프로그램에서 누락, 그냥 마지막없는 것처럼 주, C 대, 무엇을하는 것입니다? 타입뿐만 아니라 다른 것. 아무 일이 없다 주요 기능을 function--. 더 주요 기능은 없습니다. 당신은 그냥 쓰기 시작 하지 않고 코드 상당히 임의의에 대해 걱정 몇 가지 기본 명명 규칙 main 함수. 그래서 인수 C는 정말입니다 전역 변수 인터프리터 그 나에게 사용할 수 있습니다. 지금,이 흥미 롭다. 그래서 물건을 찾아보십시오. 달러 기호 주식에 왼쪽, 내 변수입니다. 오른쪽에, 분명히있다 PHP에서 함수가 조회를 호출하는 내 마지막 명령 줄을 전달 해요 인수는 어떤 이러시면 단어입니다. 그리고 우리는 어떻게이를 볼 수 있습니다 순간에 작동합니다. 그리고 마지막으로 내가 가격을보고하고있다. 나는 1을 인쇄하고 있습니다 이런 저런의 몫. 그리고이 기억하십시오 에 PHP-- PHP--의 방법 방법 당신은 할 필요가 없습니다 경우 더 이상 달러 기호 S. 당신은 중괄호를 사용할 수 있습니다 일부 변수에 연결합니다. 당신은 걱정하지 않아도 같은 방법으로의 printf를 사용하여. 그리고 옆으로, 같은 당신은 변수를 둘 때 이 같은 큰 따옴표의 내부, 당신은 멋진 기술을 사용하는 변수 보간했다. 그냥 여기에 변수를 연결을 의미한다. 그리고 옆으로, 어떤 당신의 오는 사람들로 다른 프로그래밍 배경을, 당신은 작은 따옴표를 사용할 수 없습니다 주위 문자열은이 작업을 수행 할 수 있습니다. 당신을위한 따옴표를 사용해야합니다 변수 보간이 작동합니다. 그렇지 않으면 그대로거야 그 중괄호를 참조하십시오. 그래서 마지막으로, 이제 가서이 실행하자. 내 단말기가 조금 더 큰 만들어 보자. 내가 가서 실행하자 내 견적 디렉토리의 내부. [? CDsource?] [? 오전?] [? 견적?] PHP 시세 점 PHP, 내가 뭔가를 검색 할거야 그 시세의 상징이다 GOOG 같은, 그 새 이름의 일주, 알파벳 Inc의 오늘의로, $ 717의 비용. 좋아, 우리가 원하는 경우 다시 실행, 사람 다른 주식 시세를 그들은까지보고 싶지? 마이크로 소프트 나는 생각 이 하나, MSFT-- $ 53. 나는 야후가 어쩌면 생각합니다. 그리고 페이스 북은 그입니다. 이렇게이 프로그램은 무엇인가? 마법이 내장 될 것 같다 이 검색 기능에서. 그럼 잠깐 살펴 보자. 그 오지 않는 그것은 밝혀 PHP로, 그것은 functions.php에 있어요. 그리고 우리는 통과하지 않습니다 훌륭한 세부 사항이, 그러나 여기에서 수술 단어입니다주의 그 functions.php--의 라인 여섯에 말 그대로 기능을 말한다. 내 함수의 이름을 지정합니다. 나는 그 때를 지정할 인수 또는 매개 변수, 그 기능이 더 형식을 take--하지 싶다. 그리고 나는 그것을 구현합니다. 그리고 나는 내 손을 흔들어합니다 구현에서, 그것은 상당히 진보 된 권리이기 때문에 지금, 그러나 우리가 실제로 다시 볼 수 있습니다 주 문제에 칠을 설정합니다. 하지만 나도이를 정리 할 수​​ 있습니다. 나는 또한에 포함 오늘의 코드 버전 더 도트 PHP 파일이 없습니다 인용,의. 에 아마도 무엇 때문에 다만 인용라는 프로그램의 상단? 즉 shebang-- 소위 상당히 난해한 주문 그 다음 PHP를 찾아 말한다 여기에 내 코드에서 실행합니다. 좋아, 그래서 제공 우리가 중단 된 곳으로 우리 이기는하지만 지난 time-- 좀 더 고급 예. 질문 지금까지 약 PHP 나 우리는 무엇을하고있어? 말아요 - 모든 권리. 그래? 청중 : 내부 HTML 파일은 있는데 ... 할 [? 당신은 무엇입니까?] [? 그냥 전화?] [들림] PHP 파일? 데이비드 마란 : 좋은 질문입니다. 우리가있어 웹 맥락에서, 로 전환 할 문자에 대한, 당신은 소위를 사용하지 않는 상단에있는 오두막, 웹 server-- 종종 때문에 이 프로그램은 아파치 또는 Microsoft라는 IIS, 인터넷 정보 서버, 또는 다른 웹 서버 소프트웨어의 임의의 수, 그것을 볼 때 것을 알고있다 도트 PHP 파일, 그것은 그 그것에 인터프리터를 실행해야합니다. 그것은 그 첫 번째 줄에 보이지 않는다. 이 첫 번째 줄 트릭 그래서 당신이있어 바로 그 때입니다 쓰기 명령 줄 programs-- 우리는 매우 자주하지 않을 것이다, 하지만 브리지의 우리의 방법 지금 우리의 PHP에 대한 우리의 C 예. 그래서 참으로이 세상을 연결하자 웹에 명령 줄 세계에서 다음을 수행하여. 내가 가서 그려 보자 여기에 단지 잠시 동안. 우리가 오히려 웹 서버, 또는 경우에 따라서 우리가 여기 내 노트북​​에 걸쳐있는 경우, 이는이 같은 그릴 수 있습니다. 그리고 여기에 우리는이 어떤 형태의 인터넷. 그리고 여기, 우리가 빌딩 안에있는 서버 이 방법은 인터넷입니다 works-- 여기에서 어쩌면 일부 조명하는 서버입니다. 실제로 무슨 일이야 이 두 연결 사이? 그래서,이 건물 안에 웹 서버이다. 그건 그냥 컴퓨터의 그 일부 운영을 실행중인 외 시스템 어쩌면 자유 소프트웨어라는 CS50 IDE가 실행중인 아파치,. 그래서 당신은 실제로 수 이 건물의 생각 의 건물 인 것으로 어떤 CSt0 IDE는 저장됩니다. 여러분이이 곳이다 당신의 계정, 여기서 모든 자신의 웹 서버가 여러분 모두를 실행 자신의 고유 한 URL이 우리가 논의되면서, P. 여섯 설정에서 당신은 더 많은 것을 볼 수 있습니다. 여기에 내 노트북​​은 어딘가에 인터넷에서 다른. 내가 URL을 방문 할 때 그리고 그 속 나에게, 그 인터넷 트래픽 것입니다 서버, 서버에 이상 수신 HTTP request-- 같은 index.html을 얻고 그것입니다 해당 웹 페이지에 회신. 그래서 일반적인 패러다임이다. 최대 모든 반면 지금 현재, 모든 것을까지 에서만 일어나고 이 건물의 경계. 내 노트북​​을 사용되었지만 나는, CS50 IDE에 연결된 그래서 그 모든 프로그램은 내가 실행중인 해당 서버 자체의 내부했다. 하지만 지금의이 PHP를 다시 시작하자 일부 실제 프로그램을 작성하는 그 웹 서버에 의해 제공됩니다. 그리고이 일을, 내가 갈거야 예를 왕창로 즉, 여기에이 아이디어를 소개합니다. 그래서이의 멋진 방법 종류 프로그래밍 패러다임을 설명. 그리고 사실로 당신은 CS50를 종료 또는, 최종 프로젝트를 수행 또는 일부 따라 취할 클래스에, 당신은 시작합니다 을 전 세계에 있는지 특히 성장하는 데 C와 같은 언어와 슈퍼 낮은 level--됩니다 더 나은 거기 실현 쓰기 소프트웨어의 방법. 특정있다 당신이 따를 수 패턴, 파일 구성의 특정 방법 당신의 함수 이름을 지정하는 방법, 그래서 긴 이야기를 짧게, 세계 최대왔다 약어의 전체 무리와 함께 프로그래밍 방식의 이름. 이들은 당신이 사용할 수있는 단지 기술이다. 그 중 하나는, MVC라고 모델 뷰 컨트롤러에 대한. 그리고이 들어, 그냥 지금은 지나치게 복잡 당신이 배치하는 방법을 말하는 방법 PHP 기반 웹 사이트, 우리의 경우. 당신이 당신의 파일을 구성하려면 어떻게해야, 당신은 어떻게 당신의 논리를 구성 할 에 쉽게 만드는 방법 더 복잡한 웹 사이트를 쓰기? 그리고 실제로, 우리는 빨리거야 일곱 p는 세트와 거기에 도착. MVC의 세계에서 그래서, 당신은거야 참조에 대한 우리의 코드는 일반적으로 수 어느 모델 코드로 특성화 될, 또는 컨트롤러 코드, 또는 뷰 코드. 그리고 나는 갈거야 follows--로 지나치게 단순화 컨트롤러 인 프로그램의 두뇌, 그것의 위치를​​ 전부 재미있는 논리 문제가 발생합니다. 그래서 모든 것을 우리가 있었어요 지금까지 수업 시간에 쓰고, 종류의 컨트롤러처럼 code--는 제어 것 프로그램, 당신의 루프, 당신의 조건, 당신의 기능 변수와 모든 것을. 뷰는, 지금, 조금있을거야 웹의 세계에서 확실한. 보기는 미학이다 당신의 웹 사이트의. 또한, 사용자가 화상을 sees-- 무엇 HTML 테이블, HTML 태그 및 모든 즉, 솜털 미학의 모든 쓰기가 어렵지 않다 물건, 그러나 당신이 발생하는 것입니다, 소위보기, 미학이다. 그리고 모델, 궁극적 것입니다 데이터베이스들 이예요을 할 수있는 우리는 모든으로 다이빙을 시작합니다 더이 수요일. 그래서 제어부 로직은, 보기, 미적 물건 모델이 곳이 될 것입니다 우리는 우리의 실제 데이터를 저장합니다. 그래서 좀 더 구체적으로이 살펴 보자 다음의 예와. 여기 내 디렉토리에 갈거야 오늘의 소스로하는 모든 code-- 온라인이다. 그리고 버전 제로로 갈거야. 그리고 여기의이 부르 자 is-- CS50의 웹 사이트의 버전 제로. 전혀 훨씬 여기가 아니다. 그건 아주 간단한 웹 페이지의 아마 사용하여 어떤 HTML tags-- 단지 과거의 예에서 추측? 그게 뭔데? 아마 큰 대담한에 대한 H1-- 제목, 상단까지 그 로고, CS50. 그리고 다른 어떤 놀이에있다? 그래? 청중 : 정렬되지 않은 목록입니다. 데이비드 마란 : 정렬되지 않은 list-- 그래서 UL 태그와 LI 태그 어쩌면 부부. 그리고 당신이 기억할 수없는 경우 그것은 정직하게 문제가되지 않습니다. 다음은 무성한 종류입니다 HTML의 구현 세부 사항 당신은 신속하게 찾아 볼 것을 당신은 다시 당신의 방법에있어. 우리는 프로그래밍에 더 초점을 맞출 것 수분이 조각이다 아이디어. 그럼 그냥 빨리 보자 HTML--을보고 참으로 나는 그래, 여기에 소스보기를 열 경우, 그것은 정확히 여기에 무슨 일인지. UL 태그가있다. 그 안에 중첩 된 LI 태그이다. 그리고 나는 URL을 빌려 여기에 실제 강의의. 그 다음에 lectures.php는 분명히있다 다른 동적으로 생성 된 페이지 즉,의 아 see-- 할 수있을 것 강의 2 주. 그래서 주 제로 주 하나,하자 나는 페이지의 소스를 볼 경우이 항아리를 보면, 또한 슈퍼 간단합니다. 이 두 페이지를 선도하고 있습니다 라는 week0.php 및 week1.php. 그래서 무슨 일이 일어나고 있는지 지금 생각. 내가 week0.php 클릭, 내 노트북 week0.php에 대한 요청을하고있다. 웹 서버, 일명, CS50 IDE, 가상 봉투를 받고있다. 이 메시지를보고있어 같은 week0.php 얻을. 그런 다음 파일을 해석하고, 최고 아래로 파일을 right-- 왼쪽 라는 week0.php--과 결과를 침. 이 파일의 내부, week0.php,해야합니다 생성되는 제어 로직 이 HTML은, 우리는 곧 나타납니다. 하지만 지금은, 내가 주 제로 클릭하자 그리고 지금 우리는, 수요일과 금요일이 그리고 지금 우리는 슬라이드를 가지고 천천히 주 0에서. 그리고 당신은 기억 할 수 다시이 길에서. 그래서이 웹 사이트가하고있는 전부입니다. 그래서이이 일을 어떻게 생각해 보자. 나는 다시 갈거야 CS50 IDE에서 여기 소스 코드, 나는의 index.php를 열거야. 이 파일의 상단에 의견의 무리입니다. 그리고 나서이 파일의 중간에, 그것을 밝혀 어떠한 PHP 코드입니다. 당신은 어떤이없는 경우 때문에 오픈 브래킷 물음표 PHP 태그, 당신은 HTML을 넣어 무료입니다. 때문에 어떤 PHP 통역은 어떻게해야한다 그것은이 file--을 읽을 때입니다 위에서 아래로, right-- 왼쪽 그것은 단지 그 사이에 볼 코드를 해석 그 꺾쇠 괄호 마크에 의문을 제기. 그리고 다른 것, 그것은하지 않습니다 PHP로 인식, 그냥 뱉어. 그리고 HTML은 물건 중 하나입니다 그냥 뱉어 것입니다. 그래서이 파일을 가질 수있다 index.html을 호출 된, 하지만 나는 모든 명명 해요 디딤돌로 점 PHP. 유사 Lectures.php-- 실망, 그냥 약간의 HTML입니다. Week0.php, 유사 그냥 HTML. 하지만 지금의이에 넣어 보자 속담 엔지니어링 모자, 우리는이 문제를 개선 할 수있는 방법을 고려한다. 그것은이 작업을 수행하기 어렵지 않다,하지만 난 종류 복사 및 붙여 넣기로 양도​​. 그리고 사실, 나는 일주일에 두 만들 경우 아마 할거야 알아? 나는 난, week1.php로 이동거야 모든 것을 강조하는 것. 나는 그것을 복사거야, 붙여 넣기 week2.php라는 새로운 파일로, 일부 URL을 조정할, 내 방법에있을. 그래서 우리는 한 내용을 기반으로 이미 C에서 본 이 잘하면, 느낌이 좋지 않습니다. 복사, 붙여 넣기 거의 최적의 솔루션. 그래서 우리는 시작할 수있는 이를 개선하기 위해해야​​ 할 일? 어디에 기회가있다 더 나은 디자인을 검색 하시나요? 내가 도착 시간으로 주 여덟, 그것은거야 정말 짜증나는 일하기 나는 변경하려는 경우 하나 하나의 글꼴 내가 원하는 경우, 또는 내 페이지 레이아웃의 구조를 변경한다. 어디 기회 더 나은 디자인을 검색 하시나요? 음, 무슨 생각 해보자 이러한 모든 파일에서 공유. 여기에 여기에 주의, 주 하나 제로, 여기 lectures.php이야, 여기에 같은 무엇 index.php-- 그리고 다른 대략 무엇을 말하고, 이러한 파일의 각각에? 그래? 청중 : [들리지] 데이비드 마란 : 좋아, 좋아. 그래서 패턴은 확실히있다,있다 때마다 나는, 강의 I을 선택 나는를 생성한다 매우 유사하게 보이는 페이지입니다. 그래서 아마도 내가 활용할 수 있습니다 사실 정말, 의도적으로 수치 우리 우리의 lectures-- 색인 나는 더 넣을 수있는 경우 당신의 대답 단어. 그리고, 정말, 유일한 것입니다 그 주 사이에 변화하고 one-- 그것은 그래서 저를 아래로 스크롤 할 수 거의 같은 place--에 그래서 여기에 주 제로, 대략 상단. 여기에 일주일에 한 주입니다 제로, 일주일, 일주일 제로. 확인, 문자 그대로 당신이 알고있는 경우 어떠한 프로그램이 없습니다, 이 단지처럼 지금 패턴 매칭 게임. 그래서 다른 무엇입니까? 그래? 청중 : [들리지] 데이비드 마란 : 좋은, 그래서 제목 이제까지 약간, 변화하고 있습니다. 제로는 하나, 물론 것입니다. 같은 일이 H1 태그에 무슨 일이 일어나고. 그리고 우리는 아주, 쉽게 그것을 볼 수 없어 URL은 조금 긴 때문이다. 하지만 그 URL은 약간 변화하고있다. 그러나 IS 변경하지 무슨, 내가 감히 말 page--의 내용의 대부분 HTML 태그는 동일한있어, 헤드는 같은, 제목은 거의 동일합니다 본체는 동일하고, 다른 거의 모든 을 제외하고는 동일합니다 그 작은 개조하면 되겠 어. 그래서 우리는에 대해 어떻게 갈 수 이 중 일부를 인수 분해? 그럼 내가 정확히 제시 할 수 다음 버전에서 해당. 그래서 여기 버전에서, 나는 정확한이 같은 파일 모두, 그리고 다른 사람의 커플. 여기 index.php-- 경우에도 해당의 당신은 전에 PHP를 본 적이 없어 무슨 일이 아마이 문제를 해결하는 일을하고있다 당신이 보는 것을 기반으로 problem--? 그래, 약간의 약속이다? 아니? 예,에 이동합니다. 청중 : [들리지] 데이비드 마란 : 그래. 청중 : [들리지] 데이비드 마란 : 나는 당신이 필요합니다 조금 큰 소리를 말한다. 청중 : [들리지] 데이비드 마란 : 좋아, 좋아. 그리고 나는 그것이 think-- 있는데 ...하지만 난 듣고 하드 당신이에서 얻고있는 것은 있다고 생각합니다 상단까지 일반적이었다 태그, 에 일반적이었다 및 태그 바닥, 지금, 밖으로 고려 된 또는 어떤 파일에 이관? Header.php 및 footer.php-- 우리는거야 일부 개조하면 되겠 어를 만들기 위해 문제를 해결 단지 를 들어, 번호 변경에 대해 제기 예, 제가 제대로 들었 경우. 그러나 그것은 그것의 요지가 될 것으로 보인다. 엄청난 양의가 있었다면 페이지 상단의 중복, 그리고 엄청난 양의 하단의 중복, 의 말 그대로 그냥 강조하자 그 내용을 잘라, 별도의 file-- 단지 등에 넣어 우리가 고려 CSS의 생각 넣어 매우 유사 미학, 별도의 도트 PHP 파일에서, 이 mechanism--을 필요로 사용하는 C 날카로운 다음을 포함처럼 인 본질적으로 갈 말처럼 , header.php의 내용을 잡아 복사하여 여기에 붙여 넣습니다. 그러나 이것이 의미하는 것을 지금에 index.php에, 나는 그 두 줄이 있습니다. lectures.php에서, 나는 또한 그 두 줄이 있습니다. week0.php에서, 나는 또한 그 두 줄이 있습니다. 그래서 지금은 변경하려는 경우 내 모든 페이지의 제목, 아니면을 변경하려면 기본 구조, 나는 단지 한 곳에서 지금을 변경할 수 있습니다 두 places-- 머리글과 바닥 글, 각각. 이제 코드의 시작을 볼 수 있습니다 좀 더 애매한, 오른쪽? 하지만 당신에 대해 생각하면 어떤 페이지 내가 week0.php를 요청하고있어 경우 doing--된다, 바로 위에 드로잉에 같은 here-- week0.php을 요청, 그게 무슨 뜻 이죠? 말 그대로,이 파일은 브라우저에 의해 요청했다. 웹 server-- 일명 CS50 ID--이 잡고 파일 week0.php, 그리고 읽기 그것은 위에서 아래로, 왼쪽에서 오른쪽으로. 첫번째 라인의 즉시 발견 오픈 브래킷 물음표 PHP, 필요 헤더 점 PHP 등 무엇 PHP 인터프리터 즉, 웹에 내장 does-- 서버, 우리가 미리 때문에 그것은 자동으로 이동 얘들 아에 대한 header.php에, 사본의 내용, 여기에 붙여 넣습니다. 그러나 인터프리터 만남 물음표 가까운 브래킷, 그래서 모든 생각 이루어집니다. 지금은 그냥 맹목적으로 뱉어 라인 아웃 일곱을 통해 두, 그냥 원시 HTML의 때문이다. 여덟 줄을 취득하고, 그 수행 파일을 여는 again-- 같은 마법, 내용을 잡아와 을 요구하거나 붙여 넣기 바로 그때 나있다. 하지만 난 그냥 버그 언급. 이것은 이전 버전과의 부분적인 단계입니다 우리는 header.php에서 보면 때문에, 나는 종류의 모서리를 잘라했습니다. 나는 순서에 포기 했는가 기능 이 논쟁의 여지가 더 나은 디자인을 얻기 위해? 그래? 청중 : [들리지] 데이비드 마란 : 그래, 난 종류 의 사소 모서리를 잘라. 당신은 무엇을 변경하는 것을 지적 제목이었다, 제목에 숫자, 와 H1의 숫자. 그래서 내 솔루션은 확인했다 그냥 페이지의 이름을 바꿀 수 있습니다, 그와 거래를하지 무엇이 문제. 그래서 그 부분이야 확실히 뒤로 단계. 그러나 여기서 주목할만한 것입니다 내가 행한 것이 무엇 그렇지 않으면 고려한다 모든 일반적인 물건을 밖으로. 그리고 footer.php에, 나는 고려 통지 이 모든 아웃, 작은이기는하지만, 일반적인 물건. 그래서 어떻게 든 지금 할 수 있어야합니다 앞으로 다른 조치를 취할 및 수정 그 제목 문제. 그럼 그렇게하자. 내 두 번째 버전으로 가자 여기에, 이는 다시, 같은 파일이 하나의 새로운 추가를 제외하고. 그리고 조금 더 자세한 만의이 있는지 확인하자 우리 여기에 무슨 일이 일어나고 있는지 떨어져 애타게 할 수 있습니다. 그래서 그 대신 요구하는 header.php와 footer.php, 나는 단지 하나를 필요로 할 것 file-- helpers.php 물론,라고. 그리고, 내가 지금 규정하자 helpers.php의 내부에 무슨 기능의 단지 무리입니다 그게 내가 방금 전에 같이 썼다. 그러나 나는 그것을 helpers.php했다. 이제 명백하게,에 라인 세, 10, 나는 해요 두 functions--를 호출 헤더 렌더링, 바닥 글을 렌더링합니다. 제공되지 않는 PHP는, 나는 그에게 자신을 썼다. 그리고 helpers.php에 넣어. 이제, 우리는이 구문을 본 적이 한 번, 그리고 슈퍼 간단한이었다. 그러나 이것은 분명히 인수입니다 헤더, 기능을 렌더링한다. 왜 나는 그것을 알 수 있습니까? 자, 여기 가까이 괄호이야, 여기에 열린 괄호입니다. 그리고 물론, 단지 C처럼, 그 괄호 사이에 아무것도 input-- 또는이다 함수에 인수. 이 인수의 데이터 유형은 무엇입니까, 내가 강조 표시 한 내용을 기반으로? 그 대괄호는 어떻게 지난주에 기초하여, 표시? 그래, array--의 구체적으로 연관 배열. 그리고이 구문으로 인정 하듯이 약간 펑키이다, 그러나 이것은 단지 통과 하나의 키 값 쌍. 키 인용 인용을 끝내이다 제목 및 값 CS50이다. 우리가했던 경우이 C에서는 대신 수도 이상과 같이, 다만 인용 인용을 끝내 CS50-- 또는 실제로는 곱슬 것 중괄호, 또는 C처럼 뭔가, 여기서 키가 제로, 및 값은 CS50이다. 그러나 다시, PHP에서, 비록 구문은, 다시, 조금 이상한 그것은 당신이 통과 할 수 있습니다 단어 대신 숫자 값과 키를 연결합니다. 그래서이 모든 무엇을 의미 하는가? 내가 helpers.php에 들어갈 경우, 의이 기능을 살펴 보자. renderHeader.php, 오히려 renderHeader 내 기능입니다 그리고 내가보기 때문에 알고 여기 function 키워드. 이것은 분명히 그것을 C--에서 새로운 data--라는 인수를 그러나 나는이를 불렀다 수 아무것도하지만, 데이터를 호출 조금 clean-- 할 수 및 다만 특히, 추측을 당신은 다른 프로그래밍 한 경우 전에 더 높은 수준의 언어, 뭔가 C 이상, 개념적. 무슨 일이 동일한 오픈 브라켓을 수행 아마 대괄호을 의미합니까? 아니면 무엇을 의미하는 것인가? 우리는 네 C.이 본 적이 없다? 빈 배열입니다. 특히,이 의미하는 경우 그 사용자는 renderHeader를 호출하지 않습니다 인수와 함께, 나는 아직도 갈거야 데이터라는 주장을 가지고, 하지만 기본 값은 빈 배열 될 것이다. 그래서 그냥 좋은 편리합니다. 나는 사용자 소리 치지 필요가 없습니다 또는 당신이 내 기능을 잘못 사용 말한다. 난 그냥 사용자에게 기본을 줄 수 있습니다 값, 나는 특별히 걱정하지 마십시오. 이제이 기능, 나는 해요 나의 손을 흔들 것. 그러나이 추출 기능이 있습니다 우리는 데이터에서 이러한 변수를 전달하기 다음과 같은 방법으로 header.php에. 그리고 이것은 마지막 조각이다, 나는 펑키 구문, 생각합니다. 여기 내 새로운 버전입니다 의를 header.php-- 말 그대로, 말을 사용, 열기 브래킷 제목 CS50, 그리고 그것은 그 것이었다. 그리고 H1에 대한 같은 일. 지금은 분명히 말한다 꽤 펑키 뭔가. 그리고 날이 단순화하자 잠시으로 다음과 같습니다. 이것은 내가했습니다 것입니다 수 나의 제목을 변경했습니다. 그러나, 조금 못생긴 점점 PHP로 지속적으로 오픈 브라켓에, 다음 인쇄 기능을 사용합니다. 그것은 PHP는 속기이 밝혀 그냥 이것에 대한 표기, 기술적 인 등호, 호출 된 함수 대신 인쇄의 메아리 하지만 효과적으로, 같은 일이다. 그건 그냥 잘 보인다. 그냥 구문이다 설탕, 만약에 당신, 그건 내 코드가 조금 더 볼 수 있습니다. 그러나 그것은 밝혀,과 우리는 다시이를 볼 수 있습니다 오래 전에, 우리는이 전화를해야 귀찮게 긴 함수가 호출 HTML 특수 문자에 PHP, 그것이 밝혀 때문에 특정 입력이 있습니다 사용자가 우리에게 줄 수있는 그 또는 사용자가 우리에게 줄 수 있음을, 즉, 우리의 위치를​​ 중단 할 것입니다. 그러나 우리는 그 다음을 볼 수 있습니다 자바 스크립트와 주. 하지만 지금은, 그냥 알고 이 파일 headers.php, 단순히 제목을 소요 내가 전달, 그것은 확인 그것은 안전 확인은 웹에 주입한다 페이지, 그리고 내 제목으로 그것을 밖으로 뱉어 내 H1있다. 그래서 지금이 버전에 가면, 강의 제목을 다시 가지고 통지, 주 제로 다시 제목을 가지고 있으며, 실제로, HTML은 내가 발생 해요 무엇 나의 첫 번째 버전과 동일 내 공백을 제외하고 전 ... -, 나는 포맷 시작했기 때문에 다르게 내 코드는 조금. 하지만 생성 된 모든 것 내가 관심있는 코드. 그래서 저를 위해 일시​​ 정지하자 잠시 볼 질문이 있다면 또는 혼란 내가 만들었습니다. 좋아, 그래서 트위스트하자 좀 더 열심히 여기에 이 있는지 확인합니다 개선을위한 기회를 제공합니다. Helpers.php 또한이 있었다 기능, renderFooter을했다. 약 주목할만한 무엇 renderHeader 및 renderFooter? 그리고 또, 오늘의 목적을 위해, 알고 추출 기능은 단지입니다 전달 인자의 길 header.php와 footer.php에. 죄송합니다? 청중 : [들리지] 데이비드 마란 : 그래, 난 단지 이 라인이 필요 변경. 그래서 말 그대로, 나는 죄를 범했습니다 복사 및 붙여 넣기의, 다시 한번. 그것은 엄청난 수의 아니에요 라인,하지만 on-- 올 내가 복사하고 모든 것을 붙여있어 경우 하나의 작은 단어를 변경하려면, 그리고 하나의 작은 단어는 앨런 가리 밖으로 대, 여기에 바닥 글 여기에 헤더. 그렇지 않으면, 모든입니다 동일를 제외 물론, 함수의 이름. 그래서 우리는 더 나은 무엇을 할 수 있을까? 그럼 내가이 버전을 열어 보자 여기에, 이에 helpers.php에, 왜 난 그냥 얻을하지 않습니다 이것에 대해 스마트 작은? 약간 더 복잡한 쓰기 코드 만 렌더링 전화를? 그래서 근본적으로 무엇을 변경? 이 인수를들을 당장 두 개의 인수, 여전히 데이터. 그리고 첫 번째 무엇 아마 사용되고 이름 당신이 읽고있는 내용에 기초? 하더라도 구문의 일부는 여전히 새로운 기능입니다. 달러 기호 템플릿은 무엇입니까? 죄송합니다? 청중 : 머리글 또는 바닥 글. 데이비드 마란 : 머리글 또는 바닥 글. 그래서 분명히, 내가 결정하는 경우 변화하고있는 유일한 내가 원하는 템플릿입니다 print-- 및 템플릿에 의해 나는이에 대한 청사진 의미 내가 출력 할 코드, 그러나 나는 몇 가지를 연결하려면 values​​-- 그래서 경우에만 헤더의 또는 바닥 글, 왜 매개 변수화하지 않습니다 그 인수 달러 기호를 호출 템플릿? 그리고이 펑키 구문이 날 수 있습니다 여기에 변수에 경로를 만들 수 있습니다. 그래서 달러 기호 경로는 변수입니다. 이 구문을 무엇 당신이 잘 알고 있다면, 무엇입니까? 그래? 청중 : [들리지] 데이비드 마란 : 맞아요. 템플릿 인 경우, 인용을 끝내 인용, 헤더, 또는 템플릿 인 경우, 인용을 끝내 인용, 바닥 글, 거기에 그 라인 내가 강조했다고, 8 번째 줄, 단순히 헤더처럼, 그 이름을 복용, 도트 PHP로을 연결. 그래서 우리는이 연산자를하지 않았다 C에서이 점 연산자이다 당신이 있다면 PHP--에서 놀라운 일 자바 스크립트 또는 Java에 대해 잘 알고, 당신은 플러스를 사용할 수 있습니다 연결을 위해 로그인합니다. C에서는 neck--의 통증이다 여섯 (P)이 세트에서 내가, 미안 해요, 당신이해야 할거야 이 항아리 것이 골칫거리이다 문자열을 연결합니다. 왜? 글쎄, 당신이 가지고있는 경우에 때문에 긴이있어 캐릭터, 긴이있어 다른 문자열, 당신은 단지 그들을 함께 연결 할 수 없습니다. 당신은 무엇을 대신 C로해야합니까? 그래? 청중 : [들리지] 데이비드 마란 : 당신의 malloc해야 메모리, 또는 스택에 배열을 사용합니다. 그리고 당신은 사실에있다 충분히 그 배열이 큰하게 이 플러스이에 맞게, 플러스 백 슬래시 제로. 그런 다음 사용하여 그들을 함께 연결하여 루프와 고양이 또는 수동으로 저어, 기술 또는 임의의 수. 그리고 우리는 당신의 몇 가지를 보여 P-설정 여섯. 그것은 목에 통증이있다. 그리고 이것은 내가 대해 무엇을 의미하는지 진정으로 PHP 대 C 등이 항아리 대이. 당신은 훨씬 더를 얻을 수 무료 기능, 당신이 초점을 맞출 수 있도록, 이상적으로, 재미에 부호화 부, 당신이 해결하려는 프로젝트, 오히려 낮은 수준의 사소한보다. 그래서 그냥 생성 header.php 또는 내가 부르는 하나를 기반으로 footer.php. 그리고 실제로 내가 가면 의 index.php에 예고 모든 대신의 changed-- 것 헤더 렌더링이나 바닥 글을 렌더링 호출, 나는 다음에, 렌더링 전화 해요 내가 원하는 서식 파일의 이름입니다. 그리고 당신도,이 표시됩니다, 문제에서, 일곱 설정 우리는 당신이를 사용할 수있다 같은 기능은 송이를 만들기 위해 다른 웹 페이지의 움 큼. 그래서 오히려 너무 거보다 그 details--에 훨씬 더 당신은 다시 볼 수있는 문제 세트의가 살펴 보자 seven-- 솔루션의 지금 시작 부분에 더 흥미로운 문제. 지금까지 아무것도 우리는도 없어 수행 저장된 데이터가 있습니다. 사실, 우리는 단지 시간 이제까지 저장 한 우리가이 클래스에서 수행 한 일 우리는 잠시 매우 간단한 데모를했다 때 다시, 이에 우리는, C에서 파​​일 입출력을 사용 그리고 내가 내 이름으로 입력 생각하고, 한나의 이름, 그리고 마리아의 이름, 아니면 앤디의 이름 및 우리는 CSV의 file-- 저장 쉼표는 값 파일을 분리. 그리고 우리는 내가 생각하는 fopen-- 사용 내 기억으로 우리는 fprintf를 사용 그리고 우리는 파일을 저장. 자, 가장 간단한이다 데이터베이스의 형태로. 당신을위한 웹 사이트를 확인하려면 신입생 인스턴트 메시지 프로그램, 이에 신입생 이상적으로, 스포츠를 등록 할 수 있습니다 데이터와 뭔가를 할 수 있습니다. 지난 주, 우리는 아무것도하지 않았다 data--으로 우리는 단지 말했다, 당신은 정말, 등록되어 있습니다. 아니면 내가 이메일 감독관, 그리고 그것은 그 것이었다. 내가 할 수있는 경우 그러나 그것은 좋은 것입니다 그 감독관에게 CSV 파일을 제공 Excel 파일 등을들 수있다. 또는 더 나은 아직, 그것은 것 내가 할 수있는 경우에 좋은 이러한 사용자의 이름을 넣어 이름을 기숙사와 그 모든 데이터베이스에 그 단지는 영원히 살아있다 전까지는 데이터를 삭제를 선택합니다. 수 있도록 데이터베이스 나 정보를 조회합니다. 그리고 실제로, 그 데이터베이스가 무엇인지입니다. 우리는 오늘 소개하고 다음 주, 너무, 기술 라는 SQL-- 구조적 쿼리 다른 언어 언어,. 그것은 본질적으로 프로그래밍있어 언어,하지만 데이터베이스. 그리고 지금은 데이터베이스, 단지 슈퍼 멋진 버전으로 생각 Microsoft Excel에서, 또는 Google의 스프레드 시트, 또는 애플 번호. 그것은 일반적으로 할 수있는 프로그램입니다 당신은 데이터의 전체 무리를 저장 행과 열로, 아주 같은 당신은 엑셀 파일에있을 수 있습니다. 그러나이 특히 좋다 우리는, 엑셀 슈퍼 익숙하지 어떤 SQL은 당신이 할 수 있습니다하면 쿼리이있다 줄의 코드를 작성하여 정보 여기서 당신이 할 수있는, 경우에도 데이터베이스는 그 안에 만 행이 당신은 일을 슈퍼 빠른 찾을 수 있습니다. 사실, 엑셀 특히입니다 대용량 데이터 세트에 나쁜. 실제로, 몇까지 년 전에 밝혀졌다 엑셀은 당신이 저장 허용 data--의 최대 65,535 행 에서하지만, 많은 같은 소리 시간 나는 대학원 학생이었다 내가 걸려 넘어 기억 이 내가 생성 되었기 때문에 내 연구와 나는에 대한 CSV 파일 신속하게 분석하고 싶었다 그냥 엑셀에서 열어. 물론, 내 컴퓨터는 추락, 나는 이상 65,000 행을했기 때문에. 그러나 65,535 어디에서 왔는가? 마이크로 소프트가 무엇을하고 있었다, 아마? 두 당신의 능력을 가진 좋은 경우? 네, 16 비트를 사용하고 값은 행 번호를 나타내는. 그리고 16 두이다 65,536-- 마이너스 하나, 당신 때문에 경우 제로 인덱스는이이었다 의미 내가 할 수 행 가장 많은. 그리고 그것은 단지 디자인 결정이었다. 16 비트를 저장하여, 그들이 나를 제한 대신 40 억의 16,000 행에, 이는 내가 이상적으로 가지고 있었다. 하지만 지금, 우리는 갈거야 웹 컨텍스트에서이 더 소개합니다. 그리고 무엇 SQL에 대한 좋은 것은 심지어이다 그것은 꽤 강력하고 꽤 비록 정교한, 정말 종기 아래에 네 개의 키 조작, 네 주요 기능, 선택 will-- 경우, 데이터를 검색하는 검색을위한 데이터에 대한; 삭제하거나 데이터를 삭제; 데이터베이스에 행을 추가 삽입; 및 업데이트. 혹시 구글 사용한 경우에 따라서 스프레드 시트, 애플 번호, 마이크로 소프트 엑셀, 당신은 실행 한 대부분, 모든 인간으로 이러한 작업으로의 당신의 키보드와 mouse--를 사용하여 당신의 눈을, 데이터를 삽입하여 선택 또는 데이터를 검색하려면 또는 업데이트 데이터, 또는 데이터 삭제. 그래서 이것은 무엇을 의미합니까? 음, CS50에 미리 설치 IDE는 MySQL의라는 프로그램입니다. 그것은 무료, 오픈 소스의 슈퍼 인기있는 데이터베이스. 한국어는, 예를 들면,이이를 사용 그들이 사용하는 다른 도구 중 하루. 그리고 매우 인기있는 웹 사이트를 많이 사용 그것은 많은 부분은, 빠른 때문에 그것은 무료이기 때문에. 확실히 있지만 대안이 존재한다. 그리고 당신의 일부에 손 대고 있습니다 최종 프로젝트를위한 대안. 이 중 한편, 스크린 샷입니다 phpMyAdmin을라는 웹 기반 도구입니다. 그것은 우연의 일치입니다 이 웹 기반 도구는 또한 언어로 작성, PHP, 그러나 그것은해야 할 의미가 있는지 우리에게 제공하는 웹 기반 데이터베이스에 대한 인터페이스. MySQL이 일반적이기 때문에 뭔가, 역사적으로, 당신을 단지와 상호 작용하는 것 명령 행. 그리고 슈퍼 영웅이 될 것입니다 성가신 가지고 비밀 선택 텍스트 명령을 입력합니다 데이터는 데이터를 삽입하고, 데이터를 삭제합니다. 인터넷에 그래서 어떤 사람들 웹 기반 프로그램을 작성 단지 우리가 관리 할 수​​ 있음 우리의 데이터베이스에있는 데이터. 그것은 엑셀을 더블 클릭처럼, 그리고 이들의 웹 기반 버전을 실행. 그리고 당신은이를 사용하려고하는지 궁극적으로 다음 주,하지의 P-설정 여섯, 하지만 무언가를 구축하는 것입니다 CS50 금융,라고하는 의 데이터베이스를해야 할 것입니다 사용자 이름과 암호를 가진 사용자, 달러는 금액 그들이 자신의 은행 계좌에 있습니다. 그것은 될 것 당신이 저장하는 데 사용할 무엇인가 기호 및 수량 주식의 사용자 가상하여 구입 당신이 그들에게주지 달러. 그리고 그것은 사용자 수 것 귀하의 사이트에 등록, 그래서 당신의 친구가 당신의 웹 사이트에 조정할 수 있습니다 실제로 등록 로그인 및 놀 및 코드에서 오류를 찾아보십시오, 귀하의 웹 사이트에서 버그를 찾아보십시오. 그리고 그들은 단순히으로 등록 할 수 있습니다 효과적으로, 자신을 추가 코드를 통해 당신은 당신의 데이터베이스에 기록. 예를 들면,이 스크린 샷은 빠른 무엇 데이터베이스는 다음과 같을 수 있습니다. 이 중 하나였다 작년의 solutions-- 이 미니 엑셀처럼 우리의 데이터베이스에 저장, 파일, MySQL의 호출이 소프트웨어에 저장된다. 좌측, I 명백하게했습니다 모든 사용자에게 고유 번호를 부여. 두 번째 열에서, 내가 준 모든 사람이 사용자가 내 자신을 name-- 그 (것)들의 사이에서. 그리고 오른쪽에, 나는 그들에게 해시를 부여했습니다. 지금이 실제로 암호입니다, 하지만 일반 텍스트 암호 아니다. 이 경우, 암호화 된 패스워드의 당신은 것, 또는 해시 암호를 입력합니다. 어떤 우리가 오래 전에 다시 올 것이다. 그러나 당신은 이제까지 읽은 경우 방법에 대한 기사 일부 은행이나 일부에서 비밀번호 웹 사이트는, 손상되었을 수 있습니다 그것은 일반적으로 두 가지 중 하나를 의미 할 수있다. 그래서이 여섯 사용자 만 발췌 한 것입니다. 여러분 모두는 이제 알 수 있습니다 해킹 또는 크래킹을 통해 밖으로 우리 육명의 암호는 무엇인지. 그러나 당신은 이제까지받은 한 경우 경고 또는 사과 회사 또는 웹 사이트의 말에서, 죄송합니다, 해커는 우리의 데이터베이스에 침입 당신은 아마 변경해야합니다 당신의 암호, 그게 무슨 뜻 수 있는가? 그런데, 하나를 의미 할 수있다 회사는 더 바보 같은있다 과 암호를 저장하고있다 이 같은 열에서 암호화되지 않은. 어떤 대적을 의미한다, 누가, 데이터베이스를 훔쳐 말 그대로 알고 사용자 이름과 암호를 입력합니다. 즉, 최악의 시나리오입니다. 그리고 당신은 P-세트에서 볼 수 있습니다로 일곱, 방지하기 쉽습니다. 절대적으로 변명은 거기에 없다 오늘날의 인터넷 어리 석음의 형태. Two-- 우리는 몇 가지 기사를 찾을 수 있습니다 이 여전히 있다는 사실을 증언하기 nonetheless--, 발생 두, 어쩌면 상대 데이터베이스의 버전을 훔쳤다. 어느 여전히 종류의 나쁜 해주기 때문에 그들은 내가 여섯 고객을 알고, I는 사용자 이름을 알고 여섯 고객, 나는 암호화 알고 버전, 또는 해시 버전 여섯 고객의 암호. 당신의 모든하지만 누가 수도 [짓을 한거야? 해커 2?] 당신은 암호를 금, 또는했다 경우 문제의 해당 버전을보고 세트, 왜 아직도 조금 걱정을하다 사탄은 당신의 해시를 알고 있다면 암호? 청중 : 그들이 할 수 있기 때문에 전체 사전을 입력 해시 함수로. 그리고 비밀번호는 사전의 경우 단어 [? 그들은 단지 match-- 수 있습니까?] 데이비드 마란 : 정확히, 적 당신의 일부처럼 코드를 작성할 수 있습니다 [위해 한? 해커?] (2) 당신은 반복된다 사전에있는 모든 단어, 또는 모든 가능한 조합 Z 통해 nine--을 통해 하나 이는 많은 같은 소리하고있다. 그러나 컴퓨터, 그것은 무척 빠르다. 사실, 즉이었다 [포인트? 해커 2?]했다 그 물건을 촬영합니다 문자 그대로, 다음과 같습니다 및 리버스 엔지니어링 무엇 실제로이었다. 어떻게 우리가 할 수있는 그래서 우리는 볼 것이다 보다 효율적으로이를 저장합니다. 다행히도 MySQL의에서 밝혀 데이터 유형이있을 것입니다. 그리고 대한 재미있는 부분 중 하나 데이터베이스 디자인은, 솔직히 말해서 실제로 자신을 위해 결정하는 당신은 어떻게 데이터를 표현해야 하는가? 당신은 전화 번호를 나타내야 큰 숫자, 또는 긴 같은 INT? 아니면 실제로합니까 문자의 순서로? 그리고 아주있을 수 있습니다 이 아닌 사소한 영향. 사실의 한 초기, 재미 밀접한 이야기 마크 주커 버그가 구축되었을 때입니다 페이스 북, 그것은 원래 작성되었습니다, 여전히 크게 PHP로 작성되었습니다. 그리고 가장 큰 과제 중 하나 그들은 초기 확장되었다에 직면했다. 그들은 후에 학교를 추가로 유지하는 경우 학교 졸업 후, 나의 지식, 원래 솔루션 중 하나 복사 및 붙여 넣기가 본질적으로했다 데이터베이스의 일부 및 코드의 일부, 하버드가되도록 자신의 서버에서 실행, 와 MIT는 자신의 서버에서 실행되었다. 그리고이 왜, 몇 가지 당신의 사람들을 불러 있습니다, 당신은 친구가 없습니다 다른 네트워크에. 당신은 아마에서 친구가 없습니다 10 년 정도 전에 MIT 나 하버드, 하지만 당신은 네트워크를 확장 할 수 부분적으로 그 이유. 그리고 가장 큰 과제 중 하나 마크와 페이스 북과 같은 기업에 대한 실제로 수백을 처리 그리고 수천 수백만 초당 요청. 그래서 일이 우리가 시작합니다 이번 주 이야기 정말 밀접한 될거야 좋은 소프트웨어를 작성하고 대중적으로 성공적인 도구 그 많은 사용자를 처리 할 수​​ 있습니다. 그래서 우리는 것들에 대해 이야기 할 것입니다 인덱싱 및 검색 등, 하지만 오늘 그 것이다. 우리는 수요일에 더 당신을 볼 수 있습니다. [음악 - "펠트"주제] 데이비드 마란 : 당신은에 있습니다 그것은, 그것에서 뺍니다. 그리고 당신은 고수 할 필요가 없습니다 메모리의 일부 미리 정해진 양. 그럼, 그 호출 할거야? 스피커 1 : 음, 무슨 일이야? 스피커 2 : 당신은 무엇을 의미합니까? 그는 강연을주고있다. 데이비드 마란 : 그리고 우리가 사용할 수 있습니다 기능은 memory--하는 malloc을 호출 스피커 1 : 왜 그의 팔은 움직이지 않는거야? 스피커 2 : 음 that's-- 당신도 알다시피, 그건 정상입니다. 그는 단지가 것처럼 단지 큰 소시지가 매달려입니다. 스피커 1 : 그건 정상입니다? 스피커 2 : 그래, 우리 생각 단지 실수로 그가 가정 순간 접착제와의 탈취제를 대체했다.