>> [음악 연주]
>> DAVID J. 마란 : 좋아.
이 CS50입니다.
이 8 주간의 시작입니다.
그리고 당신은 우리가 중단 된 것을 기억하고있을 것 마지막으로 새로운 언어보고
모두.
사실, 하나에서 그 상당히이다 경량 그것도 아니다
프로그래밍 언어.
그것은 우리가 할 수있는 마크 업 언어이다 실제로 구조 및 웹 페이지를 확인합니다.
그리고 때 당신에게 뭔가를 이 항아리와 함께
또는 당신은 곧 것입니다 경우 당신은 이미하지 않았습니다.
우리는 캐스 케이 딩을 사용하는거야 스타일 시트, 또는 CSS, 어떤
언어의 또 다른 유형은 속성과 값
즉, 우리가 할 수 있도록거야 것들 색을 변경하고자
및 위치를 변경 및 개조하면 되겠 이러한 종류의.
그러나 오늘 이후, 우리는에 시작 더 강력한 언어에 초점
PHP와 같은 실제 프로그래밍 언어.
>> 그래서 PHP와 몇 시간 동안 주변되었습니다.
그리고 당신은 그것을 볼 수 있습니다로 주로 설계되었습니다
초기에 실제에 대한 웹 개발에 사용
실제로 웹 페이지를 생성하는 단계를 포함한다.
그렇게 어떤 종류의 기능은 언어를 않습니다
웹을하기 위해 필요 동적으로 페이지?
>> 즉, 당신은 생성하려는 경우 페이스 북의 같은 콘텐츠 dynamically--
끊임없이 변화 뉴스 피드, 또는 시간에서 팝업 인스턴트 메시지
무엇처럼 외엔합니다 기능 키 부분
당신은 프로그래밍 언어에 필요한 그 당신에게 동적으로 할 것
화면에 새로운 정보를 인쇄?
>> 학생 : 코드입니다.
DAVID J. 마란 : 코드입니다.
확인을 클릭합니다.
우리는 걸릴거야.
좀 더 정확한.
내 말은, 우리가 할 수있는 솔직히 C,이.
그것은 목에 통증이있을 것입니다.
이 노력은하지만 ...인가?
>> 학생 : 네.
변수, 아마?
DAVID J. 마란 : 변수.
확인, 확인을 클릭합니다.
변수는 확실히 우리를 도울 수있다.
심지어 뭔가 간단.
우리는 처음에 그것을 사용 첫날의 프로그램
우리는 실제로 "안녕하세요."라고 할 때
>> 학생 : 인쇄합니다.
>> DAVID J. 마란 : 인쇄, 오른쪽?
인쇄, 또는 printf의 C. 그래서 모든 시간의 세계,
우리는에 했어 우리 처분 language-- C,
particular--에서 심지어 그 문제에 대한 스크래치 그
텍스트 문자열을 생성 할 수 있습니다.
>> 우리가 지난 주에보고뿐만 아니라 HTML 경우입니다 텍스트 문자열의 단지 전체 무리
열린 괄호와 폐쇄이기는하지만 브래킷과 운율의 일종
그리고 그 뒤에 이유, 그럼 우리가 정말 할 수
어느 웹 페이지를 생성하기 시작 수동의 gedit에서 그들을 입력하여
또는 Microsoft Word에서, 그에 대한 문제가 .. 우​​리는 텍스트 편집기가 필요합니다.
>> 아니면, 코드를 작성할 수있다 당신의 제안에
이전, 즉 우리를 할 것입니다 동적으로 HTML을 생성,
그리고 우리가 가고 무엇 PHP로 일을 시작합니다
궁극적 심지어와 자바 스크립트라는 언어,
또 생성 한 언어를 사용한다.
그리고 실제로이 무엇 페이스 북이다 많은, 많은 다른 사이트
실제로 동적으로을에 할 당신에게 새로운 정보를 표시합니다.
>> 그래서 이일을 시작하자 암호 같은보고 라인,하지만 하나
그 사실은 꽤 강력.
지금까지, 우리는 C를 사용하고, 이는 컴파일 된 언어입니다.
그리고 그냥 빨리 recap--은 컴파일 언어는 어떤 특징이있다?
당신은 분명히 컴파일해야 그것은이지만, 무엇을 의미할까요?
그래?
>> 학생 : 그것은 할 필요가 기계어로 조립.
>> DAVID J. 마란 : OK.
그것은 조립 될 필요가 기계 코드로.
그래서 당신은 소스 코드를 가지고 이는 영어와 같은 종류의 것입니다.
당신은 해당 변환 뭔가 낮은 수준,
궁극적으로 호출 객체는 0과 1의 code--.
그리고 그 공의의의 1의 그 CPU, 인텔에 의해 만들어진 것과 같은,
실제로 이해합니다.
>> 이제, PHP와 파이썬과 루비와 자바 스크립트 및 기타 큼
언어는 컴파일되지 않습니다 언어는하지만 언어를 해석,
어떤 의미 당신은 단지 다음을 입력하고 당신은 0과 1로를 끄지 마십시오.
당신은 대신 다음과 같은 제공 누군가 다른 사람의 프로그램에 입력,
통역했다.
그리고 그 사람의 프로그램 설계되었습니다
무엇을 이해하기를 각각 파이썬이나 PHP의 모든 기호
루비 또는 수의 또는 다른 언어는 것을 의미한다.
>> 그래서 우리가 필요로하는 모든입니다 이 같은.
그래서 사실, 내가 갈거야 기기에 가서
여기에, 단지에 어떤 이전 창, 우리는있어
앞서 열린 갈 라는 파일이, 안녕하세요, 말한다.
이제 이전에, 내가 저장 한 수 심지어 파일 확장자이,
하지만 난 할거야 뭔가 여기에 더 간단.
내가 가서 시작하는거야 이 암호 같은 구문이 파일.
그래서 "사용자, 빈, ENV, 환경, PHP. "
>> 이 규범 단순히 한 줄입니다 내 운영 체제를 말하려고,
지역에서 찾을 이동 즉 어떤 환경,
PHP는 interpreter-- 핵폭탄 낙하 곳 그리고 가서 그 통역을 사용
다음 코드를 해석합니다.
지금,이 종류의 것입니다 PHP의 추한 기능입니다.
그러나이 언어, 어떤 시간 당신은, PHP 코드를 작성
이러한 추한 중 하나가 필요 시작의 경계를 PHP 태그
당신의 code-- <? PHP의.
>> 그러나 여기 아래에, 지금은 뭔가를 할 수 아주 간단합니다, 같은의 printf 안녕하세요 쉼표
세계 백 슬래시 N 닫기 인용, 닫는 괄호.
그리고 단지 이익을 위해 측정, 내가 갈거야
앞서와 가까운 이동 여기에 내 PHP 태그
그래서 모든 것이 외모 잘 꽤 인쇄.
>> 그리고 최대한 빨리 저장을 클릭하는 gedit를 충분히 실제로 스마트
바로 그 첫 번째 줄의 열람 및 아, 그리고 만약 당신이 PHP 코드를 작성하고, 실현.
나에게 구문 강조하자 색상 그것
그래서 여기 스탠드 좀 더 알아.
하지만 지금은 갈거야 내 터미널 창에 아래로.
나는 확대합니다.
>> 이 프로그램은 "안녕하세요"라고했다 그래서, 안녕하세요 점 슬래시를 할거야
하지만 권한이 거부되었습니다.
배시.
우리는 실제로 들어 일이 몇 주 전에
Shellshock의 맥락에서, 그 버그 중 하나입니다.
>> 그러나 권한은 우리가 본 적이 거부 전에, 어쩌면 다른 맥락에서.
사람이 어떻게 기억 하는가 당신이 뭔가를 해결할 수 있습니다
권한은 다음과 같이 거부되는 경우?
이 명령은 적어도 무엇입니까?
>> 학생 : chmod를.
DAVID J. 마란 : 그래, chmod를, 파일의 방식 변경.
그리고 당신은 더욱 익숙해 질 것이다 이후의 문제와이 다음 주
설정합니다.
하지만 지금은, 내가 변경거야 모드는 읽을 수 없습니다
하지만 모든 사람이 executeability을 제공합니다 권한, 능력
이 파일을 실행합니다.
그리고 할당 할거야 파일에 그 안녕하세요.
>> 지금 점 슬래시를 할 경우 안녕하세요, 당신을 입력 사실, 볼, 내 프로그램, 안녕하세요.
그리고 어떤 단계는 내가했다 분명 모두 건너 뛰?
컴파일.
그래서 난 그냥 아주 간단하게이 프로그램을 실행.
>> 그리고 그것은 당신이 작업을 수행 할 수 있습니다 밝혀 C. 연상 구문의 많은
나 오늘의 코드에 가자 이는 내 가상 호스트 디렉토리에 넣어
여기에, 진짜 이유 우리는 되돌아 올 것입니다.
그리고 나는에 갈거야 조건 1,의 말을 보자.
>> 그리고 먼저, 여기에 볼과 무엇보다도 주석의 전체 무리.
그러나 이것은 실제로 PHP의 재 작성
프로그램의 우리는 일주일에 한 하나라는 조건 1.C
여기서 목적에 이 프로그램의 수명
물어 분명히있다 정수에 대한 사용자
다음 일부 솜 털을 그것은 이에에 분석
이 양의 경우 또는 말 제로 또는 마이너스가 동일.
그리고는이를 가지고 있기 때문에, 어쩌면 하나의 작은 세부 사항을 제외하고,
그것은 C.에서 지금까지 흡사
>> 하나의 특성은 무엇인가 여기에 아마 밖으로 점프
조금 다른 같은 당신은?
어쩌면 두 가지.
그래?
>> 학생 : 달러 기호 N?
>> DAVID J. 마란 : 그래.
그래서 달러 기호 n은 존재한다.
그리고 달러 기호로 우리는 가고, 볼
처음으로 수정 될 PHP의 모든 변수.
그것은 모두 좋은 bad-- 좋은 그것은 종류의 명백한인지 알아
그것의 그 나쁜 변수, 또 다른 점은 입력합니다.
그리고 다른 하나는있다 것은 우리가하지 않은 아주
적어도이 맞춤법에 의해, 본. 그래?
>> 학생 : Readline의.
>> DAVID J. 마란 : Readline의.
Readline의 우리에서, 그 자체를 참조하지 않았다 뭔가가 존재하더라도 C,
마찬가지로, 우리가있는 getString을 사용했지만, 이것은 그것의 대조이다.
나는이 들어갈 경우에 따라서 될 일이 디렉토리,
내 가상 호스트의 비트에 설명 할 것으로 디렉토리 내 소스 디렉토리,
내가 가서 점 슬래시을 conditions-- whoops-- 점 슬래시
조건 1, 당신은 다시 볼 수 있습니다 같은 issue-- 권한이 거부되었습니다.
>> 그래서 저를 확대하자 플러스 chmod를 할 조건 점 슬래시 조건에 X.
나는 50, 정수를 부탁합니다.
그리고 우리는 이것을 할 수 있었다 게임 하루 종일.
그것은 정확하게 행동 것 그것은 일주일에 그랬던 것처럼.
>> 를 제외하고, OK 그래서 모든 차이를 보이지 하지 구문의 단지 약간의 비트,
하지만 상단에, 나는 다시 이 라인이 있던
내가 뭔가를 만들 수 그 안녕하세요라는 C 프로그램처럼 보인다
라는 조건 1.
그러나 그것은 아니다 0과 1 내가 직접 실행하고 있습니다.
대신이 실행중인 이름이 통역
언어에 동일하게 발생합니다.
이 프로그램은 내 코드 PHP라고하고, 선 아래 하나는 그것으로 전달되고있다.
>> 우리는 다른 아주 간단한 작업을 수행 할 수 있습니다 뭔가 연상 예
우리는 주 전에했다.
다시이의 일종 코드의 임의의 덩어리
그 분명히하지 당신은 그것을 어떻게 실행할 때?
어떤이는 아마도, 인쇄거야?
>> 그래서 처음에 라인 (16)에, 그것은이다 x는 아마 지금이 말할 것이다.
% d를 달러의 printf I와 동일하다.
그래서 그때는 큐빙 것, 점, 점, 라인 (17)에, 점.
그리고 18 나타납니다 라인 함수 각 얼음을 호출합니다.
어디 삼승 정의된다?
>> 글쎄, 한 줄에 25에서처럼 보인다 그래서 모든 다른 아니다.
나는 위의 몇 가지 의견을 가지고 이는, 그러나 대부분의 경우,
그것은 매우 간단합니다 이식 또는 변환
PHP 버전으로 C 프로그램에서.
그러나 지금 몇가 어쩌면 밖으로 이동해야 차이.
또 어떤 것은 방법에 대한 다른 C에서이 같은 프로그램을 작성할 수 있는가?
>> 학생 : [들림].
>> DAVID J. 마란 :있다 어떤 프로토 타입 구성 Top 없습니다.
그래서 PHP-- 솔직히, 현대 languages​​-- 많은
많은 스마트 더 도움이됩니다 C는 점에서 컴파일러는보다
여기에 기능을 넣을 수 있습니다, 당신은, 여기에 아래 함수를 넣을 수 있습니다
인터프리터는 것입니다 당신에게 독서의 부탁을합니다
전체 파일이 결정되기 전에 일부 기능은 존재하지 않습니다.
나중에 그래서 좋은 개선 년.
하지만 뭔가가 또 다른 나 여기 결석.
그래?
>> 학생 : [들림].
DAVID J. 마란 : 우리는 필요가 없습니다 변수의 타입을 선언
그래서 우리는 전에 긴 것을 볼 수 있습니다 PHP 상이한 유형이있다,
하지만 당신은 그들을 지정할 필요가 없습니다, 이는 또한 좋고 나쁜 모두입니다.
그리고 한 가지의 누락이있다.
>> 학생 : 어떤 라이브러리가 없습니다.
>> DAVID J. 마란은 : 더 라이브러리가 없습니다.
OK, 그래서 좋다.
우리는 상자의 밖으로 더 많이 얻을.
그래서 실제로는 훨씬 더있다 내가 생각했던 것보다 상황이 달랐다.
어떻게 다시 방법에 대해?
그게 뭐야?
그것은 한 번 더 말?
>> 학생 : 포인터.
>> DAVID J. 마란 : 아니 포인터.
OK, 적어도이 예에서, 아니.
그게 공평.
그래서 포인터가 아니다 실제로 일반적으로 PHP에서.
뭔가라는 언급이있다, 그러나 우리는 거기에 너무 많은 시간을 소비하지 않습니다.
그리고 다른 무엇?
>> 학생 : 주.
DAVID J. 마란 : 주.
그래서이 문제 야했다 나는 생각했다.
더 메인 엔트리 포인트가 없습니다 확인합니다.
당신은 단순히 당신의 코드를 작성하기 시작합니다.
그리고 이것은 실제로 유리 될 것
우리는 전환 할 때 순간적으로 실제로 사용하는
이 같은 언어로 웹을 기반 프로그래밍하는 동안 우리
하나의 엔트리 포인트를 갖고 싶어하지 않습니다.
우리는 한 무리를 할 수 있습니다 URL을 다른 파일들을
모든 사용자 입력에 복용 출력을 생성한다.
>> 하지만, 여기에 아주 엉망이다 예를 들어 나는 지난 시간에 약속 있음
즉이 폴더에 여기에, 맞춤법 오류.
이는이 파일 검사기에 따라서 우리 , 거기에 너무 많은 시간을 할애하지 않습니다
본질적 porting-- P-O-R-T. 그것은, 말하자면 주어진 단어 만이다
당신은 하나의 언어로 변환 수동으로 일반적으로 다른.
>> 이 PC의 포팅 PSET 5에서 맞춤법의 버전.
그리고 본질적으로 변환하는 시도 가깝게 내가 할 수있는 라인으로 그 라인.
그래서 당신은 이런 종류의 일을 좋아하는 경우에, 실제로 어떤 점에서 가치가있다
면을 위로하여 모두를 당겨 면과 같은 무엇을보고
다른거야.
그러나 그들은 무척 비슷한 것.
당신이 기억한다면 무엇을 맞춤법도, 모습
당신은하지 않았다하더라도 이 파일을 변경해야,
꽤 비슷 구조적으로 단지 몇으로
여기 저기 변경.
>> 그래서이 꽤 있다고 말할 만하다 철자를 변환하는 간단
C에서 PHP에.
그러나 사전에, 거기에 더 강력한 무엇인가.
내가 가서 만들어 보자 내 자신의 dictionary.php 파일.
그에 따라서 약간의 차이 우리가 .c 대신을 .php가 전화 할게.
이 PHP 파일이기 때문에, I 약간이 annoyingly--하더라도 -
으로 파일을 시작합니다 같은 PHP 태그.
그리고 앞서 갈거야 그리고 몇 가지 기능을 정의합니다.
체크인이라는 기능, 전에 같은 단어에 걸릴 것.
그러나이 인수의 달러를해야 할 것
우리는, 다시, PHP를 사용하고 있기 때문에 로그인합니다.
의 또 다른 기능 dictionary.c 부하이었다
그리고, 사전의 이름으로했다 그래서 나는 갈 준비가 그 기능을 얻을 것이다.
>> dictionary.c 또 다른 하나는 무엇입니까?
크기는, 가장 좋은 것 중 하나였다 적어도 당신이 주변에 몇 가지 변수를 유지하는 경우.
그래서 크기는 변수를 반환합니다.
그리고 언로드가 있었다.
>> 그래서이 네 가지가 있었다 문제의 기능 세트 (5)
당신과 함께 구현하는 데 필요한 것을 일부 데이터 구조 또는 구조.
그래서 내가 약속에 그 PHP, 우리는 선언 할 수 있습니다
해시 테이블, 예를 들어, 더 쉽게 모든 것을.
사실, 해시 테이블을 원하는 경우, 난 그냥 그렇게 갈거야
내 해시 테이블이있다.
그리고 그 노트는 엉망이다 우리는 지난 시간에 중단 된 것을.
내가 원하는 경우 그리고 당신은, 무엇을 알고 크기에 대한 변수, 잘,
이 하나는 모두가 아니다 C에서 서로 다른,
하지만 난 가서 그렇게 할거야.
그리고 데이터 유형을 알 수 없습니다.
내가 나중에 다시 갈거야, 그리고 실제로 여기에 몇 가지 의견을 추가 할 수 있습니다.
그러나 부하는?
>> 만약 달러 기호 사전 내 파일의 이름입니다
나는 실제로로드 할 지금이 테이블에 단어,
나는 실제로 할 수있는 매우 간단하게 뭔가.
보이면 이것은 minorly입니다 annoying-- PHP에서,
당신은 내부에 지정해야 함수의 당신 경우
일부 글로벌 액세스하려면 외부 정의되어 변수입니다.
>> 그러나 특히 아니다 지금 재미.
무엇보다 흥미로운 것은이 각입니다 나는 지난 시간에 언급 한 구성.
그리고 PHP는 기능이 밝혀 그 목적은 인생에서 호출 된 파일
파일을 열고 읽을 것입니다 배열의 모든 라인
다시 그들에게 손을.
>> 어느 내가 그렇게 사전을 할 수있는 말을하는 것입니다 지금 효과적으로 내가 파일을 호출 할 때,
이 날 다시 손을 것입니다 파일에서 단어의 배열.
그것은 모두 좋지 않다.
아직 라인이 될 것 즉, 뭔가 리니어.
하지만 가서 반복 할 수 이러한 각각의 단어 사용을 통해
그 문법은 우리가 잠시 지난 시간을 보았다.
그리고 당신은 그것을 더 볼 수 있습니다 곧 PSET에.
>> 하지만 지금은 루프 반복하는이 사전의 각 단어 이상.
그리고 반복 될 때마다, 난 기억 "단어."현재 단어를 호출
그리고 모든이에 걸릴 거예요 사전이에 단어를 넣어
워드 추측 될 것 "참."
그건 내 삽입 기능입니다.
그건 내 부하 함수의 내 사전에.
이제 때문에 속임수의 비트입니다, 당신은 거기에 실제로 무엇을 알고
단어의 끝에 백 슬래시 N의 나는 아마 제거해야,
PHP가 있기 때문에 그러나 그것은 문제가되지 않습니다 기능이라고 잘라있는 그대로
맨 마지막에 하나의 문자 오프 갈비.
그래서 거기에 아무 문제.
우리는 앞서 실제로 갔어요 그 바로이 단축.
지금은 아마 추적한다 크기, 그래서하자 적어도 무사히 데려 ...
크기 ++.
나는 이전과 그 작업을 수행 할 수 있습니다.
그리고 이것은 아마도 것입니다 의는 true를 돌려 있도록, 잘 작동합니다.
완료.
PSET 5.
>> [웃음]
>> DAVID J. 마란 : OK.
우리는 다시 그렇게 할거야 너무 다음 PSET,와.
그래서 크기에 대한?
음,이 하나는 희망에 관한 것입니다 당신이 마지막으로 기대하는 것처럼,
내가 할 필요가 있지만, 이 바보 글로벌 것.
그것은에서 단지 장난 일 뿐이다 언어의 디자인.
>> 그러나 검사는 조금 더 재미있다.
나는 달러에 전달하면 그래서 내가 먼저 말을 서명
액세스를 갖고 싶어 그 전역 변수 테이블.
그리고 지금 내가 원하는 경우 단어가 있는지 확인,
나는 단순히 그에 해당하는 경우라고 할 수 있습니다 다음 표에 설정하고,
다음 가서 반환 사실; 또, false를 돌려줍니다.
완료.
PSET 5의 나머지 절반.
>> 좋아요, 다시, 난 몇 모서리를 절단.
공평, 이만 몇 초를
이 구현에.
그리고 아마 모든 조롱해서는 안 시간은 너무 PSET에 넣어.
이렇게하여 strtolower는 함수이다.
뭔가 비슷한 실존주의 C에서, 적어도 문자의 경우,
하지만 PHP의는 전체 문자열 버전을 얻었다.
>> 즉 모든 것을 강제 것 당신의 어느 일부를 소문자로
무엇을 정규화하기 위해 수행했을 수 있습니다 당신은 당신의 사전에서 퍼팅했다.
그리고 지금 당신도 C에서이 작업을 수행 할 수 있습니다.
이것은 PHP와 아무 상관이있다.
>> 그러나 언제든지, 당신은 부울 조건,
라인에 뭔가 같은 만있다가 10,
true로 평가하는 것 또는 거짓, 그리고 만약 다른 명확하게
true 또는 false를 반환, 내가 할 수 단순히 정말 섹시합니다
바로 이런 일을한다.
그래야 나의 체크 기능이있다.
오른쪽, 경우 부울 , true 또는 false를 반환
그냥 바로 그것을 반환 할 수 있습니다.
>> 그리고 몇 가지 다른 비틀기있다 나는 여기 저기 만들 수 있습니다.
Load-- 언로드는, 그런데, 그 이루어집니다.
아무것도 할 수 없습니다.
모든 메모리에 있기 때문에 PHP와 다른 언어
실제로 당신을 위해 관리됩니다.
C에서 반면, 그래서 당신은 고통스럽게 배운,
아무것도 당신의 malloc 또는은 calloc 또는 realloc을, 당신은 자신을 확보해야합니다.
당신은 fopen 아무것도, 당신이 FCLOSE해야, 자원이 궁극적으로 해제되도록
그리고 Valgrind의 같은 도구는하지 않습니다 통지 및 불평하지 않습니다,
하는 그들에 실행하는 것이 일이다.
>> 그러나 확실히,이 수행해야 바로, 일부 캐치 할 수?
그렇지 않으면, 우리는 종류의 낭비 주의 전체 무리.
그래서 여러 가지 이유가있다 왜 우리는 종류의,이 궤적을
하지만, 트레이드 오프가있다.
마우스 오른쪽 단추로,이 주제하고있다.
>> 어떤 일이 트레이드 - 오프 (trade-off)는 수도 여기에 C에서 PHP로 이동?
모두가 지금까지 다른 것보다 승리 같은 느낌 여기에 또는이 추의 비트.
그래.
그게 뭐야?
>> 학생 : [들리지] 메모리.
DAVID J. 마란 : 속도.
확인을 클릭합니다.
글쎄, 내 속도는 매우 빨랐다.
오른쪽?
그러나, 프로그램의 실행 속도?
OK, 그래서 공정한 점이다.
>> 그것은 사전에, 나는 일이 일어날 수 있도록 모두 나의 시도 솔루션을 보이기는 하나
나는 큰 보드에 있었다 시도 기반 솔루션이었다
나는 여기에이 디렉토리에 그 있습니다.
그래서 나는 순간에, 내가 가서 할 수 있습니다 킹 제임스 성경에서이 작업을 실행,
입력 타격.
그리고이 희망 정확 끝에 구현
총 나에게 시간을 제공합니다 그에 0.38 초
하나 다소 임의적 예.
>> 그리고 지금이 들어갈 경우 제 2 터미널 창
처음의 gedit을 열어 여기 경우,하자 나, 이는 다시 오늘날의 code--로 이동
이 디렉토리에 이곳에와 내가 가서 철자를 실행하자.
그러니, 명확하게 이것은 PHP 버전입니다.
난 그냥 여기의 상단을 표시하고 있습니다.
>> 그래서 물결 CS50의 철자를 할 경우 PSET 5 텍스트는, 킹 제임스, 입력합니다.
그것은 쓰는 것보다 여전히 빠르다 C에서, 그러나 전체 시간
반면, 통지, 0.93, 내 C 기반의 구현은 0.38이었다.
그래서 비 단순 차이이다.
>> 그리고 이것은 단지 하나의 파일에 있습니다.
당신은 두 실행시키고 큰 보드 대 프로그램
및 입력의 전체 무리가 시험이 반드시 추가 할 것입니다.
그리고 우리는, 더 큰 데이터 세트를 가지고 있다면 이 역시 더욱를 추가합니다.
그래서 그래, 어떤 가격을 지불 속도가 참으로 경우입니다.
그 밖의 무엇?
그래?
>> 학생 : RAM 사용의 양.
>> DAVID J. 마란 : RAM 사용의 양.
그래서 1 초를 포기하지 않았다 이 PHP를 작성할 때 생각
에 같은 버전 얼마나 메모리 나 사용했다.
나는 완전히 PHP에 그 연기 해요 자체 누구든지 해당 프로그램을 썼다.
그리고는 확인 될 수 있습니다 하지만 만약 실제로 정말
많은 성능을 짜내는 신경 내 프로그램 중 또는 내 웹 사이트 중
또는 어떤 도구 중 어쩌면, 짓고 있어요
PHP는, 참으로, 올바른 언어가 아닙니다.
>> 그리고 사실, 그것은을 위해, 왜 예, 많은 웹 servers--
실제 프로그램이 웹 content--을 제공
PHP에 기록되지 않습니다 파이썬이나 루비.
그들은 같은 기록 당신은 지금, PSET 6 다하겠습니다
당신이 짜 할 수 있도록 C에 그것에서 모든 성능
정말 운동 무엇을 세밀하게 제어
아래 진행 후드가 아니라 그냥 가지고
몇 가지 더 부여 수준의 데이터 구조.
>> 고려, 모든 후, PHP에서 누구든지 구현
해시의 개념 실제로 더 많은 것은 table--
제대로 연관 array--라고 그는 작업을 수행 또는 그녀는 어떤 종류의 어떤 생각을 가지고
입력하면 될거야 구조에 넣어?
그래서 분명하지, 그렇지?
그것은 일반적인 도구입니다 의 툴킷
원하는 사람에게 제공 그래서 반드시 그것을 사용하고,에
궁극적으로 최적화 될 수 없다 정확히 당신이 원하는 것을 위해.
>> 그래서 무역 offs-- 개발 시간은 수도 성능은 다를 수 있습니다, 차이,
복잡성 또는 메모리 사용량이 다를 수 있습니다.
그래서 당신은 발견 할 것이다 무엇 점점이 있다는 것입니다
다른 될 것 무역을위한 도구를 제공합니다.
그리고 슈퍼 대부분 사실 이 클래스에있는 사람들의 마지막 프로젝트,
믿거 나, C는하지 않을 수 없습니다 사용할 수있는 권리의 언어이어야합니다.
>> 그리고 테이크 아웃의 사실, 하나 궁극적으로이 같은 모든 클래스
당신에 대해 생각을 얻을 것입니다, 글쎄, 당신은 무엇을 해내한다
선반 때 당신이 원하는 몇 가지 문제를 해결합니다.
그리고 실제로, 우리는이 다리를 건너 것 더욱 우리는 더 많은 언어로 보면
오늘날에도 넘어.
>> 그래서 지금의 전환을하자 아마도 더 익숙한 상황
PHP와 같은 언어를 사용합니다.
그것은에서 사용하기 다소 일반적입니다 스크립트를 작성 명령 행,
같은 나는했지만 그건 , 훨씬 더 많은 공통.
그리고 그것은에 사용되도록 의도되었다 일반적으로 최종 파일의 형태
에 .php--하지만 그건 하지 prerequisite--
자체는 웹 콘텐츠를 생성한다는.
>> 그래서 내가 가서하자 몇 가지 열 예를 들면 나는 미리 준비.
그리고이 사실은 일종의 해당 첫 번째 것들 중 하나에 이야기
나는 지금까지 마친 후 자신했다 CS50 및 아마, 내 생각,
CS51 년 전 내 룸메이트 내가 도움이되었다
신입생 교내를 실행합니다 스포츠 프로그램, 어느 시점에서,
신입생은 다양한에 등록했다 종이를 작성하여 스포츠,
이 호출로, 산책 Wigglesworth에 마당에 걸쳐,
일부에서 떨어지고 감독관의 문 드롭.
그리고 그 또는 그녀를 통해 갈 것입니다 그 후, 실제로 수동으로 이메일을 보내
우리는 어떤 스포츠에 등록 된 것을.
>> 그래서 분명히 기회 개선.
요즘, 당신은 단지로 전환 할 수 구글 양식,하지만 그 시절에,
우리는 실제로이 가르치 디에 도달했다 심지어 오래 전, 갑자기 도달되지 않았습니다
프로그래밍 PHP되지 않은 언어.
이때,이었다 펄라는 것을,
이는 이후 유행에서왔다.
그러나 아이디어는 동일하다.
>> 그리고 본질적으로 시도 앉았다 포트는 PHP에 펄 버전을 이동하려면
그러나 면책 조항에, 포기하지 않았다 어떤는 아직 미학을 생각했다.
그래서 여기에 웹 페이지이다.
이것은 파일이다.
내가 확대 할 경우, 그 분명히 라는 froshim0.php
그냥 우리의 첫 번째 왜냐하면 이 시리즈의 예.
그리고이 나타나는 것을 가지고 있음을 알 수 매우 추한 HTML 양식이어야합니다,
하지만 형태는 재미있다 그것은 수 있기 때문에
나 브라우저에 사용자 입력을 제공한다.
>> 이제 마지막으로 우리에게 양식을했을 때 누구 우리는 우리의 쿼리 매개 변수를 제출 않았다
가 호출되었을 때 큐 매개 변수?
바로, 구글 그래서?
우리는 완전히의 아이디어에 펀트 그 입력에 아무것도.
>> 그러나 오늘, 우리는 출력을 생성 시작합니다.
그리고 행동은 내가 볼거야 여기에 처음에 꽤 간단하다.
다윗은, 내가 성을 확인합니다 여기, 여기 매튜스를 말한다.
나는 주장하지 않습니다.
나는 등록을 클릭거야.
그리고 URL가 가지고있는 것을 알 수 레지스터 0.php을 변경,
다음 여기에이 추한 텍스트가있다.
나는에 어떤 생각을 포기하지 이의 서식.
>> 그러나 흥미로운 것은 그 세 가지입니다 값은 분명히 전달했다.
이의 PHP의 일종이다 printf--와 같습니다
우리는 정말 불리는 것을 볼 수 있습니다 그냥 인쇄 bit--에
당신이 그것으로 통과시켰다.
그래서이는 형태 제안 그것은 적어도 세 개의 필드를 가지고
당신은 저를 직접 입력 보았다.
하나는 제 이름이고, 하나는 있었다 성별, 하나는 기숙사이었다.
그리고 주장에도 전송되지 않았습니다 서버 나는 그것을 확인하지 않았기 때문이다.
>> 그래서이 분명히 말을하는 것입니다, 웹에서 물건을 제출할 때,
뿐만 아니라 때로는 URL을 수행 change-- 그렇지 않을 때도 있습니다.
사실, 파일 이름 변경, 하지만 URL 결석 무엇인가
우리는 구글과 마지막 시간을 볼했다는 것을.
그래?
>> 학생 : 없음 쿼리 문자열
>> DAVID J. 마란은 : 더 쿼리 문자열이 없습니다.
더 물음표 뭔가가 없습니다.
더 물음표 Q가 없습니다 우리가 지난 시간에했던 것처럼, 고양이 같다.
그리고 더 확실히있다 물음표 이름은 동일
데이비드 또는 기숙사 매튜스 같다, 어디 모든려고하고 있다는 것을?
>> 글쎄, 내가 다시 여기의 gedit에 가자 이들 파일의 첫번째를 열어
내 가상 호스트에서 로컬 호스트 공개 여기에 디렉토리와 froshim0로 이동합니다.
그래서 거의 밝혀 이 페이지의 모든는 HTML입니다.
그리고 이것은, 사용자에게 친숙하지 않을 수도 있습니다 하지만 곧 PSET 6 더 그렇게 될 것입니다
및 PSET 7 PSET 8.
그러나 이것은 단지 HTML 페이지입니다.
>> 그리고 재미있는 물건 이상 여기있을 것으로 보인다.
누구의 행동 속성 form 태그 레지스터 0의 값을 갖는다.
내가 제출할 때 이유 이것은, 그 파일로 이동합니다.
그러나 방법은 다른 했죠 - 게시물입니다.
그래서 적어도이있어 밝혀 사용 된 웹의 두 가지 방법
정보를 전송하기 브라우저에서 서버로.
get은 URL에 넣습니다.
포스트는 다른 곳을 넣습니다.
그리고 언제, 왜 수도 실제로 웹 사이트를 원하는
대신 다음 포스트를 사용하는 그냥 직관적으로 얻을?
어떤 웹 사이트.
어떤 종류의 데이터는 전달해야 포스트를 통해 지금 추론에 의해 반대
우리가 본 적이 있다면, 얻을 수 두 가지 차이점?
학생 : [들리지] 고정합니다.
DAVID J. 마란 : 당신이 원하는 경우 뭔가 안전합니다.
그래서 당신은 암호를 입력 할 수 있습니다 홈페이지, 신용 카드
웹 사이트에 것 이러한 차선의 종류
브라우저는 것을 넣어 경우 URL의 내부 값.
왜?
하지 않는 당신은 그것을 볼 이러한 큰 문제가 될 것 같습니다,
하지만 확률은 꽤 자주 거리에 있습니다 멀리 컴퓨터 또는 사용 컴퓨터에서
실험실, 등등 사람 다른 또는 룸메이트
쉽게 걸어 볼 수 있었다 그 개인 정보를 제공합니다.
당신은 이메일을 보낼 때 웹을 통해, 당신 아마
해당 데이터 결말을 원하지 않는 URL 최대뿐만 아니라.
그래서 이유로 수있다 우리는 왜 여기에 넣어 둘 수도있다.
photos-- 권리 그리고, 난 못해, 심지어 아주 당신이 그래픽을 얼마나 상상,
JPEG처럼, 그리고 URL에 넣어.
당신은 할 수 있습니다.
거기를 인코딩하는 방법은, 그러나 그것은이다 단지 그렇게 간단하지 않습니다.
>> 그래서 공 실제로 레지스터 매우 실망.
모든 말 그대로이 말한다.
그것은 몇 가지의 내부 출력합니다 HTML은 다음과 태그.
여기 PHP 태그를 가지고 사전 태그 내에 중첩.
"사전은"다만, 미리 포맷 된 텍스트를 의미한다 타자기처럼, 모노 간격.
>> Printr는 인쇄 재귀 함수입니다.
그리고이있다 여기서 흥미로운 것은.
그리고 우리는 다시 올 것이다 다른 사람이 있기 때문에,
하지만 달러 기호 밑줄 게시물이 나타납니다
PHP에서 변수하는 아무것도에 당신은 서버에 브라우저에서 보내
당신을 위해 저장됩니다.
그리고 우리는 얻을하는 방법을 볼 수 있습니다 오래 전에 그 정보를 제공합니다.
>> 그러나 먼저, 다시 가자 약간 다른 예.
register--로 가는데 또는 오히려, froshims1.php,
이는 조금 다른 보인다.
나는 조금 더 걸렸다 서식 노력,
비록 여전히 매우 추한.
하지만 앞서 갈거야 지금은 "데이비드"를 입력.
남성입니다.
우리는 "주장"이 시간을 확인합니다.
우리는 매튜스을 다하겠습니다.
그리고 등록합니다.
>> 그리고 이번에는 HM, 정말 말했다.
좋아, 그래서의 1을 등록?
날 열린 레지스터 1과 ... HM에 가자.
좋아, 그래서 이것은이다 흥미로운,이
디딤돌 지금을 향 더 흥미로운 프로그램.
>> 이 파일을 가지고의 상단을 주목하라 PHP 태그뿐만 아니라 몇 가지 의견.
그리고 이들은, 지금은 산만하다 그래서 그냥 그 주석을 제거하자
그들은 C.에있어 그리고 나는 주장처럼 주석과 코드의이 덩어리와 함께
이 코드는 그 제출을 검증.
>> 글쎄, 그것은 밝혀 달러 기호와 같은 변수
아르 게시물을 밑줄 슈퍼 전역했다.
그들은이 같은거야 특별한 전역 변수
그것은 단지 전 현재이다 프로그램 내에서 사용할 수 있습니다.
그리고 당신은 대괄호 표기법을 사용할 수 있습니다 인덱스에 숫자를 사용하지 내로
0, 1, 2, 3, 그러나 실제 단어 등을 포함한다.
>> 그래서 당신은 달러 기호 생각할 수 해시 테이블의 일종으로 게시물을 강조
당신은 조회에 키를 전달할 수 있음 단어의 사이에 대괄호,
그리고 다시 당신을 줄 것 사용자가 실제로 제공하는 값.
PHP는 기능을 갖는다 그 빈라는 단지
이는, 예 또는 아니오라고 변수가 비어 있거나 없습니다.
우리는이 두 줄로을 가지고, 이는 단지 C.처럼, 의미 또는
>> 그래서 효과에,이 라인 4는 그냥 사용자가 이름을 지정하지 않은 경우 말
또는 성별을주지하지 않았거나 않았다 기숙사를 제공, 가서 그를 재
또는 그녀의 여기에이 라인을 통해.
그래서이 조금 애매하다 그러나 이것은 단지 문자 그대로 의미
이 위치로 다시 이동 그래서 사용자 팬트
다시 그 또는 그녀가 온 곳이다.
그러나 조금 세련이다 점에서 나는 열심히 코딩.
>> 그러나이 경우 경우 조건 true로 평가하지 않는 이유는 무엇입니까?
사용자가 나에게 무엇을 주 었는가하면 자신의 또는 그녀의 이름과 기숙사, 성별?
조건이 아니라면 그 true로 평가하는 것,
그래서 7 행의 종료를 공격하지 않습니다.
그래서 무슨 일이?
그리고 이것은 무엇이다 PHP에 대한 흥미.
>> 당신은에 밖으로 놓을 수 있습니다 PHP 모드, 말하자면.
당신은 어떤 코드가 실행하고자하는 경우, 당신은 열고 PHP 태그를 닫을 수 있습니다
내가 여기했던 것처럼 거기에 코드를 삽입.
최대한 빨리 닫으면 PHP 태그, 서버
그냥 침을 것입니다 당신이 무엇을 거기에 넣어.
그리고 사실,이 부분이었다 PHP의 원래 디자인,
악화에 대한 더 나은,이이었다 코드와 마크 업의 혼합을
언어.
그리고 우리는 바로 이러한 것을 볼 수 있습니다 신속하게 엉망으로 양도한다.
그래서 우리보다 더 잘 할 것이다 이 궁극적으로,하지만 단지
I 해요 쉬움을 알 일부 로직을 실행하는 데 실제로 수.
>> 그러나 아직도 약간 실망.
버전을 열어 보자 신입생 인스턴트 메시지, 두있는
분명히 register2.php에 제출합니다.
그래서이 파일은 실제로 일어나고 거의 동일하게 표시합니다.
나는 신입생 인스턴트 2로 갈거야.
그러나 신입생 인스턴트 2, 의는 어떻게되는지 보자.
>> 데이비드로, 라디오 버튼을 클릭합니다 그것은라고; 매튜스, 아니 주장.
등록합니다.
당신이 등록되어 있습니다.
정말.
아 기다린 우리는 한 그 예를 우리는하지 않았다?
좋아, 대기.
우리는 세 가지를 할 수 있습니다.
분명히 뭔가 관하여 Gmail에서 발생합니다.
우리는 거기에 도착합니다.
>> 그래서 신입생 인스턴트 3은 다음과 같다.
다르지 않습니다.
그러나 내가 다윗, 남성, 매튜스, 그리고 이 세 번째이자 마지막 버전을 등록
주장, 아주 간단하게, 당신에게 정말 등록되어 있습니다.
즉 일종의 중요합니다.
그러나 나는이와 주장 세 번째이자 마지막 버전
지금은 정확히 다시 만들어 내 룸메이트와 나는 신입생 인스턴트을 위해 만들어진
전 프로그램의 년.
그리고 그것은 간단했다.
어떤 데이터베이스는 없었다 Excel 스프레드 시트를 더.
하지만 더 중요한 것은, 더 이상 종이가 없었다
우리는이 프로그램에 무슨 짓을했는지 때문에 실제로 감독관을 이메일로 누구
이전에받는 형태를 통해 이러한 것들을.
>> 그리고 분명히 우리는이를 프로그램했습니다 이러한 방식으로 사람이 등록 때에,
존 하버드의 계정 이메일 이 경우 proctor-- 또는 그 자신
요한 Harvard-- 다음 text-- "이 사람은 그냥 등록했다."
이름, 선장은 비어 데이비드; 성별, 남성; 과 기숙사, 매튜스.
>> 그래서 무슨 일이 일어 났는가?
여기에 문제의 음, 파일 분명히 register3.php입니다.
나는이를 열 경우, 당신은 볼 것이다 같은 코드의 전원을 모두
또한, 솔직히 불안 이메일과 같은 시스템.
난 그냥 효과적으로 척했다 존 하버드는 다음과 같은 방법으로합니다.
>> 나는, 최대 상단 오픈 PHP 태그를 가지고있는 여기 말한다 일부 PHP 코드를 제공됩니다.
여기선이 밝혀 PHP의 라이브러리입니다.
당신은 할 필요가 없습니다 만큼 헤더 파일이 포함됩니다.
당신은 더 얻을 부엌 싱크대, 말하자면.
>> 그러나 4 호선이 시간, 내가 할 라는 특별한 라이브러리에 원하는
뭔가 당신이 PHP 메일러, 많은 시스템에서 무료로 설치할 수 있습니다.
여기에 아래로 나는 검증 해요 제출 단지
사용자가 주 었는가 확인하여 나 이름, 성별, 기숙사.
그리고 만약 있다면, 가서 우편물을 인스턴스화합니다.
>> 당신은 인 것으로 생각할 수 있습니다 단지 할당 코드의 라인.
그것은,의 malloc처럼하지만, 그것은 조금 섹시의
점에서 당신은하지 언급 malloc에​​ 일부 일반 번호.
당신은 나에게 다음 중 하나를주는 말 나에게 이들의 새로운 하나를 제공합니다.
>> 그리고 당신은 프로그래밍 한 경우 Java 또는 C ++ 또는 다른 언어,
당신이 알고있는 독자들도있을 것이다.
그러나 그것의 짧은 경우 익숙하지 않은,이 선
달러 기호 메일에두고 라고 불리는 특별한 구조체
내장 된 객체 이메일 기능을 제공합니다.
그리고 사실,주의 및 이와 유사한 구문.
>> 이는 포인터 자체가 아닙니다.
PHP는 동일한 구문을 사용합니다.
이 줄은 사용을 말하고있다 SMTP-- 단순 메일 전송
단지입니다 프로토콜, 프로토콜은 메일을 보내는 데 사용.
이것은 사용을 지정하는 것입니다 하버드의 SMTP 서버, 어떤
캠퍼스에 어딘가에 여기에있다.
>> 이 무슨 말 TCP 번호가 이야기하는 포트,
난 그냥 그 정도는 알 인터넷 검색 또는 헬프 데스크에 요청하여.
그리고 하버드 일부를 사용하기 때문에 메일 server--에 시스템 보안
적어도 암호화 할 수 당신과 그 사이의 트래픽,
누구 졌어요 보낼 수에도 불구하고 나는 TLS 프로토콜을 설정하는거야
이 보안을 유지합니다.
>> 그러나 이것은 어디 것들 조금 무서운 얻을.
난 그냥 임의의 수 나는 jharvard임을 말
난 그냥 임의의 수 여기에 자신 이메일을 보내.
그리고 나는를 지정할 수 있습니다 여기이 선이 될 수 있습니다.
>> 그리고 이것은 단지 추한 보이지만이다 연결의 단지 무리입니다.
, PHP 슈퍼 유용한 기호가 밝혀 일부 언어 같은, 도트 연산자,
이는 단지 문자 그대로 연결합니다 문자열 문자열 후 문자열 후,
당신은 malloc에​​ 또는 그림에없는 문자열의 총 길이가 부족합니다.
당신은 그것을 할.
그리고 실제로, 나는 연결하는 거니까 이러한 점이 모든 것들에,
그 이유는 이메일 I의 이처럼 전송 보였다.
>> 그리고 마지막으로 여기에, 나는 메일을 보내고있다.
이 false 인 경우 그래서, 난 그냥 죽을거야
이는 기능입니다 단지 인쇄 화면 일부 오류 메시지.
하지만 사실이며, 송신 함수를 호출.
그렇지 않은 경우,이 모두가 실패하면, 여기 날 다시 리디렉션합니다.
>> 그리고 그 이유를 보았는가 정말 등록 된거야?
음, 여기 일어났다.
그래서 나는이를 불러 몇 가지 이유.
>> 하나는, 이것은 당신이 방법을 구축 할 경우 정확히 최종 프로젝트에 대한 몇 가지 웹 사이트
또는 현실 세계를 위해, 여긴 당신은 전자 메일 미리 알림을 보낼 방법
고객이나 가입자에.
이렇게하면 암호 미리 알림을 보낼 방법이다.
이렇게하면 사람들이 메시지를 보낼 방법입니다 그들은 새로운 페이스 북을 가지고
메시지 보류 또는 그런 일.
>> 그러나 그것은 또한에 말한다 사실 그이 수
에서 아주 잘되었습니다 다빈 또는 다른 사람.
그리고 나는 이러한 종류의 말 미소 난 때문에
를 통해 무슨 일이 일어나고 있는지 확신 이 시점에서 당신의 마음의 여러.
그러나 이것은 그 중 하나가 I로 할 것입니다 나는 사물의 종류를하지으로, 말
그것은 사소하기 때문에 이 같은 이메일을 위조.
하지만 당신은 볼 수 있습니다로 또는 크림슨 읽어,
늦은 그것은 또한 아주이다 사람들을위한 사소한
다시 약간의 원점을 추적합니다.
그리고 아마도, 나에게 시간을 물어 CS50 점심에, 어떻게 처음
매우 밀접하게 알고있어 거의 ED 보드 수년에
전에 내가 발견했을 때 어떻게 인터넷이했다.
어떤 약간 case--에 따라서 ED 보드가있었습니다.
>> 그래서 어떤 경우에,이 슈퍼 전역의 전체 무리,
그들이 여기라는 것으로, 하나의 우리는 달러 기호 밑줄 게시물을 안됐어.
GET라는 상대가있다, 이는 URL 어디에서 물건입니다
가는 끝납니다.
그리고 다른 사람의 전체 무리가있다 너무 ... 세션과 서버와 쿠키.
우리는 다시 올 것이다 다른 시간을 쿠키
하지만 세션이 멋진 가지입니다 때문에 바로 지금은 - 최대 지금은 -까지
모든 것을 우리는 웹 브라우저에서 수행 한 종류의 상태를 저장, 말하자면.
나는 주위를 클릭, 액세스 서버, 뭔가에있는 파일
화면에 발생하지만 다음 연결이 닫힙니다.
Internet Explorer 또는 파이어 폭스 아이콘이 회전을 정지
그리고 당신은 무엇을 참조 그 웹 페이지가 포함되어 있습니다.
>> 그래서 HTTP는 점에서 상태를 저장 이 연결을 설정하면,
그거야, 일부 데이터를 가져옵니다.
더 이상 연결, 스카이프와는 달리, 페이스 타임과 달리 GChat 달리하는
상수를 유지 서버에 연결.
웹은 근본적 하지만 우리는 것이다 해제
긴 방법 전에 참조 우리는 물건을 시뮬레이션 할 수 있습니다
페이스 북 채팅과 GChat 같은, 이는 illusion--을 유지
또는 사실을 유지 할 사용하여 일정한 연결
현대 기술.
>> 하지만 난에 가면, 말, counter.php, 이것은 또 다른 간단한 예입니다,
우리가 살펴 보 겠지만, 그 현재 생각 나는 사이트 제로 시간을 방문했다.
하지만 단순히 페이지를 다시로드하는 경우, 어떻게 든 내가 전에 여기에서 있었다 알고있다.
다시 다시하는 경우를 내가 전에 여기에서 있었다 알고있다.
그리고 다시하고 다시하고 다시하고 다시.
>> 그래서 약간의 플러스 plussing이있다 진행하지만, 통지
작은 일이 그렇게도 회전 간단히 상단까지 다음의 연결이 끊어,
그래서 내가 상수를 가지고처럼하지 내 기기에 연결.
음, counter.php에 가면, 이 간단한 방법을 알 수 있습니다.
내가 처음이 특수 전화 작동하는지 우리는 곧거야
당연한 복용 시작 세션 시작했다.
세션을 시작합니다.
>> 그리고 세션은 이제부터 그냥 쇼핑처럼, 양동이 될 것
당신이 값을 넣을 수있는 카트 및 종류의 프로그래머로 신뢰
그들은 때 여기에있을 거라고 이 사용자는 두 번째 다시 - 온다
나중에 시간 후에, 심지어 년 후, 그 또는 그녀가 명확하지 않기 때문에 너무 오래
자신의 쿠키, 우리는 결국 볼 수있다.
그리고 지금 난 그냥이 여기 경우 조건.
그래서 다음과 같은 키의 경우, 라는 카운터, 내부 설정
이 슈퍼의이 해시를 global-- 테이블, 당신이라는 세션을 하겠지 경우,
다음 가서 잡아 session-- 생각에서 값
쇼핑 등이의 cart-- 및 저장
카운터라는 임시 변수.
>> 그렇지 않으면, 그 값 카운터 경우였다 소위 장바구니에 설정하지,
그냥 0으로 초기화합니다.
마지막으로, 여기로 가서 다시 넣어 쇼핑 카트 또는 세션으로
카운터 +1의 값.
그래서이 밝혀 특수 컨테이너와 ...
이는 다시, 이러한 연관 중 하나입니다 배열, 배열은 당신이 할 수있는 인덱스
대신 숫자들의 말에 사용자가 사라질 후에도 지속됩니다.
다시 말하지만, 지금은 다시 페이지로 이동합니다.
그것은 분 정도되었습니다.
그러나 나는 그 사실을 기억 19 시간 전에 여기에 있었다.
이것은 내 20 방문입니다.
>> 그리고이 핵심이 될 것입니다 기억 어떤 웹 사이트를 구현
당신은 당신이 넣어, 로그인하고 있는지 귀하의 쇼핑 바구니에 문자 뭔가
구입 또는 일부를 가지고하는 메시지의 번호는 대기중인.
언제 당신이 원하는 정보를 기억,
우리는 같은 것을 PHP를 볼 수 있습니다 여러 다른 언어,
상태의이 환상으로 우리를 제공합니다 비록, 당신이 PSET 6에서 살펴 보 겠지만,
당신은 HTTP 요청을 만들고있어 클라이언트에서 서버로, 그것 뿐이다.
당신은 다시 일단 반응은 아무것도 없다
기본적으로 서버에서 다시오고.
그러나 우리는 그 해결 방법을 확인할 수 있습니다.
>> 그럼 이제가 봅시다 조금이를 정리합니다.
우리는 몇 가지를 보았다 거기에 다른 예.
아, 그리고 여담으로 대한 익숙하거나 익숙하지 않은,
이유가 신입생 인스턴트 예는 갔다
실제로보고에서 잘 slightly--하는 추한,
여전히 약간에 ugly-- 여전히 추한 비록 적은 추한
우리가 보면 때문이다 여기 소스 코드,
내가이가 밝혀 파일의 맨 위에.
>> 부트 스트랩 중 하나입니다 밝혀 거기 자유롭게 사용할 라이브러리
프로그래밍 언어 아니 존재하는 항상 있지만, CSS 또는 자바 스크립트
HTML 또는 언어의 번호 나.
>> 와 ... 그리고이 사람들 원래 나왔다
Twitter-- 단지가 스타일의 전체 무리.
그것은 거대한 파일의 여기에 누군가가 쓴,
또는 다른 사람의 시간이 지남에, 쓴 색상과 서식을 지정합니다
그리고 이것 저것 내가 할 수 있도록 종류의 구문을 빌려
및 알아낼 필요가 없습니다 어떻게 내 양식을 배치합니다.
이것은 또한 축소 된입니다 컴퓨터가 할 수 있도록
그것을 이해하지만 반드시 인간.
그래서는 이유있어 양식이 변경되었습니다.
>> 그러나의 지금 더 잘 할 수 있도록 디자인 측면에서,
우리가 엎드려 경우 때문에 너무 긴이 길,
우리의 코드에 무슨 지저분하고 지저분 얻을.
그래서 여기서 이러한 예에 초점을 수 있습니다.
오늘의 마지막.
>> 그래서 여기에 슈퍼 간단합니다 CS50의 웹 사이트의 버전 1.0.
그것은 단지 링크가 강의와 강의,
그리고 그 정렬되지 않은 목록을 사용하고 우리가 지난 시간에 사용되는 UL 태그를 tag--.
그리고 사실, 난 경우 , 페이지 소스보기를 열고
이는 것을 볼 수 있습니다 정말, 정말 간단한 HTML.
그리고 사실, 이것은 비록 후드 아래에 PHP 파일,
여전히 단지 풍기고 지금은 밖으로 만 HTML.
>> 그래서 강의를 클릭하면, 우리는 이런 일을 참조하십시오.
그리고 나는 주를 클릭하면 제로는, 우리는이를 참조하십시오.
그리고 클릭하면 수요일, 우리는이를 참조하십시오.
그리고 이것은 분명히 PDF이었다 그 날의 슬라이드.
내가 한 모든이와 링크 여기에이 URL에 앵커 태그.
>> 그래서이 꽤라고 할 만하다 CS50의 웹 사이트의 간단한 버전입니다.
의가 구현 어떻게 보자.
내가 mvc0 디렉토리로 이동하면, 우리는 몇 개의 파일을 볼 수 있습니다.
하나는 README, 그래서 경우 이 중 일부는, 너무 빠른
당신은 단지 살펴볼 수 있습니다 더 여유롭게 이상.
그리고 여기에서주의 사항 index.php 파일입니다.
이 밝혀지면 그 당신 자신, 인간,
에 최종 이름을 지정하지 URL, 보통 웹 서버
당신을 위해 몇 가지 기본 이름을 유추합니다.
인덱스 도트 무엇인가 일반적으로 기본값입니다.
>> 그래서 왜 좀 전에이다 내가 여기에이 URL을 방문했을 때,
파일 이름, 아니 파일 확장, URL에없는 기간.
그냥 마술 어떻게 든 알고 index.php를 찾으십시오.
그냥 컨벤션입니다.
아무것도 호출 할 수 없습니다.
>> 지금에 들어갈 경우에 따라서 index.php에, 당신은 볼 것이다
,의하자 indeed-- 있음 주석 제거
여기 정말 거기 때문에 흥미로운 것은 졌어요 없습니다
이것은 단지 하드 HTML을 코딩된다.
그래서, 일치의 내 주장과 생각,
것을 당신은 HTML과 PHP를 뒤섞 수 있습니다.
실제이 없습니다 여기에서 논리 프로그래밍.
>> 그리고 다른 파일이 꽤 있습니다 같은 재미 단지 많은.
그것은 단지 주에 하나의 하드 코딩 된 것 여기에 일주일에 M과 주 하나, W
월요일과 수요일.
그리고 내가 주 제로 열 경우, 거의 동일한 느끼지.
>> 그리고는 키 테이크 아웃 가지입니다.
이 얼마나 중복 확인합니다.
이 파일은 거의 변경, 아직 I 이러한 복사 / 붙여 넣기 작업 중 하나를 뽑아
어디 아마도 하나 file--했다 주 zero-- 그것을 복사
주 하나가 주위에 왔을 때, 몇 값을 쥐게.
우리는 아마 수 있어야한다 이것보다 더 잘 할 수 있습니다.
>> 그럼 MVC까지 돌아 가자 버전 하나로 이동합니다.
내가있어주의 몇 개의 파일, 무엇 때문에
해당 파일의 모든 단지에 공통적이었다 나는 버전 0으로 돌아 가면 순간, 갑자기
의 인덱스로 돌아 가자, 그냥 postulate--
나는 comments--을 제거하면 이 페이지의 어떤 부분
내 파일 하나 하나에 아마도입니까?
그냥 불러.
어떤 라인이 중복되어 아마이 모든 페이지에서?
그래?
>> 학생 : [들림].
>> DAVID J. 마란 : 1 ~ 9.
네, 절대적으로.
어쩌면 8을 제외한 9 일, CS50 때문에 조금 변경
하게 강의 또는 주 제로 또는 뭔가.
그러나 거의 동일합니다.
그래서 모든 물건은 그냥 종류의 복사 및 붙여 넣기.
그리고 몇있다 다른 라인은 내가 생각할 수있는
그 아마 동일 모든 파일에서.
>> STUDENT : (12, 13).
DAVID J. 마란 : 그래.
물론, 12, 13, 14, 아마 그냥 재미있는 물건 때문에
라인 (11)에 무슨 일이 일어나고 10, 그래서 것 같다.
그럼 버전 1을 살펴 보자, 어떤이 개선하려고합니다.
이 MVC example--의 버전 1에서 우리는거야 설명 순간은에서 MVC 어떤 수단
나는 인덱스로 이동하는 경우, 종류의 지금 조금 혼란 보인다.
그것은 이전과 확실히 간단하지.
>> 하지만 당신은에 시작하면 주의 깊게, 그것의 읽기
그것은 무엇을하고 있는지 매우 간단.
분명히 1 라인과 라인 8은 교체 한
당신이 identified-- 물건의 모든 그냥 좋은 측정을위한 생각,
나는 단지의 경우 일부가 적 UL 왼쪽 일 것들의 목록을 가지고 있지 않았다.
그리고 종류의 파운드처럼 필요 C. 그것은 복사 및 붙여 넣기에 포함
내용을 효과적으로 바로 여기에이 파일에.
>> 그래서 header.php에서, 당신으로 그 이름에서 유추 할 수 있습니다,
페이지의 헤더가 될 것입니다.
이 종류의 여기 고아입니다.
그것은 아니라, 가기가 있지만 아래에 더 이상 콘텐츠가 없습니다.
>> 그리고 난 그 사이에 바닥 글을 보면, 이는 다른 파일이었다 mentioned--
이 사람은, 더 적은 흥미로운 그러나 다시, 그것은 모든 것을 일반적이다.
그래서이 바닥 글입니다.
이것은 헤더이다.
이것은의 파일입니다 변화하는, 그래서 왜 안
공통점을 인수 분해하려고 여기에 두 줄?
>> 그러나 우리는이를 청소 할 수 있습니다 조금 더 위로.
나는 앞서 갈거야 및 버전 두 열어
우리는이 있다는 것을 볼 수 있습니다 새 파일, helpers.php.
우리는이 순간에 무엇을 볼 수 있습니다.
의이 같은 인덱스에 가자 이전과 진입 점.
>> 그리고 지금 내가 필요로하고있어주의 helpers.php, 머리글 또는 바닥 글 없습니다.
그러나 헬퍼 가지처럼 PSET 2에서 helpers.c 및 helpers.h
또는 오래 전에 실제로 PSET 3 검색 및 그 PSET을 위해 찾았어요,
당신은 정렬에 모든 코드를했다 그리고 별도의 파일에서 검색.
즉, 여기에 무슨 일이 일어나고 있는지입니다.
>> 그리고 지금 라인 (3)은 조금 다른 보인다.
그리고 그것은 단지 하나의 라인입니다.
이 더욱를 만들려면 분명, 난 그냥 수
이 문체 일관성을 위해 할 다른 모든 것들과 우리는 완료했습니다.
하지만 그건 정말 아니에요 기능을 변경.
그것은 실제 한 줄의 코드입니다.
>> 분명히, 기능이있다 어딘가 헤더 렌더링라고,
이 어디 것들 꽤 강력한 얻을.
그 괄호의 내부를 주목하라 구문의 어떤 다른 부분은?
그것은, 아마 말을 조금 어렵지만, 나는 약간 흰색을 놓을 게요하게 있어요 통지
공간.
대괄호가있다.
>> 대괄호 우리는 조금 전에 보았던 연관 어레이의 맥락에서,
해시 테이블처럼, 다시, 어떤 있습니다.
그리고 당신은 C에 지금 생각하면, 함수에 인수의 순서
항상 동일해야한다.
당신은 무엇을 기억해야 는 ... X, Y, Z 또는 Z, Y, x-- 주문
그리고 당신은 항상 그들을 제공해야 같은 순서로하거나 찾아
당신은 잊어 버린 경우.
>> 하지만이 영리한 방법이 될 것으로 보인다 임의의 키 값을 전달
제목이 이름입니다 이에 쌍 이 경우 인수
과 CS50는 값입니다.
내가 가지고있는 그것과 사실 이러한 대괄호
여기에 내가 할 수있는 것을 의미한다 또한 뭔가 전달
같은 주 0 또는 1 또는 2 또는 3이다.
그래서 우리는 매개 변수화 한 이러한 방법으로이 기능을
그것은 여러 개의 입력을 할 수있는, 하지만 지금은 그냥 하나입니다.
>> 지금 helpers.php에 들어갈 경우, 그것은 무엇을하고 있는지 알 수 있습니다.
이것은 조금이다 새로운 기능,
하지만 지금은 그냥 가지고 이것이 믿음에
구문하는 당신 PHP에서 함수를 정의합니다.
당신은 말 그대로 기능을 말한다.
당신은 반환을 지정하지 입력 한 그 일관성의
변수 세부 이전으로 여기서 당신은 정말 강하게 입력하지 마십시오.
>> 이것은 단지 지정 즉, 기본적으로이
연관됩니다 인수로 배열입니다.
그리고 당신이 뭘 알아?
사용자는 하나를 통과하지 않는 경우 에서, 디폴트 값을 가정한다.
>> 이는 C가 가지고 있지 않는 기능입니다 우리를 위해, 이는 지금 때문에, 좋은
데이터, 심지어 경우 그에게 아무것도 제공하지 않습니다,
를 될 것입니다 배열하지만 빈 하나.
그리고 옆으로, 추출물 다만 펑키 무언가를
어디이에서 키를 모두 취 연관 배열, 모든 것들
대괄호에 넣어 수 있습니다, 그 중에서 변수를 생성
우리가 궁극적으로 액세스 할 수 있도록 그들에게 footet.php과 header.php에서.
즉 조금 추상적이다, 그래서 내가이 문제를 지적 할 수 있습니다.
>> 의 index.php에서 난 것을 알 수 제목의 키 값 쌍을 전달
CS50의 값.
지금 helpers.php 보면, 그 RenderHeader 통지
내가 전달하고있어 그 데이터를 추출한다 에서 다음 header.php을 요구.
내가 무슨 짓을했는지하는 것은 가난한 사람의의 일종이다 이제 다음의 구현입니다.
>> 내가 header.php를 열 경우, 열심히 더 이상도 없어 통지
이 헤더 파일에있는 단어 CS50 코딩.
보다시피 atrociously이를 넣었습니다 이름 기능, HTML 특수 문자,
거기에.
하지만 무슨 짓을했는지 알 수 있습니다.
나는 열려있는 HTML을 가지고있다.
나는 그 열기 머리와 오픈 타이틀을 가지고있다.
>> 그리고 내부의 제목의 오픈과 가까운 태그, 나는 PHP 코드의 비트를 가지고있다.
그리고 이것은, 좋은 그러나 구문이다 이는 그냥 반향을 의미합니다.
말 그대로 두도록 의미 following-- 에코
그러나 이것은 쓸 섹시하다.
제목을 에코 그는 전달 됐어요.
>> 하지만 HTML을 어떻게 생각하십니까 특수 문자는, 모두에 대해
특히 당신이 가지고있는 경우 일부 이전 HTML 경험?
어떤 문자를 수 있습니다 페이지에 통과 할 위험
위치를 동적으로 생성하고 이 같은 코드를 사용하여 웹 페이지?
날이 파일에 가자, 버전 나는이를 유도 할 수없는 경우 두 가지, 그리고 참조하십시오.
>> 버전 두 사람은 이것이다.
그리고 모든 것을 알 수 잘 작동, 괜찮습니다.
하지만 난의 index.php에 가서 가정 나는 지정된 내 페이지의 제목
CS50 없습니다.
그것은 오픈 브래킷 스크립트 경고입니다 안녕하세요, 가까운 작은 따옴표,
닫는 괄호, 세미콜론, 대괄호, 슬래시 스크립트.
>> 스크립트로 우리는거야 결국 태그가 참조
다른의 용도에 사용할 수있는 프로그래밍 언어라고
웹 페이지의 내부 자바 스크립트.
그리고 지금 여기에 논리를 알 수 있습니다.
여기에 제목이라는 키입니다.
여기에 지금 미친 긴 값이야입니다.
>> 하지만 도우미에 가면 페이지 - 또는 오히려, 헤더 페이지,
나는이 함수를 호출 해요 먼저 제목.
그래서 지금이 페이지를 다시로드하는 경우, I 말도 보이는,이 참조
하지만 안전합니다.
그냥 바보 보인다.
>> 하지만 그 대신 가정 나는이를 잊고 있었다.
그리고 내 말 명심, 0이 아닌 숫자 당신은이 작업을 수행하는 것을 잊지 의지
당신은 몇 가지 근면를 얻을 수 있습니다 학생이나 친구가오고
당신에게 CS50 박람회 또는 익명으로 밤에 당신의 웹 사이트에 주위에 파고
본질적으로 코드를 주입 귀하의 사이트에 당신이 모르는 사이에
어떻게 든.
>> 단순히 침을 받았을 경우 여기에 제목과 제목 아웃
저기 아니라, 제목 경우 그대로 이와 PHP처럼 보인다
침을 뱉을 수있는 언어로 다른 언어로 텍스트 출력,
이 문자 그대로 것입니다 에이 태그를 교체하려면,
물론, 나는 다른 것을 넣어.
>> 그래서 만약 내가 지금 여기 가서 한 후 다시로드 그 안전 메커니즘을 취소,
지금은 여기에 안녕하세요 세계를 가지고있다.
이제 모든 큰 일 아니야 거래,하지만 당신은 뭔가를 할 수
좀 더 악의적 인 여기에, 등이있다
우리는 우리가 지출 한 번 살펴 보 겠지만 다른 tags-- 위치 같은 JavaScript--에 더 많은 시간
점 HREF는 인용, 인용을 끝내, HTTP 가져옵니다 business.com,하지만 그 반대
다른 날부터.
그리고 지금 당신은 웹을 유도 할 수있다 페이지는 실제로 바로 이동
여기에이 웹 페이지로 이동합니다.
>> 그리고 실제로, 나는 싶지 않아 심지어 business.com로 이동합니다
내가 원하는하지 않기 때문에 그게 뭔지 알고.
하지만이 역시 코드를 트리거 이 페이지에 주입한다.
그래서이 비록 말을 아니라 우리는 몇 가지 슈퍼 조기 도입하고
이보다 복잡한 구조, 그것은 확실히 만드는 끝으로 전부
당신의 코드가 악용 될 수 없습니다.
>> 그래서 지금 여기에 세 번째 버전.
그것은 조금 애호가지고있어.
정말하지 않았다이었다고 나할까요 나 항문 쪽
에 의해 약간의 짜증 얻고 있었다 나는 함수가 호출했다는 사실
RenderHeader 및 RenderFooter 즉 거의 동일했다.
그래서 나에게 발생, 왜하지 나는이 기능을 매개 변수화
렌더링이라는 하나에, 그것은 두 번째 인수를했습니다
서식 파일의 이름과 같은, 최종 머리글 또는 바닥 글 중 하나를 render-- 하는가?
그리고 선택적으로, 내가 원하는 경우 일부 키 값 쌍을 전달합니다
같은 나는의 제목을 위해 할 하지만 바닥 글 헤더,
나는 그렇게 할 수 있습니다.
>> 그래서 지금은 helpers.php에 가면, 그것은 좀 더 복잡하다.
그리고 나는 나의 손을 흔들 것 상세하지만 단지 하나의 함수이다.
그래서 더 나은 디자인을 향한 단계입니다.
>> 우리는 한 단계 더 나아가서 수 있습니다.
나는 나의 네 번째로 갈 경우 이 버전은, 지금 주목
내가 뭔가를하고있는 걸 수수께끼의 더 많은 종류.
그리고 나는이 알고 많은 한 번에 흡수
그러나 우리는 친절 의 물건을 청소.
지금은 내 도우미를 걸었습니다 라는 폴더에 파일을
includes-- 단지 임의을 내가 물건을 넣어 원하는 위치의 이름을
나는 그 다음을 포함하고 원하는 이 나머지는 동일하다.
>> 하지만 gedit에서 지금 보면, 내가 없애 왔 통지
그 다른 모든 파일의 나는했습니다 여기에, 예를 들어, 그것들을 옮겼다.
다음 템플릿에서, 나도 여기있다.
그리고이 단계를 향해 지금 전부입니다 의 더 나은 디자인 패턴을 사용.
그리고 우리는 매우 빨리있어 멀리 이동하는 것
PHP의 기본 기능에서, 이는 우리가 여기 시작
당신이 PHP를 뒤섞 경우, 당신의 HTML, 및 CSS,
당신은 그냥 뱉어 당신은 당신의 방법에 대해 이동합니다.
그것은 매우 유지 보수 할 수 없을거야.
그냥 C처럼, 우리는 사용하기 시작 여러 파일 및 다양한 기능
팩토링 물건이 밖으로.
우리는 여기에 동일한 작업을 수행합니다.
그리고 사실, 제 5 및 최종의 버전 여기에, 나는 한 가지를했다.
심지어, 점 점을 사용할 수있는, 다시, 단지 부모 디렉토리입니다.
더 보안 의식하기 위해, 내가 듣기를 보면 때문에
여기에 다섯 번째 및 최종 버전, 통지에 대한 여기라는 하나의 디렉토리를 가지고
공개 한 다음에 같은 수준이므로, 말하자면
나는 포함하고 템플릿있어 다음 텍스트 파일 추가 정보.
>> 그리고 그 이유는 구조화 한 그것은 이런것 때문에 많은 웹 좋아
호스트, 특히 5 달러 달 사람 또는 $ 10개월 것들,
당신은 이들 중 하나 했어 경우 그들 중 많은이 무엇 services--
그들은 단지 당신이 모든 덤프 기대입니다 하나의 디렉토리에 파일의,
같은 우리는 이미 한 이 첫 번째 예.
>> 그러나 곧 당신은 더 많은 구축을 시작으로 단지 저장 정교한 사이트
데이터는이에 대해 파일을 관심 실제로 일을 조직, 신경
정확하고 더 보안 마음에 의식 할 수
우리는 방어 시작 모든 친구에 대한
당신은 또는 중 하나를 가지고 이 클래스의 외부에있는 사람,
가능한 빨리 만들기 시작으로 웹 프로그램 자신을,
따기 시작 예정 당신에 그들에.
>> 그래서 우리는 볼 것이다 궁극적으로이 디자인에서.
이것은 단지 사진입니다 그 다음을 나타낸다.
우리는 모두 넣어거야 우리 하나 이상의 파일에 로직을 프로그래밍,
우리는 단지 시작하는거야 그 컨트롤러를 호출.
그것은의 경우 뇌의 우리의 웹 사이트는 사실이다.
그럼 우리가가는거야 뷰 및 전망을
다만 별도만큼 간단합니다 자주라는 템플릿을 files--.
그들은 단지가 내 페이지의 미학,
내가 보는 페이지를 원하는 색상과 레이아웃이었다고 나할까요
및 위치 모든 변수.
>> 그리고 더 재미있는 다음 우리는 결국 얻을 거라고
단지가 될 것입니다 모델이며, 우리가 다른 기술을 때리고 단어
우리는에 가지고 있음 사진, 실제 데이터베이스와 같은,
당신이 원하는 때 그렇게 정보를 저장,
당신은 이메일을 보내하지 않습니다 시험 감독관 또는 자신에게,
실제로 데이터베이스에 저장 SQL로 알려진 다른 언어를 사용.
그래서 우리는 오늘 떠날거야, 그리고 수요일에이 함께 데리러
다음 데이터베이스를 소개합니다.
>> [음악 연주]