1 00:00:00,000 --> 00:00:02,150 >> [세미나] [코 하나 : 경량 PHP 프레임 워크] 2 00:00:02,150 --> 00:00:04,000 [브랜든 리우] [하버드 대학] 3 00:00:04,000 --> 00:00:07,270 [이 CS50입니다.] [CS50.TV] 4 00:00:07,270 --> 00:00:09,130 >> 안녕하세요 여러분. 내 이름은 브랜든입니다. 5 00:00:09,130 --> 00:00:11,000 나는 대학 일 컴퓨터 과학에서 여기에 주니어입니다 오늘 우리가 얘기하는거야 6 00:00:11,000 --> 00:00:14,460 PHP 웹 개발 프레임 워크입니다 코 하나. 7 00:00:14,460 --> 00:00:17,260 오늘은 라이브 코딩 세미나가 될 것입니다, 8 00:00:17,260 --> 00:00:21,000 그래서 기본적으로, 코 하나가 무엇인지 설명하는 5 분에서 10 분 소요거야 9 00:00:21,000 --> 00:00:25,000 다음 말 그대로 슈퍼 간단한 블로그를 만들거야 10 00:00:25,000 --> 00:00:28,570 여기 말 그대로 처음부터 당신을 위해. 11 00:00:28,570 --> 00:00:32,229 우리는 코 하나의 웹 사이트에서 코드를 다운로드거야 12 00:00:32,229 --> 00:00:35,000 그리고, 우리는 블로그를 구축 시작하는거야, 희망 매우 유익 할 것이다 13 00:00:35,000 --> 00:00:37,000 당신은 아마 어쩌면 볼 수 있기 때문에 몇 가지 실수를 할 수 있습니다, 14 00:00:37,000 --> 00:00:39,000 당신은 나를 그들로부터 회복 될 수 있습니다, 15 00:00:39,000 --> 00:00:42,040 나는이 블로그를 통해 구축 또는 당신은 나의 사고 과정을 볼 수 있습니다, 16 00:00:42,040 --> 00:00:44,000 그 사이에, 당신은 또한 프레임 워크 자체에 익숙해 있습니다. 17 00:00:44,000 --> 00:00:48,000 바라건대 그것은 매우 유익한 운동이 될 것입니다. 18 00:00:48,000 --> 00:00:51,370 >> 먼저, 프레임 워크가 정확히 무엇입니까? 19 00:00:51,370 --> 00:00:54,000 지금까지 CS50을 복용 한 적이 있다면, 당신은 정말 어떤으로 근무 한 적이없는 20 00:00:54,000 --> 00:00:56,000 프레임 워크 아직, 그리고 일이 있습니다. 21 00:00:56,000 --> 00:01:00,000 당신은 아마 이미 1 웹 개발 PSET을 수행 한 22 00:01:00,000 --> 00:01:03,000 과의 당신이 웹 사이트를 구축하고 웹 사이트 구축을 계속 유지 해 봅시다. 23 00:01:03,000 --> 00:01:05,000 당신은 몇 가지를 통지 시작합니다. 24 00:01:05,000 --> 00:01:07,000 당신이 가장 먼저 알 수있는 것은 당신이 아마 같은 일을하고있는 것입니다 25 00:01:07,000 --> 00:01:09,150 또 다시 모든 시간, 26 00:01:09,150 --> 00:01:13,000 사용자가 입력 한 데이터를 청소 같은 것들, 27 00:01:13,000 --> 00:01:17,250 특정 방식으로 파일을 정리 같은 것들. 28 00:01:17,250 --> 00:01:19,000 당신은 또한 아마 알 수 있습니다 다른 것은입니다 코드 29 00:01:19,000 --> 00:01:21,000 매우, 매우 성가신 될 수 시작할 수 있습니다, 30 00:01:21,000 --> 00:01:24,000 당신은 지저분한두고 그냥 아주 힘든 시간을 유지하는 경우가 있습니다 만, 31 00:01:24,000 --> 00:01:26,000 또는 당신은 당신의 코드를 구성하기 시작하고 모듈하고있다 32 00:01:26,000 --> 00:01:28,510 더 유지 보수 할 수있는 특정 방법으로. 33 00:01:28,510 --> 00:01:31,020 웹 프레임 워크는 기본적으로 들어온 곳 >>입니다 34 00:01:31,020 --> 00:01:33,680 많은 웹 사이트를 구축했다이 사람들은, 그들은 말했다, 35 00:01:33,680 --> 00:01:35,820 "우리는 우리가 웹 사이트를 구축 매번 다시 할 필요가 없습니다." 36 00:01:35,820 --> 00:01:39,050 "왜 우리는 당신을 위해 모든 일을 수행하는 패키지를하지 않는다 37 00:01:39,050 --> 00:01:41,250 매번 당신은 웹 사이트를 구축하고 싶어? " 38 00:01:41,250 --> 00:01:43,030 그리고 당신이 새로운 웹 사이트를 만들 때, 39 00:01:43,030 --> 00:01:45,880 당신은 정확히 특정 웹 사이트에 대해 무엇인지에 초점을 맞 춥니 다. 40 00:01:45,880 --> 00:01:48,630 당신은 모든 다양한 구성을 반복 할 필요가 없습니다 41 00:01:48,630 --> 00:01:53,070 과 코드의 분리 및 재 작성 코드 42 00:01:53,070 --> 00:01:56,180 당신은 자주 당신이 웹 사이트를 만들거나, 할 필요가있다. 43 00:01:56,180 --> 00:01:59,410 아이디어는 프레임 워크는 높은 수준의 코드를 작성할 수 있다는 것입니다 44 00:01:59,410 --> 00:02:01,030 낮은 수준의 세부 사항에 대해 걱정하지 않고. 45 00:02:01,030 --> 00:02:03,670 낮은 수준의 세부 사항과 같은 수 있습니다 46 00:02:03,670 --> 00:02:07,250 사용자 입력 데이터를 청소 다루는. 47 00:02:07,250 --> 00:02:09,320 즉, 당신이 정말로 걱정 할 필요가 없습니다 뭔가. 48 00:02:09,320 --> 00:02:12,370 당신은 당신의 웹 할당에 대해 실제로 무엇에 집중해야합니다. 49 00:02:12,370 --> 00:02:14,790 이 상용구 코드를 많이 제거합니다. 50 00:02:14,790 --> 00:02:16,640 그것은 당신의 프로젝트를위한 아키텍처입니다. 51 00:02:16,640 --> 00:02:18,680 >> 가장 인기있는 하나의 모델 - 뷰 - 컨트롤러가 될 것입니다 52 00:02:18,680 --> 00:02:20,380 나는 두 번째에 대해 이야기하는거야. 53 00:02:20,380 --> 00:02:22,790 및 시간이 많이 이러한 프레임 워크는 일련의 절차를 구체화 54 00:02:22,790 --> 00:02:25,750 귀하가 사용하는 규칙 및 우수 사례 55 00:02:25,750 --> 00:02:28,190 그 그래서 당신은 웹 프레임 워크를 채택 할 때 56 00:02:28,190 --> 00:02:30,050 당신은 어떤 방식으로 코드를 작성해야 57 00:02:30,050 --> 00:02:32,430 그것은 일반적 원칙들에 합의 된 것 58 00:02:32,430 --> 00:02:34,290 일반적으로 허용되는 사회의 59 00:02:34,290 --> 00:02:36,230 코드를 작성하는 좋은 방법. 60 00:02:36,230 --> 00:02:38,260 그것은 더 유용, 코드를 더욱 유지 관리합니다 61 00:02:38,260 --> 00:02:40,030 등등 등등. 62 00:02:40,030 --> 00:02:42,740 그리고 마지막으로, 내가 원하는 것은 프레임 워크에 대한 강조 63 00:02:42,740 --> 00:02:45,980 라이브러리 대 제어의 반전에 대한이 생각은, 그리고 일이 있습니다. 64 00:02:45,980 --> 00:02:48,430 라이브러리와 프레임 워크의 차이는 그 라이브러리 65 00:02:48,430 --> 00:02:51,990 당신은 여전히​​ 주요 프로그램을 작성하는, 66 00:02:51,990 --> 00:02:54,460 당신은 종류의 라이브러리를 호출하고 67 00:02:54,460 --> 00:02:56,810 당신을 위해 뭔가를 도서관에 전화. 68 00:02:56,810 --> 00:02:58,180 라이브러리와 프레임 워크의 차이 69 00:02:58,180 --> 00:03:01,620 프레임 워크가 제어로 시작한다는 것입니다, 70 00:03:01,620 --> 00:03:03,260 그리고 그것은 당신의 코드를 호출 71 00:03:03,260 --> 00:03:06,190 그래서 당신은 그것을 생각할 수있는 -이 프레임 워크라는 이유입니다 - 72 00:03:06,190 --> 00:03:09,700 프레임 워크는 코드의이 프레임 구조를 제공한다, 73 00:03:09,700 --> 00:03:11,320 당신은 구멍을 채우 74 00:03:11,320 --> 00:03:13,990 이것은 제에서보다 명백해질 것이다 75 00:03:13,990 --> 00:03:16,670 당신이 볼 때 프레임 워크의 컨텍스트 내에서 코드를 작성하기 시작합니다. 76 00:03:16,670 --> 00:03:19,130 내가 격차를 작성하고 있습니다 것을 알 수 있습니다, 77 00:03:19,130 --> 00:03:22,450 그리고 프레임 워크는 종류의, 모든 움직이는 조각을 제어하는 78 00:03:22,450 --> 00:03:27,420 나는 적당한 장소에 조각을 넣어해야합니다. 79 00:03:27,420 --> 00:03:29,360 >> 오늘 우리는 코 하나에 대해 이야기 할 것입니다, 80 00:03:29,360 --> 00:03:31,610 이는 많은 PHP 프레임 워크 중 하나입니다. 81 00:03:31,610 --> 00:03:34,550 , 웹 프레임 워크가있다, 그리고 사람은 거의 모든 하나의 언어가있다 82 00:03:34,550 --> 00:03:38,330 코 하나는 틀림없이 때문에 나는 코 하나를 따기 해요 83 00:03:38,330 --> 00:03:43,250 일반적으로 픽업 할 수있는 가장 쉬운 PHP 프레임 워크로 인식. 84 00:03:43,250 --> 00:03:45,940 그것은 가장 가벼운입니다. 85 00:03:45,940 --> 00:03:48,470 많은, 더 많은 기능을 함께 거기에 다른 사람이있다 86 00:03:48,470 --> 00:03:51,590 그러나 픽업하기 어려운 경향이있다. 87 00:03:51,590 --> 00:03:54,920 그리고 마지막으로, 코 하나는 MVC 아키텍처를 사용합니다. 88 00:03:54,920 --> 00:03:57,780 우리가 말 그대로 프로젝트를 빌드 할 수있을만큼 경량의 89 00:03:57,780 --> 00:03:59,620 여기 바로 눈 앞에서, 당신은 꽤 많은 수 90 00:03:59,620 --> 00:04:02,780 아주 쉽게 따라 따릅니다. 91 00:04:02,780 --> 00:04:04,420 >> MVC 아키텍처는 무엇입니까? 92 00:04:04,420 --> 00:04:06,540 그것은, 모델 - 뷰 - 컨트롤러를 의미합니다 93 00:04:06,540 --> 00:04:09,560 당신이 코드를 생각하면 어쩌면 당신은 지금까지 쓰고있어 94 00:04:09,560 --> 00:04:11,280 웹 개발하여 pset의 일부 95 00:04:11,280 --> 00:04:14,710 당신이 쓰기를 시작할 때 일반적으로이 중 일부를 볼 수있을 수 있지만, 96 00:04:14,710 --> 00:04:16,500 더 복잡한 웹 응용 프로그램, 97 00:04:16,500 --> 00:04:21,209 이 3 개의 세그먼트 사이의 구분은 점점 더 분명해진다. 98 00:04:21,209 --> 00:04:26,740 나는 종류의 스택 여기에 MVC를 배치 99 00:04:26,740 --> 00:04:29,920 종종 당신은 사람들이 웹 개발에 스택에 대해 이야기 듣게 될 것입니다, 100 00:04:29,920 --> 00:04:33,760 이것은 아이디어를 설명하는 것을 101 00:04:33,760 --> 00:04:37,510 각 층은, 각 구성 요소는 실제로 단지 통신을 시도 102 00:04:37,510 --> 00:04:40,750 2 다른 구성 요소 사이. 103 00:04:40,750 --> 00:04:44,550 누군가가 클라이언트 또는 브라우저로 웹 사이트에 액세스합니다. 104 00:04:44,550 --> 00:04:48,870 그들은 뷰 코드를 통해 프로그램과 상호 작용합니다. 105 00:04:48,870 --> 00:04:50,500 뷰 코드는 컨트롤러와 상호 작용합니다. 106 00:04:50,500 --> 00:04:52,400 제어기는, 모델과 상호 작용 107 00:04:52,400 --> 00:04:55,090 그리고 모델은 SQL 데이터베이스와 상호 작용합니다. 108 00:04:55,090 --> 00:04:59,670 당신이 적절하게 코드를 작성하는 경우 사이에 호핑가 없습니다. 109 00:04:59,670 --> 00:05:01,670 >> 이런 일들은 어떻게해야합니까? 110 00:05:01,670 --> 00:05:06,020 이 모델은 기본적으로 데이터를 다루는 코드의 조각이다. 111 00:05:06,020 --> 00:05:09,100 당신이 저장하는 객체, 데이터베이스를 다루는 아무거나 112 00:05:09,100 --> 00:05:11,280 또는 데이터베이스에서 해당 개체를 검색, 113 00:05:11,280 --> 00:05:13,450 이 모든 모델에 의해 처리하고. 114 00:05:13,450 --> 00:05:15,290 어쩌면 당신은 당신의 데이터베이스의 개체가 있습니다. 115 00:05:15,290 --> 00:05:17,700 우리는 글과 함께 할 필요 모델을 만들 것입니다, 116 00:05:17,700 --> 00:05:19,760 그래서 포스트는 몇 가지 특성을 가지고있다. 117 00:05:19,760 --> 00:05:23,900 당신은 그 글을 저장하거나 게시물을 검색하는 주위에 함수가있을 수 있습니다 118 00:05:23,900 --> 00:05:26,270 또는 등등 등등 게시물을 필터링, 119 00:05:26,270 --> 00:05:28,880 그리고 그 모델에 의해 처리하고 모든 코드입니다. 120 00:05:28,880 --> 00:05:31,780 컨트롤러는 애플리케이션 로직의 일종이며, 121 00:05:31,780 --> 00:05:37,910 다른 많은 것들을 응용 프로그램 논리에 갈 수 있습니다. 122 00:05:37,910 --> 00:05:39,790 당신은 다른 API로 이야기하는 경우, 123 00:05:39,790 --> 00:05:42,310 응용 프로그램 로직을 처리하는 곳이 될 수있다. 124 00:05:42,310 --> 00:05:47,990 여러 다른 모델에서 데이터를 반입 할하려는 경우 125 00:05:47,990 --> 00:05:51,540 종종 컨트롤러에 의해 처리 될 수있는 몇 가지 방법을 결합해야합니다. 126 00:05:51,540 --> 00:05:53,820 예를 들어, 페이스 북에, 당신의 친구 사람의 경우, 127 00:05:53,820 --> 00:05:58,500 그 관계를 수립 한 다음, 아마도 그 행위 128 00:05:58,500 --> 00:06:00,490 컨트롤러에 의해 수행 할 수 있습니다. 129 00:06:00,490 --> 00:06:04,350 >> 그리고 마지막으로,보기는 당신이 실제로 무엇을보고 만들어 줄 코드입니다. 130 00:06:04,350 --> 00:06:07,410 많은 시간 나는 CS50의 psets를 생각 131 00:06:07,410 --> 00:06:10,050 그들은 정말이 3 가지를 분리하는 너희들을 권장하지 않습니다. 132 00:06:10,050 --> 00:06:12,430 당신은 아마 상단에 위치이 큰, 긴 파일이 있습니다 133 00:06:12,430 --> 00:06:15,130 일부 SQL 쿼리를하고 어쩌면 일부 처리에게 할 134 00:06:15,130 --> 00:06:17,020 데이터는 데이터베이스에서 검색 135 00:06:17,020 --> 00:06:19,370 그리고 당신은 바닥에 모든 HTML이있다. 136 00:06:19,370 --> 00:06:22,840 당신이 더 많은 페이지를 만들 때 그리고 당신은 그것을 찾을 수 있습니다 137 00:06:22,840 --> 00:06:25,790 당신은 또한 몇 가지 코드의 반복을해야 할 것,하고 있다는 것을, 138 00:06:25,790 --> 00:06:29,600 것은 당신의 파일이 정말 크고 긴 얻고 있습니다 139 00:06:29,600 --> 00:06:32,370 및 관리 다루기됩니다. 140 00:06:32,370 --> 00:06:34,500 MVC는 잘 받고있는 이유 141 00:06:34,500 --> 00:06:36,120 여러 가지 이유입니다. 142 00:06:36,120 --> 00:06:38,110 우선은의 분리 뭔가를 호출 143 00:06:38,110 --> 00:06:40,370 이는 당신이 가지고있는 생각입니다 - 144 00:06:40,370 --> 00:06:43,520 코드 이상적으로 1 개 조각, 1 일을 정말 잘해야 145 00:06:43,520 --> 00:06:47,210 당신은 다른 일을 할 코드의 조각을 결합하지 않아야합니다. 146 00:06:47,210 --> 00:06:49,230 예를 들어, 코드 및 모델 코드를 볼 147 00:06:49,230 --> 00:06:51,040 그들은 정말 관련이있을 필요가 없습니다. 148 00:06:51,040 --> 00:06:53,290 만약, 그것들을 분리 할 때 동일 파일에 있어야하므로 않는다 149 00:06:53,290 --> 00:06:55,300 그래서 그것을 유지하기 쉽습니다. 150 00:06:55,300 --> 00:06:57,130 >> 다른 것은 코드 재사용이다. 151 00:06:57,130 --> 00:06:59,770 당신은 자신이 같은 SQL 쿼리를 작성하거나 일을 찾을 수 있습니다 152 00:06:59,770 --> 00:07:03,060 1 함수로 추상화 될 수있는 유사한 쿼리, 153 00:07:03,060 --> 00:07:05,440 그리고 그 아이디어 모델과 컨트롤러 뒤에 154 00:07:05,440 --> 00:07:09,690 프로젝트에서 다른 장소에서 재사용 할 수있는 별도의 기능에 필요. 155 00:07:09,690 --> 00:07:12,420 그리고 마지막으로, 즉, 코드를 건조에 묶여 156 00:07:12,420 --> 00:07:14,700 나 자신을 반복하지, 자신을 반복하지 않는다. 157 00:07:14,700 --> 00:07:18,090 이것은 개발에서 매우 이해할 수 있습니다. 158 00:07:18,090 --> 00:07:20,110 당신이, 당신은 당신이 자신을 반복하는 경우 때문에, 자신을 반복하지 않으려 할 수 있습니다 때마다, 159 00:07:20,760 --> 00:07:23,400  그것은 훨씬 더 비용이 많이 드는 유지하기 위해의. 160 00:07:23,400 --> 00:07:26,040 당신이 한 일을 변경하려는 경우에는, 사방에 그것을 변경해야 161 00:07:26,040 --> 00:07:30,230 해당 버그에 이르게하고, 끔찍한입니다. 162 00:07:30,230 --> 00:07:32,010 >> 좋아요. 163 00:07:32,010 --> 00:07:37,270 지금까지 코 하나에 대한 질문은 전혀? 164 00:07:37,270 --> 00:07:39,200 좋아요. 165 00:07:39,200 --> 00:07:42,300 이제 우리는 라이브 코딩 세션에 뛰어들 것입니다, 166 00:07:42,300 --> 00:07:48,050 잘하면 모든 것이 잘 어울린다. 167 00:07:57,200 --> 00:08:00,050 나는 기본적으로이 웹 사이트를 구축 할 예정 168 00:08:00,050 --> 00:08:03,910 내 원격 서버 중 하나, 너희들도 할 수있는 방법에 169 00:08:03,910 --> 00:08:06,310 웹 사이트를 확인하고 웹 사이트에 액세스, 170 00:08:06,310 --> 00:08:10,990 또한 환경, 내 원격 시스템보다 더 나은 구성 171 00:08:10,990 --> 00:08:14,580 대신 OS X의 리눅스를 실행 때문 172 00:08:14,580 --> 00:08:16,260 우리는 말 그대로 시작하는 것입니다. 173 00:08:16,260 --> 00:08:18,110 KohanaFramework.org. 174 00:08:18,110 --> 00:08:21,350 나는 웹 사이트에서 코드를 다운로드하는거야. 175 00:08:21,350 --> 00:08:24,610 나는 링크 주소를 복사거야, 176 00:08:24,610 --> 00:08:29,770 내 서버로 이동, 그것을 다운로드 177 00:08:29,770 --> 00:08:33,000 나는 그것을 추출하는거야. 178 00:08:38,330 --> 00:08:45,710 >> [학생] 텍스트를 만들 수있는 가장 큰은 무엇입니까? 179 00:08:45,710 --> 00:08:47,330 [브랜든 리우 즉 더 나은가요? 180 00:08:47,330 --> 00:08:50,070 [학생] [브랜든 리우] 네, 괜찮아요 것을 행할? >>입니다. 181 00:08:50,070 --> 00:08:54,500 나는, ZIP 파일을 다운로드 및 코 하나라는 디렉토리에 그 압축을 해제 182 00:08:54,500 --> 00:08:58,820 그리고 우리는 그 CS50-코 하나의 이름을 바꿀거야 183 00:08:58,820 --> 00:09:01,140 하고 들어가요 184 00:09:01,140 --> 00:09:03,610 신난다. 185 00:09:03,610 --> 00:09:06,870 여기에 다른 파일들을 참조하십시오. 186 00:09:06,870 --> 00:09:10,140 당신의 대부분은 무시할 수 있습니다 - 여기에서의 모든 단일 파일을 통해 갈 수 없습니다라는 거예요 187 00:09:10,140 --> 00:09:13,130 우리의 시간 제약 때문에, 188 00:09:13,130 --> 00:09:16,310 그러나 일반적으로는 코 하나, 당신이 제일 먼저 설치하는 경우 189 00:09:16,310 --> 00:09:23,210 당신이 디렉토리로 이동하고, 190 00:09:23,210 --> 00:09:26,050 당신은 기본적으로 일부 환경 테스트 및 이것 저것을 할 것이다 191 00:09:26,050 --> 00:09:28,640 확인 환경이 제대로 코 하나를 실행하도록 설정되어 192 00:09:28,640 --> 00:09:31,450 모든 것이 괜찮아 있는지 확인하십시오. 193 00:09:31,450 --> 00:09:35,510 당신은 대부분의 일들이 전달 볼 수 있지만, 일반적으로 당신은 항상 1이 문제로 실행 194 00:09:35,510 --> 00:09:38,180 그것은, 어떤 디렉토리에 쓰기 권한이 없습니다 뿌려 곳 195 00:09:38,180 --> 00:09:40,410 그 때문에 약간의 사용 권한입니다. 196 00:09:40,410 --> 00:09:43,080 나는 너희들이 CS50에있는 파일 사용 권한에 대해 배운 얼마나 몰라 197 00:09:43,080 --> 00:09:47,920 당신이 웹 개발을 할 경우에, 당신은이 문제에 많이 실행하는 것입니다. 198 00:09:47,920 --> 00:09:58,340 나는 그것이 가능한 만들려고 해요 199 00:09:58,340 --> 00:10:03,390 우리가 갈이 - 난에 나는 또한이 생각합니다. 200 00:10:03,390 --> 00:10:07,040 >> 자, 이제 당신이 모든 것을 통과 볼 수 있습니다, 201 00:10:07,040 --> 00:10:10,000 지금은 설치 install.php 파일의 이름을 알려줍니다. 202 00:10:10,000 --> 00:10:15,630 나는 installed.php에 설치 install.php 파일을 이동하는거야, 203 00:10:15,630 --> 00:10:19,610 지금은, 새로 고치면 204 00:10:19,610 --> 00:10:22,810 그것은 나에게 약간의 오류를 제공하고, 디버깅이 들어오는 곳이다 205 00:10:22,810 --> 00:10:25,610 당신이 실제로 무슨 일이 일어날 지 볼 수있는 곳이다. 206 00:10:25,610 --> 00:10:28,460 문제는 기본적으로 코 하나는 가정이다 207 00:10:28,460 --> 00:10:31,480 프로젝트는, 도메인의 루트 디렉토리에 있습니다 208 00:10:31,480 --> 00:10:35,920 그래서 당신이 demo.brandonkliu.com에있을 것으로 예상하고 있어요. 209 00:10:35,920 --> 00:10:37,540 우리는 하위 폴더에 실제로 있다고 그것을 말해야한다. 210 00:10:37,540 --> 00:10:39,820 그것은 CS50 코 하나라는 하위 폴더에 있습니다. 211 00:10:39,820 --> 00:10:42,640 점은 CS50-코 하나를 잘못 해석하​​는 것입니다 212 00:10:42,640 --> 00:10:45,680 나는 두 번째에 당신에게 설명 할 것 다른 것뿐. 213 00:10:45,680 --> 00:10:49,910 하지만 그 예상 할 수있는 무언가의 당신을 말해야한다. 214 00:10:49,910 --> 00:10:53,700 우리가하려고하는 것은, 우리가 bootstrap.php이라는 폴더로 갈거야입니다 215 00:10:53,700 --> 00:10:59,260 이는 다른 많은 것들을이 설정되어있는 구성 폴더입니다. 216 00:10:59,260 --> 00:11:01,570 나는 그것을 엽니 다. 217 00:11:01,570 --> 00:11:09,790 어쩌면 내가 가장 먼저 것들 중 하나는 시간대를 변경합니다. 218 00:11:09,790 --> 00:11:13,910 >> 그리고 나서 보자. 219 00:11:13,910 --> 00:11:15,180 아하! 바로 여기. 220 00:11:15,180 --> 00:11:18,690 다른 구성 말의 무리가 여기에 있습니다, 221 00:11:18,690 --> 00:11:21,700 하지만 내가 찾는 사람은, 기본 URL이라는 것입니다 222 00:11:21,700 --> 00:11:24,570 기본적으로 나는 그것이 코 하나에 설정하세요 223 00:11:24,570 --> 00:11:29,020 하지만, CS50-코 하나에 그 변경거야 224 00:11:29,020 --> 00:11:32,880 나는 그 문제를 해결할한다고 생각합니다. 225 00:11:32,880 --> 00:11:34,150 그래, 좋아. 226 00:11:34,150 --> 00:11:39,530 기본적으로, 그것은 말한다 작동하고 있음을 볼 수 있습니다에 "Hello World." 227 00:11:39,530 --> 00:11:42,930 그 어디에서 왔는가? 우리는 어떻게 안녕하세요에 도착 했습니까? 228 00:11:42,930 --> 00:11:47,640 정확히 어디서 실제로 쓴 코드는? 229 00:11:47,640 --> 00:11:50,240 그것을 이해하기 위해, 라우팅이라는 개념을 소개한다. 230 00:11:50,240 --> 00:11:52,590 거의 모든 웹 프레임 워크, 라우팅이라는 개념이 231 00:11:52,590 --> 00:11:57,230 특정 URL을 매핑 할 소프트웨어의 조각입니다 232 00:11:57,230 --> 00:12:01,550 당신의 프레임 워크 내에서 특정 코드에. 233 00:12:01,550 --> 00:12:07,510 당신은 어떤 URL을 가지고 예를 들어, 당신은 같은 foo.com / 블로그 / 모두가 어떤 URL로 이동 234 00:12:07,510 --> 00:12:11,170 다음 어떤 프레임 워크를 할 것입니다 - 적어도 어떤 코 하나 할 것입니다 - 235 00:12:11,170 --> 00:12:15,540 그것은 컨트롤러 블로그라는 클래스를 찾을려고합니다 236 00:12:15,540 --> 00:12:18,720 그것은 모든 기능이라는 작업을 실행하는 것입니다. 237 00:12:18,720 --> 00:12:20,160 나는 클래스와 기능에 대해 얘기하는 거에요 알고, 238 00:12:20,160 --> 00:12:23,860 나는 너희들이 클래스와 함수를 포함하지 않은 알고 239 00:12:23,860 --> 00:12:26,470 아직 CS50에있는,하지만 지금은, 240 00:12:26,470 --> 00:12:29,800 당신은 기능의 단지 그룹으로 클래스를 생각할 수있는, 241 00:12:29,800 --> 00:12:32,900 함께 기능을 그룹화 방법. 242 00:12:32,900 --> 00:12:37,690 정말 당신이 알 필요가 전부입니다. 243 00:12:37,690 --> 00:12:43,120 >> 이제 우리는 우리의 폴더 구조를 보면, 244 00:12:43,120 --> 00:12:47,110 응용 프로그램 폴더 안에 클래스라는 또 다른 폴더가있다 245 00:12:47,110 --> 00:12:49,200 다른 폴더는 컨트롤러와 모델이라고합니다. 246 00:12:49,200 --> 00:12:52,530 당신이 컨트롤러의 폴더 안에 보면, 247 00:12:52,530 --> 00:12:56,330 우리는 오신 것을 환영합니다라는 파일이 있는지 확인 248 00:12:56,330 --> 00:13:00,370 당신은 여기를 참조 컨트롤러에 오신 것을 환영합니다라는 클래스입니다 수 있습니다 249 00:13:00,370 --> 00:13:02,340 및 액션 인덱스라는 함수가있다 250 00:13:02,340 --> 00:13:06,360 어떤이 수행하는 것은여보세요 세계로 응답의 본문을 설정합니다. 251 00:13:06,360 --> 00:13:08,730 코드가 기록되는 곳이다. 252 00:13:08,730 --> 00:13:11,610 다른 질문은, 음, 나는 가지 않았다된다 253 00:13:11,610 --> 00:13:13,680 어쩌구 저쩌구, / 환영 / 인덱스. 254 00:13:13,680 --> 00:13:16,250 내가 어떻게 여기까지 갔니? 255 00:13:16,250 --> 00:13:20,410 글쎄, 그건 간단하기 때문에의 256 00:13:20,410 --> 00:13:22,410 여기에 우리의 부트 스트랩 파일의 맨 아래에 257 00:13:22,410 --> 00:13:24,550 우리는 우리의 경로를 설정 위치 258 00:13:24,550 --> 00:13:26,570 당신은 그들이 당신을 위해 몇 가지 기본값을 설정할 것을 볼 수 있습니다. 259 00:13:26,570 --> 00:13:28,990 기본 컨트롤러에 오신 것을 환영합니다. 기본 동작은 인덱스입니다. 260 00:13:28,990 --> 00:13:31,600 우리가 거​​기에 아무것도 넣지 때 자동으로 시작 컨트롤러에 갔다 이유 261 00:13:31,600 --> 00:13:33,940 인덱스 작업. 262 00:13:33,940 --> 00:13:37,460 >> 모든 것은 지금까지 이해? 263 00:13:37,460 --> 00:13:40,850 지금, 당신은 컨트롤러로 이동보다 더 많은 작업을 수행 할 수 있습니다 264 00:13:40,850 --> 00:13:43,670 특정 행동. 265 00:13:43,670 --> 00:13:48,480 또한 컨트롤러에 매개 변수를 전달할 수 있습니다. 266 00:13:48,480 --> 00:13:56,390 단지 예로서, 267 00:13:56,390 --> 00:14:04,070 난 당신을 보여주기 위해이 컨트롤러에 다른 작업을 추가하는거야. 268 00:14:04,070 --> 00:14:09,130 당신이 그것을 줄 당신이 무엇을 말하려고 때문의는, 에코이 작업을 부르 자, 269 00:14:09,130 --> 00:14:17,510 그래서 나는 기본적으로 잡아 갈거야 270 00:14:17,510 --> 00:14:20,960 라우팅 프로그램에 저를 통해 전송 될 것 매개 변수, 271 00:14:20,960 --> 00:14:24,440 당신은 여기에서 볼 수 있듯이, 272 00:14:24,440 --> 00:14:28,440 여기이 선, 당신은 그것을 볼 수 있습니다 273 00:14:28,440 --> 00:14:31,270 이것은 기본적으로 당신이 컨트롤러가, 당신은 /을 의미 274 00:14:31,270 --> 00:14:33,480 그리고, 당신은 행동을 가지고 있고, 다른 /이 275 00:14:33,480 --> 00:14:39,140 그 매개 변수가 될 것, 그리고있어 우리는이 이름의 ID를 가지고 있기 때문에 276 00:14:39,140 --> 00:14:42,450 꺾쇠 괄호 내에서, 즉 우리가이 매개 변수 ID의 이름을 지정하는 것을 의미한다. 277 00:14:42,450 --> 00:14:45,490 나중에 내 컨트롤러 코드에서 내가 그 매개 변수를 꽉 잡아하려는 경우, 278 00:14:45,490 --> 00:14:51,790 나는 ID라는 이름의 매개 변수를 찾아, 내가 쓴 코드를 사용할 수 있습니다. 279 00:14:51,790 --> 00:14:59,290 그게 내가 여기에 무슨 짓을했는지, 나는 돌아가 말을하려고 해요, 280 00:14:59,290 --> 00:15:07,090 그 "당신은 말했다". 281 00:15:07,090 --> 00:15:10,760 그리고 지금은, 우리의 웹 사이트로 이동하는 경우 282 00:15:10,760 --> 00:15:19,550 나는 cs50-kohana/welcome/echo/Helloooo--로 이동 283 00:15:19,550 --> 00:15:21,420 아, 맞아. 284 00:15:21,420 --> 00:15:23,930 I는 생략 1 단계가있다. 285 00:15:23,930 --> 00:15:27,020 이 라이브 코딩 아이디어의 일부입니다. 286 00:15:27,020 --> 00:15:36,100 >> 다음은 1 일입니다. 보자. 287 00:15:36,100 --> 00:15:38,870 그래서 일반적으로 이러한 웹 응용 프로그램의 많은 기본적으로 288 00:15:38,870 --> 00:15:42,820 당신은 당신의 URL이 index.php를 일을 포함해야합니다, 289 00:15:42,820 --> 00:15:46,410 아이디어는 index.php를 진입 점의 일종 때문에 290 00:15:46,410 --> 00:15:48,250 응용 프로그램,하지만 물론, 291 00:15:48,250 --> 00:15:50,110 그 종류의 짜증나는 건데. 292 00:15:50,110 --> 00:15:53,790 당신은 index.php 파일이 URL에 표시하고 싶지 않아 293 00:15:53,790 --> 00:15:56,080 그리고 상자 밖으로 거의 모든 웹 프레임 워크 294 00:15:56,080 --> 00:15:58,440 이 index.php를 문제가, 295 00:15:58,440 --> 00:16:03,370 그래서 당신은 그것을 제거 할 수있는 몇 가지 조치를 취할 수있다. 296 00:16:03,370 --> 00:16:07,540 그리고이 경우, 297 00:16:07,540 --> 00:16:11,450 우리가 무엇을 할 거 야 우리가. htaccess로라는 파일을 사용하려고하고있다, 298 00:16:11,450 --> 00:16:13,900 이것은, 아파치 웹 서버에 특정한 무언가입니다 299 00:16:13,900 --> 00:16:16,290 그것은 재 작성 URL을 같은 일을 할 수있다 300 00:16:16,290 --> 00:16:19,350 등 등 URL 및 리디렉션 301 00:16:19,350 --> 00:16:24,280 그리고 코 하나는 우리가 사용할 수있는 템플릿. htaccess 파일을 제공 할 정도로 좋은 것입니다. 302 00:16:24,280 --> 00:16:28,300 당신이 볼 수 있듯이 >> example.htaccess라는이 파일이 303 00:16:28,300 --> 00:16:33,410 우리는. htaccess로 해당를 복사 할 것입니다. 304 00:16:33,410 --> 00:16:36,950 나는이를 열고 편집 할거야, 305 00:16:36,950 --> 00:16:40,840 기본적으로는 여러 가지 무리를 않습니다. 306 00:16:40,840 --> 00:16:45,320 당신이보고 할 수 있습니다 키 라인 바로 여기에있다. 307 00:16:45,320 --> 00:16:49,840 아이디어는이라는 규칙을 설정하는 것입니다 308 00:16:49,840 --> 00:16:56,400 "그래, 당신이 무엇을 그에게 앞에 추가 index.php 파일을 입력합니다." 309 00:16:56,400 --> 00:16:58,710 당신은 그것을 볼 수 있습니다. 310 00:16:58,710 --> 00:17:00,370 . *는 아무것도 일치, 무엇을 의미 311 00:17:00,370 --> 00:17:03,300 다음 두 번째 부분은 index.php를 / $ 0이다 312 00:17:03,300 --> 00:17:07,410 그리고 $ 0 이전에 일치 된 무엇을 의미합니다. 313 00:17:07,410 --> 00:17:09,500 그 의미가 있습니까? 314 00:17:09,500 --> 00:17:12,190 하지만 변경할 정말 중요한 것은,이 재 작성의 기본을 변경합니다 315 00:17:12,190 --> 00:17:14,300 이는 URL의 기본입니다. 316 00:17:14,300 --> 00:17:17,780 당신이에서 작업하는 곳은 일종의 가정합니다. 317 00:17:17,780 --> 00:17:22,560 나는 그에게 CS50 코 하나를 추가 할거야, 318 00:17:22,560 --> 00:17:26,530 그 방법은 지금은 index.php 파일을 제거하면, 319 00:17:26,530 --> 00:17:32,110 그것을 작동합니다, 나는 몇 가지 숫자를 추가하는거야 320 00:17:32,110 --> 00:17:36,380 그것은 참으로 일을 한 사실을 표시합니다. 321 00:17:36,380 --> 00:17:38,130 좋은 소리. 322 00:17:38,130 --> 00:17:40,260 >> 지금까지 질문? 323 00:17:40,260 --> 00:17:42,300 [학생] 어떻게 123하게 알고 있었나요? 324 00:17:42,300 --> 00:17:44,120 그게 인자인가? 325 00:17:44,120 --> 00:17:46,560 정확히. 당신은 인수처럼 생각할 수 있습니다. 326 00:17:46,560 --> 00:17:52,410 그러나 이상한 것은, 비록입니다 코 하나는 그것을 수행하는 방법 327 00:17:52,410 --> 00:17:54,910 그들은 정확하게 인수처럼하지 않습니다됩니다. 328 00:17:54,910 --> 00:17:56,930 이처럼 잡아해야합니다. 329 00:17:56,930 --> 00:18:01,030 당신은 요청 개체를 잡아 ID라는 것 매개 변수를 요청해야합니다, 330 00:18:01,030 --> 00:18:03,240 그 이름 ID는 부트 스트랩 파일에서 온다 331 00:18:03,240 --> 00:18:06,990 나는 이전였으며, 이름 ID는 해당 꺾쇠 괄호 있다는 332 00:18:06,990 --> 00:18:11,580 그것은 당신이 그 매개 변수를 잡아 방법입니다. 333 00:18:11,580 --> 00:18:14,010 신난다. 334 00:18:14,010 --> 00:18:17,550 다른 질문? 335 00:18:17,550 --> 00:18:20,500 내가 말했듯이, 컨트롤러, 그들은, 애플리케이션 로직을 처리 336 00:18:20,500 --> 00:18:22,980 그래서 당신은 도대체를 볼 수 있습니다 1 인스턴스의 - 337 00:18:22,980 --> 00:18:24,830 , 매우 기본적인, 그러나 여전히 애플리케이션 로직의 정보 338 00:18:24,830 --> 00:18:27,980 매개 변수를 잡아 새로운 문자열을 만드는 아이디어 339 00:18:27,980 --> 00:18:31,920 "당신은 바보스런 일을했다"라고 한 다음에 그것을 다시 침이. 340 00:18:31,920 --> 00:18:34,030 일반적으로 당신이 할 일은 당신이 다른 컨트롤러를 만드는 것입니다. 341 00:18:34,030 --> 00:18:36,450 당신은 당신의 웹 사이트의 다른 부분에 대한 별도의 컨트롤러를 만들 수 있습니다. 342 00:18:36,450 --> 00:18:38,160 >> 오늘 우리는 아주 간단한 웹 사이트를 만들 것입니다, 343 00:18:38,160 --> 00:18:40,420 그것은 매우 기본적인 블로그가 될 것. 344 00:18:40,420 --> 00:18:43,780 우리는 단지 블로그에 게시물을 새 컨트롤러를 만들 것입니다. 345 00:18:43,780 --> 00:18:47,060 하지만 그때, 또한 블로그 게시물에 댓글을 추가 할 수 있다면 346 00:18:47,060 --> 00:18:50,140 아마도 난 그 의견에 대한 새로운 컨트롤러를 만들고 싶어합니다. 347 00:18:50,140 --> 00:18:53,380 I 사용자를 추가하고 싶었다면, 나는 아마 그 사용자를위한 새로운 컨트롤러를 추가 할 것입니다, 348 00:18:53,380 --> 00:18:57,000 그리고 일반적으로, 아이디어는 당신이 새로운 모델을 할 때마다, 349 00:18:57,000 --> 00:18:59,630 당신이 상대하고있는 새로운 데이터 객체, 350 00:18:59,630 --> 00:19:02,970 해당 데이터 개체에 대한 하나의 컨트롤러가 있습니다. 351 00:19:02,970 --> 00:19:04,370 오늘 우리는 1 데이터 객체로 작업하는 것입니다, 352 00:19:04,370 --> 00:19:06,250 그리고 그 글이 될 것, 353 00:19:06,250 --> 00:19:08,710 또한 당신은 테이블에 대응하는 등의 데이터 개체로 생각할 수 있습니다. 354 00:19:08,710 --> 00:19:12,160 일반적으로 각 테이블은 데이터 객체의 한 유형에 해당하는, 355 00:19:12,160 --> 00:19:15,160 그래서 포스트 표는, 1 개의 게시물 모델을해야합니다 356 00:19:15,160 --> 00:19:18,230 에 대응 한 후 컨트롤러가있는 것이다, 357 00:19:18,230 --> 00:19:22,190 와 코멘트, 등등 등등 사용자를위한 동일과에 대한 동일합니다. 358 00:19:22,190 --> 00:19:24,070 그리고는 엄지 손가락의 일반적인 규칙입니다. 359 00:19:24,070 --> 00:19:27,460 당신이 다를 수 있습니다 특별한 경우가있을거야, 360 00:19:27,460 --> 00:19:29,300 그러나 당신이 일을 할거야 무슨 시간의 90 % 361 00:19:29,300 --> 00:19:32,810 그리고 나는 그것이 오늘날 우리가 일을 할 것입니다 무슨 당신에게 보여줄 것이다. 362 00:19:32,810 --> 00:19:35,490 1 우리가 코드에 다이빙을하기 전에 더 많은 개념, 363 00:19:35,490 --> 00:19:37,710 객체 관계 맵핑의 생각. 364 00:19:37,710 --> 00:19:41,200 >> 너희들은 이미 웹 개발 PSET을했다, 365 00:19:41,200 --> 00:19:43,820 당신은, 당신은 SQL 쿼리를 만드는 것을 본 적이 366 00:19:43,820 --> 00:19:46,510 그리고 그것이 당신에게 반환 어떤 행이 있습니다. 367 00:19:46,510 --> 00:19:50,040 당신은 몇 가지 이름을 이러한 행을 얻고, 당신 인덱스 368 00:19:50,040 --> 00:19:55,480 열 및 테이블의 이름 369 00:19:55,480 --> 00:19:57,630 그것은 당신이 그것을 작동 방법 370 00:19:57,630 --> 00:19:59,290 그것은 조금 번거로울 수 있습니다. 371 00:19:59,290 --> 00:20:01,810 그러나 또한, 당신은 당신의 데이터베이스 내에서 관계가있는 경우, 372 00:20:01,810 --> 00:20:05,280 같은 예를 들어 나는 의견과 게시물이있는 경우 373 00:20:05,280 --> 00:20:11,240 어쩌면 나는 주석의 부모 게시물을 잡고 싶어요. 374 00:20:11,240 --> 00:20:14,350 내가 SQL 단지 행을 사용하는 경우, 다음 내가 할 수있는 모든 ID입니다 375 00:20:14,350 --> 00:20:19,310 상위 게시물의 아닌 실제 게시물 자체. 376 00:20:19,310 --> 00:20:21,680 우리가 코딩 할 때 그러나, 우리가 실제로 원하는 것은 실제로 잡아하는 것입니다 377 00:20:21,680 --> 00:20:23,550  부모는 때때로 자신을 게시합니다. 378 00:20:23,550 --> 00:20:25,730 관계형 매핑이되어 무엇을 객체 379 00:20:25,730 --> 00:20:29,480 그것은 데이터베이스 쿼리의 결과를 취 380 00:20:29,480 --> 00:20:32,420 와 함께 일하기 매우 좋네요 당신을 위해 개체에 넣 381 00:20:32,420 --> 00:20:34,770 일반 배열과 행보다. 382 00:20:34,770 --> 00:20:37,550 >> 예를 들어, 지금은 아마도 주석이있을 때 383 00:20:37,550 --> 00:20:40,900 나는 부모의 게시물을 잡고 싶어 384 00:20:40,900 --> 00:20:43,440 나는 어쩌면 화살표 게시물을 주석 않습니다, 385 00:20:43,440 --> 00:20:45,230 다음은 실제로 나에게 포스트 객체를 제공합니다 386 00:20:45,230 --> 00:20:47,940 실제 부모의 게시물에 해당하는 일부 ID뿐만 아니라, 387 00:20:47,940 --> 00:20:52,210 어떤 I 그렇지 않으면 게시물을 잡기 위해 다른 SQL 쿼리를 사용하게 할 것입니다, 388 00:20:52,210 --> 00:20:57,430 복잡하고 불필요한이다. 389 00:20:57,430 --> 00:21:01,840 그리고 또한, 개체에 모든 데이터 행을 매핑하여, 390 00:21:01,840 --> 00:21:03,760 당신은 또한 객체에 더 많은 기능을 첨부 할 수 있습니다, 391 00:21:03,760 --> 00:21:09,700 그래서 예를 들어, I 클래스는 기본적으로 기능을 그룹화하는 방법에 대한 이야기​​. 392 00:21:09,700 --> 00:21:11,620 당신은 그런 식으로 생각할 수 있습니다. 393 00:21:11,620 --> 00:21:15,290 예를 들어, 어쩌면이 게시물 개체가, 394 00:21:15,290 --> 00:21:17,830 어쩌면 나는에 연결된 함수의 일종을 가지고 싶습니다 395 00:21:17,830 --> 00:21:20,300 즉, 기본적으로 날이 최근에 게시 한 이야기​​? 396 00:21:20,300 --> 00:21:23,570 그것은 참 또는 거짓, 지난 주 내에 게시 한? 397 00:21:23,570 --> 00:21:27,320 그리고 그게 내가 그 객체에 첨부 할 수 있습니다 함수의, 398 00:21:27,320 --> 00:21:31,300 그리고, 동일한 장소에 가지고 정말 편리 399 00:21:31,300 --> 00:21:33,820 당신이 만들 수있는 다른 기능의 호스트가있다 400 00:21:33,820 --> 00:21:37,990 이러한 개체에 대한, 그리고 클래스에 장착 할 수있는 정말 좋은 데요, 401 00:21:37,990 --> 00:21:41,700 개체에, 당신은 당신의 데이터베이스에서 나오는 행이 있다면 반면에, 402 00:21:41,700 --> 00:21:43,790 당신은 정말 어떤 기능을 첨부 할 수 없습니다. 403 00:21:43,790 --> 00:21:47,850 그것은 말 그대로 그냥 데이터입니다. 404 00:21:47,850 --> 00:21:50,550 전혀 그것에 대해 질문? 405 00:21:50,550 --> 00:21:52,710 ORM들을 매우 일반적인 웹 개발이다, 406 00:21:52,710 --> 00:21:56,330 와 ORM들을 다른 유형이 많이 있습니다, 407 00:21:56,330 --> 00:21:58,450 그리고 코 하나는 자신의 ORM 있습니다. 408 00:21:58,450 --> 00:22:05,050 그것은 아주 기본적인,하지만 당신은 어떻게 생겼는지의 맛을 얻을 수 있습니다. 409 00:22:05,050 --> 00:22:08,780 >>의 우리의 블로그 게시물에 대한 모델을 만들어 보자, 410 00:22:08,780 --> 00:22:12,350 우리가 분명히해야 할 첫 번째 일은 실제 테이블을 만드는 것입니다 411 00:22:12,350 --> 00:22:16,680 우리의 데이터베이스에 실제로 그 게시물에 대한 우리의 데이터를 저장하는 데 사용됩니다. 412 00:22:16,680 --> 00:22:19,260 내가 할거야 먼저 phpMyAdmin을로 이동합니다. 413 00:22:19,260 --> 00:22:21,410 너희들은 전에 phpMyAdmin을 사용 했습니까? 414 00:22:21,410 --> 00:22:23,400 좋아요, 최고, 그래서 너희들은 이미이 무엇인지, 415 00:22:23,400 --> 00:22:32,200 나는 코 하나의 게시물라는 새 테이블을 만들거야, 416 00:22:32,200 --> 00:22:37,820 그것은 정말 간단 할 것입니다. 417 00:22:37,820 --> 00:22:40,190 나는 다시 로그인해야합니다 418 00:23:02,620 --> 00:23:04,640 우리가 오늘 할 거 야 모든 저자와 몸을 가지고있다, 419 00:23:04,640 --> 00:23:11,930 그냥 간단하게 유지합니다. 420 00:23:11,930 --> 00:23:15,620 그 테이블을 만들거야, 421 00:23:15,620 --> 00:23:19,620 지금 우리는 단지 우리의 게시물을 나타내는 테이블이 422 00:23:19,620 --> 00:23:23,370 우리의 작가와 우리의 몸에 2 필드. 423 00:23:23,370 --> 00:23:26,290 내가 지금 뭘합니까 다른 것입니다 424 00:23:26,290 --> 00:23:29,820 는 데이터베이스에 연결하는 방법을 알 수 있도록 내 웹 응용 프로그램을 구성, 425 00:23:29,820 --> 00:23:31,950 이것은, 다시, 당신은 모든 웹 응용 프로그램으로해야 할 것이다 무언가이다. 426 00:23:31,950 --> 00:23:34,790 당신은 그것을 사용자 이름과 암호를 말해야 427 00:23:34,790 --> 00:23:36,990 및 데이터베이스의 이름 등등 등등 428 00:23:36,990 --> 00:23:40,000 실제로 데이터베이스에 연결하는 방법을 알아낼 수 있습니다. 429 00:23:40,000 --> 00:23:58,710 >> 코 하나, 우리는 데이터베이스 모듈라고 뭔가를 430 00:23:58,710 --> 00:24:02,690 및 구성 폴더에 우리는 데이터베이스이라는 폴더가 431 00:24:02,690 --> 00:24:07,330 당신이 볼 수있는 바와 같이, 여기에서 설정해야 할 설정의 무리가 있습니다 432 00:24:07,330 --> 00:24:09,860 사용자 이름과 암호의이 무엇인지 433 00:24:09,860 --> 00:24:13,110 데이터베이스에 대한 그래서 실제로 연결할 수 있습니다. 434 00:24:13,110 --> 00:24:15,010 그리고 난 너희들이 실제로 알고 싶어하지 않기 때문에 435 00:24:15,010 --> 00:24:17,190 사용자 이름과 내 데이터베이스의 암호 436 00:24:17,190 --> 00:24:23,840 나는 이미 모든 설정 파일을 가지고, 나는 복사를 통해 붙여거야. 437 00:24:33,080 --> 00:24:36,870 신난다. 438 00:24:36,870 --> 00:24:39,880 좋아요. 그게 내가해야 할 모든 구성의 생각, 439 00:24:39,880 --> 00:24:41,070 그러나 보자. 440 00:24:41,070 --> 00:24:43,720 뭔가 충돌이 있다면, 우리는 그것에서 작업을 계속하고 있습니다 441 00:24:43,720 --> 00:24:47,490 우리는 문제를 해결할 수 있습니다. 442 00:24:47,490 --> 00:24:51,830 지금 내가 할거야 것은 내가 새로운 컨트롤러를 만드는거야입니다. 443 00:24:51,830 --> 00:24:53,190 아니면 실제로, 죄송합니다. 444 00:24:53,190 --> 00:24:55,080 우선 새로운 모델을 만들어야합니다. 445 00:24:55,080 --> 00:25:01,620 나는 Post.php라는 새로운 모델을 만들 수 있습니다 446 00:25:01,620 --> 00:25:12,440 우리가 무엇을 할 거 야 우리가 클래스 Model_Post를 호출하는거야입니다. 447 00:25:12,440 --> 00:25:15,390 일부 구문에 대한 강조 얻을, 448 00:25:15,390 --> 00:25:19,750 그래서 내가 말을 할 때, 그 기본적이다 "ORM은 확장" 449 00:25:19,750 --> 00:25:21,210 좀 더 객체 지향 프로그래밍 450 00:25:21,210 --> 00:25:23,340 어떤 불행하게도 너희들은 아직 CS50에서 배운하지 않은, 451 00:25:23,340 --> 00:25:25,290 하지만 데리러 매우 쉽습니다. 452 00:25:25,290 --> 00:25:27,950 그것은 저에게이 ORM 패키지로 제공이 모든 추가 기능을 제공합니다 453 00:25:27,950 --> 00:25:31,120 그리고 나는, 추가 기능을 무료로 이것 저것 잔뜩 얻을 454 00:25:31,120 --> 00:25:34,810 당신은 두 번째에서의 비트를 볼 수있다. 455 00:25:34,810 --> 00:25:37,670 >> 지금 실제로 내가 할 필요가있는이 클래스를 만드는 것입니다. 456 00:25:37,670 --> 00:25:39,160 난 어떤 함수 나 아무것도 할 필요가 없습니다, 457 00:25:39,160 --> 00:25:41,770 하지만 테이블을 나타내는 클래스를 만들었습니다, 458 00:25:41,770 --> 00:25:44,140 나는이 ORM 클래스를 확장했습니다 때문에, 459 00:25:44,140 --> 00:25:51,080 난 공짜로 물건을 잔뜩, 그래서 지금 당신은 아무것도 더 많은 위로를 설정할 필요가 없습니다. 460 00:25:51,080 --> 00:25:53,530 그리고 지금 내가 할거야 것은 내가 새로운 컨트롤러를 만드는거야입니다, 461 00:25:53,530 --> 00:25:58,480 이는 내가 blog.php 이름을거야, 462 00:25:58,480 --> 00:26:04,350 나는 시작 컨트롤러에 복사하는거야 463 00:26:04,350 --> 00:26:11,950 그래서 몇 가지 물건을 다시 입력 할 필요가 없습니다, 464 00:26:11,950 --> 00:26:20,720 지금은이 이름을 변경해야합니다. 465 00:26:20,720 --> 00:26:24,710 이제 내가 모든 것이 밖으로 작동하기 위해 테스트하는 할거야 것은, 466 00:26:24,710 --> 00:26:27,820 내 데이터베이스의 첫 번째 게시물을 잡아 갈거야 467 00:26:27,820 --> 00:26:32,680 화면의 게시물의 본문을 인쇄 할 수 있습니다. 468 00:26:32,680 --> 00:26:37,920 내가 먼저 할거야 것은 내가 게시물을 저장하는거야 것을 수행하려면 469 00:26:37,920 --> 00:26:48,770 변수에 그래서 우리가 무엇을 할 거 야하는 것입니다 - 470 00:26:48,770 --> 00:26:52,090 코 하나에 당신이 할 일은 포스트 개체를 잡아하는 것입니다 471 00:26:52,090 --> 00:26:55,380 , 좀 복잡하지만 당신은 ORM이라는 것 :: 공장을 할 필요가 472 00:26:55,380 --> 00:26:57,750 그리고 당신은 당신이 원하는 모델의 이름을 전달, 473 00:26:57,750 --> 00:27:00,490 그리고 그 모델을 나타내는 ORM 개체를 반환합니다. 474 00:27:00,490 --> 00:27:04,860 그리고, 같은 나는, 우리는 ORM 객체를 확장 할 때, 말 475 00:27:04,860 --> 00:27:07,320 우리는 무료로 모든 방법을, 그래서 예를 들면, 476 00:27:07,320 --> 00:27:09,200 우리는 호출이 새로운 기능은 "모두 찾기"얻을 477 00:27:09,200 --> 00:27:12,160 이는 자동으로 데이터베이스에있는 모든 단일 포스트를 반환 478 00:27:12,160 --> 00:27:14,850 이는 매우 편리합니다. 479 00:27:14,850 --> 00:27:17,480 >> 그리고 지금 몸에서 나는 돌아 갈거야 480 00:27:17,480 --> 00:27:24,860 첫 번째 게시물과 몸을 반환합니다. 481 00:27:24,860 --> 00:27:27,930 그리고 물론, 내가 게시물을 작성해야합니다, 482 00:27:27,930 --> 00:27:31,880 그래서 새로운 포스트를 삽입 할 수 있습니다. 483 00:27:31,880 --> 00:27:37,870 나는, "브랜든, 내 첫 번째 게시물을."라고 말할 수 있습니다 484 00:27:37,870 --> 00:27:40,010 신난다. 485 00:27:40,010 --> 00:27:45,910 그리고 지금 우리의 블로그에 가서 486 00:27:45,910 --> 00:27:50,960 모든 것이 잘 작동하는 경우와 - 아,이 또 다른 바보 파일 권한 것입니다. 487 00:27:50,960 --> 00:27:56,090 일초에 개최. 그것은 종류의 터무니없는. 488 00:28:06,700 --> 00:28:08,490 거기 우리는 간다. 좋아요. 489 00:28:08,490 --> 00:28:10,040 그 권한 문제를 해결했습니다. 490 00:28:10,040 --> 00:28:12,040 그것은 몇 가지 파일과 일부 로그를 만들려고했다, 491 00:28:12,040 --> 00:28:15,400 와 권한, 다시 제대로 설정되지 않은, 그래서 그것을 만든 492 00:28:15,400 --> 00:28:18,320 그래서 그 파일은 쓰기와 실행했다 493 00:28:18,320 --> 00:28:21,090 그래서 실제로 볼거리에 로그온 할 수 있습니다. 494 00:28:21,090 --> 00:28:24,220 지금은 "클래스 ORM 찾을 수 없습니다"나에게 또 다른 예외 말을주고 495 00:28:24,220 --> 00:28:26,960 내가 다른 단계를 잊었 때문에 그건. 496 00:28:26,960 --> 00:28:37,010 즉, 너무 나쁘다. 497 00:28:37,010 --> 00:28:40,270 부트 스트랩 폴더 파일에서, 여기에이 모듈이 있습니다, 498 00:28:40,270 --> 00:28:42,480 활성화 또는 비활성화 할 수있다. 499 00:28:42,480 --> 00:28:44,340 이들은 당신이 사용하도록 선택할 수있는 다양한 기능들을 수 있습니다 500 00:28:44,340 --> 00:28:46,180 종류의 좋은 코 하나, 내. 501 00:28:46,180 --> 00:28:49,090 >> 예를 들면, 그들은 인증 모듈을 가지고 502 00:28:49,090 --> 00:28:51,170 당신은 어느 사용자를 인증 할 수 있습니다. 503 00:28:51,170 --> 00:28:53,390 구현하려는 경우 그들은 캐싱 모듈이 504 00:28:53,390 --> 00:28:57,870 응용 프로그램 작업을 신속하고 이것 저것 할 말을 다시 캐시의 일종. 505 00:28:57,870 --> 00:29:02,140 우리는 데이터베이스와 ORM 모듈을 사용하도록 설정해야합니다, 506 00:29:02,140 --> 00:29:04,280 같은 내가 말했기 때문에, 우리는 분명히 데이터베이스를 사용하는 507 00:29:04,280 --> 00:29:08,200 그리고 우리는 또한 ORM 모듈을 사용하도록 설정해야합니다, 508 00:29:08,200 --> 00:29:12,220 우리가 가지고 기쁜 추가 기능을 가지고 싶습니다 때문입니다. 509 00:29:12,220 --> 00:29:14,240 내가 할 일은, 그 2 줄의 주석입니다 510 00:29:14,240 --> 00:29:18,760 내가 새로 고치면 지금, 나에게 또 다른 오류를 주었다. 511 00:29:18,760 --> 00:29:22,100 그것은 "클래스 Model_Post를 찾을 수 없습니다"라고 말한다. 512 00:29:22,100 --> 00:29:30,210 지금이해야하는 것이 문제입니다. 513 00:29:30,210 --> 00:29:37,660 보자. 514 00:29:37,660 --> 00:29:42,200 그것은 공개합니다. 515 00:29:42,200 --> 00:29:46,450 번호 기다려. 516 00:30:11,610 --> 00:30:13,160 오, 이런. 517 00:30:13,160 --> 00:30:18,590 는 것을 발견 할 수없는 이유를 모르겠어요. 518 00:30:18,590 --> 00:30:21,030 정말 이상하다. 519 00:30:21,030 --> 00:30:23,820 바로 여기에이 클래스가있다. 520 00:30:23,820 --> 00:30:28,650 오 - 내가가있을 수 있습니다 같아요. 521 00:30:28,650 --> 00:30:32,010 난 너무 바보입니다. 나는 PHP 태그를 추가하는 것을 잊었다. 522 00:30:32,010 --> 00:30:34,670 그 이유입니다. 523 00:30:34,670 --> 00:30:41,260 지금은 1 변화는 그냥 한 것을 취소해야합니다. 524 00:30:41,260 --> 00:30:44,270 >> 좋아요. 거기 우리는 간다. 525 00:30:44,270 --> 00:30:47,500 정말 바보였다. 내가 여는 PHP 태그가 없습니다. 526 00:30:47,500 --> 00:30:49,900 당신이 볼 수 있듯이, 지금은 바로, 제대로 작동하는거야? 527 00:30:49,900 --> 00:30:51,240 우리는 1 개의 게시물이 있습니다. 528 00:30:51,240 --> 00:30:54,730 우리는 첫 번째 게시물을 잡고, 그리고 지금 우리의 몸을 인쇄. 529 00:30:54,730 --> 00:30:58,010 좋아요. 환상적인. 530 00:30:58,010 --> 00:31:01,470 질문 지금까지? 531 00:31:01,470 --> 00:31:04,100 아니? 질문? 532 00:31:04,100 --> 00:31:08,340 좋아, 그래서 우리는 그냥 아주 기본적인 포스트 모델을 생성 533 00:31:08,340 --> 00:31:10,930 우리는 이후에 일부 기능을 추가하는 것입니다. 534 00:31:10,930 --> 00:31:13,600 우리는 검증 및 필터링을 추가 할 수 있습니다. 535 00:31:13,600 --> 00:31:15,650 검증은 것들 중 하나입니다 536 00:31:15,650 --> 00:31:18,150 프레임 워크는 정말 잘, 정말 당신을 해결하는 것이, 537 00:31:18,150 --> 00:31:21,310 나는 너희들이 CS50의 PSET에 대해이 작업을 수행 할 수 있다고 생각하지 않습니다, 538 00:31:21,310 --> 00:31:24,000 하지만 당신은 당신의 마지막 프로젝트에 웹 개발을 할 경우, 539 00:31:24,000 --> 00:31:26,280 당신은 가능성이 검증의 일종을 수행 할 것입니다, 540 00:31:26,280 --> 00:31:28,290 같은 빈 사용자 이름을 가지고 있지, 541 00:31:28,290 --> 00:31:31,950 아마 적어도 일부 길이의 암호를 가지고, 그런 것. 542 00:31:31,950 --> 00:31:34,750 그리고 우리 자신에 의해 이러한 것들을 구현하기 위해 정말 귀찮은 일 543 00:31:34,750 --> 00:31:37,390 그리고 거의 모든 단일 웹 프레임 워크는 당신을 위해 그것을 않습니다 544 00:31:37,390 --> 00:31:41,140 당신은 매우 깨끗한 방법으로 그것을 할 수 있습니다. 545 00:31:41,140 --> 00:31:44,340 당신은 일반적으로 그 유효성 검사 규칙을 표현하는 장소와 모델이며, 546 00:31:44,340 --> 00:31:48,790 이 모델이 유효한지 여부를 검증하는 것 때문입니다. 547 00:31:48,790 --> 00:31:51,350 >>하지만 지금, 우리는 나중에 때까지 넣어거야 548 00:31:51,350 --> 00:31:53,520 그리고 지금 우리는 또 다른 부분에서 작동하는 것입니다, 549 00:31:53,520 --> 00:31:55,400 그리고 우리는 새보기를 시도하고 만들거야 550 00:31:55,400 --> 00:31:59,580 그 모든 게시물을 나열합니다. 551 00:31:59,580 --> 00:32:02,490 모든 게시물 목록에 대한 새로운 액션을 만들기에 참여하는 단계 552 00:32:02,490 --> 00:32:04,810 모든 게시물의 목록을 잡아입니다 553 00:32:04,810 --> 00:32:11,990 다음 뷰를 통해 모든 글의리스트를 렌더링. 554 00:32:11,990 --> 00:32:16,420 바로 여기, 다행히만큼, 우리는 이미 모든 게시물을 잡고 555 00:32:16,420 --> 00:32:20,310 이 첫 번째 라인을 사용하여 모든 기능을 찾을 수 556 00:32:20,310 --> 00:32:22,520 지금 우리가 할거야 지금까지입니다 557 00:32:22,520 --> 00:32:25,350 I는 직접 응답의 본문을 설정 봤는데 558 00:32:25,350 --> 00:32:29,090 문자열을 전달하지만, 지금은 뷰를 사용하고자 원으로, 559 00:32:29,090 --> 00:32:31,870 바로이 일을보기와의 차이 560 00:32:31,870 --> 00:32:35,330 보기와 나는 좋은, 큰 HTML 템플릿을 가질 수있다, 561 00:32:35,330 --> 00:32:37,710 무엇을 내가 할 수있는 것은 특정 변수를 전달한다 562 00:32:37,710 --> 00:32:42,200 다음 뷰가 자동으로 템플릿을 채우는있다 563 00:32:42,200 --> 00:32:44,690 이 변수를 사용하여. 564 00:32:44,690 --> 00:32:50,780 내가 할 거 야하는 것은, 내가 새보기를 만들 것입니다 565 00:32:50,780 --> 00:32:55,940 나는 "블로그 / 인덱스"와 같은보기 무언가의 이름을 수 있습니다 566 00:32:55,940 --> 00:33:08,480 저는 기본적으로이 바인딩거야 - 오, 내가 무엇을 쓰고 있어요? 567 00:33:08,480 --> 00:33:12,910 나의 뇌는 다른 곳입니다. 568 00:33:12,910 --> 00:33:16,600 내가보기에 변수 게시물을 바인딩하는거야 569 00:33:16,600 --> 00:33:19,950 그래서 그 방법은보기이 게시물 변수에 액세스 할 수 있습니다. 570 00:33:19,950 --> 00:33:26,140 >> 그래서 지금은이보기를 작성해야합니다, 571 00:33:26,140 --> 00:33:28,500 그래서 여기에 우리가 '보기'이라는 폴더가 572 00:33:28,500 --> 00:33:32,150 먼저, 그 호출에 새 폴더를 만들거야 "블로그." 573 00:33:32,150 --> 00:33:35,810 이것은 좋은 것입니다. 그런 식으로 우리는 우리의 견해에 대한 좋은 계층 구조를 가질 수있다. 574 00:33:35,810 --> 00:33:43,910 그리고 나서 전화가있는 다른 파일을 만들거야 "index.php 파일을." 575 00:33:43,910 --> 00:33:45,780 신난다. 576 00:33:45,780 --> 00:33:52,930 사실, 여기서 둘 다하자. 577 00:33:52,930 --> 00:33:56,760 뷰 파일을 만드는 것은 아마 모든이의 가장 간단한 부분입니다, 578 00:33:56,760 --> 00:33:59,090 이들은 아마 당신은 이미 익숙한 것들입니다. 579 00:33:59,090 --> 00:34:01,240 우리는 정말 간단 뭔가를 할거야 580 00:34:01,240 --> 00:34:05,360 말을 시작 "블로그 게시물의 내​​ 목록입니다." 581 00:34:05,360 --> 00:34:14,860 그럼 우리가 통과 할 수 있습니다, 582 00:34:14,860 --> 00:34:17,920 우리는 게시물의 배열을 반복 할 수 있습니다, 583 00:34:17,920 --> 00:34:21,760 매일 게시물을 잡고 같은 말 - 584 00:34:21,760 --> 00:34:25,290 어쩌면 라인을 추가 585 00:34:25,290 --> 00:34:42,460 다음 작가와 몸을 인쇄 할 수 있습니다. 586 00:34:42,460 --> 00:34:44,480 즉, 지금까지 이해? 587 00:34:44,480 --> 00:34:50,870 그리고 그것은 작동하는지 보자. 588 00:34:50,870 --> 00:34:53,489 아무 일도하지 않습니다. 589 00:34:53,489 --> 00:34:55,090 그 이유를 궁금해. 590 00:34:55,090 --> 00:34:58,760 아, 1 단계를 놓쳤다. 나를 아주 바보. 591 00:34:58,760 --> 00:35:01,640 내가보기를 생성,하지만 난 응답으로 뷰를 설정하지 않은, 592 00:35:01,640 --> 00:35:03,190 그래서 당신은 하나 더 많은 일을해야합니다. 593 00:35:03,190 --> 00:35:12,610 당신은 "이 응답의 몸"을 수행하고보기로 설정해야합니다. 594 00:35:12,610 --> 00:35:14,760 거기 우리는 간다. 595 00:35:14,760 --> 00:35:17,200 우리는 우리의 제목을 가지고 있고, 우리는 포스트를 가지고, 596 00:35:17,200 --> 00:35:20,500 그냥 재미로,의 다른 게시물을 삽입 할 597 00:35:20,500 --> 00:35:23,390 그래서 우리는 목록을 볼 수 있습니다. 598 00:35:31,800 --> 00:35:36,650 그리고이 2 게시물을 삽입, 599 00:35:36,650 --> 00:35:39,500 지금은 페이지를 새로 고칠 경우, 600 00:35:39,500 --> 00:35:42,060 우리는 여기에서 모든 게시물을 참조하십시오. 601 00:35:42,060 --> 00:35:44,250 >>이 지금까지 의미가 있습니까? 602 00:35:44,250 --> 00:35:46,400 네, 질문? 좋아, 오. 603 00:35:46,400 --> 00:35:51,440 당신이 볼 수 있듯이, 우리는 밖으로 모든 코드를 분리 할 수​​있었습니다 604 00:35:51,440 --> 00:35:53,920 다른 부분으로, 다음은 뷰 코드를 가장 분명 볼 수 있습니다. 605 00:35:53,920 --> 00:35:57,810 이 관점을 나타냅니다 여기에서 파일, 606 00:35:57,810 --> 00:36:01,220 그것은 단지 데이터를 표시하는 데이터를 나타내는 대해 관심. 607 00:36:01,220 --> 00:36:04,310 그것은 데이터의 일종 전달됩니다 그리고 그것이 모두 당신에게 보여 있습니다. 608 00:36:04,310 --> 00:36:07,660 코드의 다른 부분에서, 당신은 그 중 하나에 대해 걱정할 필요가 없습니다, 609 00:36:07,660 --> 00:36:10,480 마찬가지로, 뷰 코드에 대해 아무것도 걱정하지 않습니다 610 00:36:10,480 --> 00:36:13,390 데이터베이스에 액세스하고 등등 등등,하는 방법 611 00:36:13,390 --> 00:36:19,950 이는 정말 좋은 당신의 코드가 더 많은 유지 관리합니다. 612 00:36:19,950 --> 00:36:23,390 내가 말했듯이, 뷰, 그들은 그 동적입니다 613 00:36:23,390 --> 00:36:27,080 그것은 1 파일,하지만 그것은 다른 관점을 생성합니다 614 00:36:27,080 --> 00:36:29,940 실제로 전달할 변수에 따라, 615 00:36:29,940 --> 00:36:32,370 더 나아가, 다른 도우미 기능이 많이 있습니다 616 00:36:32,370 --> 00:36:34,230 당신은 당신이 빠른 코드를 작성하는 데 사용할 수있는 617 00:36:34,230 --> 00:36:36,320 난 그냥 초에 보여주지있다. 618 00:36:36,320 --> 00:36:38,050 그래. 619 00:36:38,050 --> 00:36:42,490 >> [학생] 그래서 0달러 오른쪽 컨트롤러? 620 00:36:42,490 --> 00:36:44,000 즉, 두 번째 것은. 621 00:36:44,000 --> 00:36:46,090 문제는 0달러 컨트롤러입니다? 622 00:36:46,090 --> 00:36:48,610 0달러 내가 바로 여기에 생성 된 변수입니다. 623 00:36:48,610 --> 00:36:51,320 먼저 뷰를 만들었습니다. 나는 약간의 변수에 할당. 624 00:36:51,320 --> 00:36:54,960 그런 다음이 함수에 전달 응답의 본문으로 설정합니다. 625 00:36:54,960 --> 00:36:57,260 그 의미가 있습니까? 626 00:36:57,260 --> 00:37:02,200 [학생] 그래서보기 :: 공장, 클래스 모양의보기이다 627 00:37:02,200 --> 00:37:06,610 또는 도서관 [들림] 공장 기능? 628 00:37:06,610 --> 00:37:10,640 문제는,보기 :: 공장 기능에 관한 것입니다 629 00:37:10,640 --> 00:37:14,020 기본적으로 이것은 본질적으로 좀 더 객체 지향 프로그래밍입니다. 630 00:37:14,020 --> 00:37:18,000 "공장"보기 뷰 클래스이며,라는 방법을 가지고 631 00:37:18,000 --> 00:37:24,170 그리고 그 이름이있어 개체를 잡기 위해 방법 "블로그 / 인덱스를." 632 00:37:24,170 --> 00:37:27,140 그리고 좀 더 객체 지향 프로그래밍 물건의 633 00:37:27,140 --> 00:37:33,010 너무 많이 여기에 갈 아니에요. 634 00:37:33,010 --> 00:37:36,400 이제 분명히, 우리는 새로운 게시물을 작성하려면, 635 00:37:36,400 --> 00:37:38,790 그러나 우리는 데이터베이스를 통해 그것을 할 싶지 않아, 636 00:37:38,790 --> 00:37:41,280 그래서 우리는 새 게시물을 작성하기위한 새로운 액션을 만들려고하고, 637 00:37:41,280 --> 00:37:43,050 우리가해야 할 물건이 많이있다. 638 00:37:43,050 --> 00:37:45,910 >> 우리가 할 겁니다 가장 먼저하는 일이 -의 이러한 것들을 하나 하나를 해결 할 수 있습니다. 639 00:37:45,910 --> 00:37:48,320 우리가 할 첫 번째 것은 우리가 양식을 만들 수있어입니다 640 00:37:48,320 --> 00:37:54,460 새 게시물을 삽입하기위한, 641 00:37:54,460 --> 00:37:57,360 그러나 나는 또한, 먼저 새 작업을 추가하는거야 642 00:37:57,360 --> 00:38:01,050 그래서 새로운 액션을 추가하는 것만큼이나 간단합니다 643 00:38:01,050 --> 00:38:03,490 컨트롤러에 새로운 기능을 추가, 644 00:38:03,490 --> 00:38:13,710 그리고 지금 나는 매우 기본적인 무언가를 할거야 645 00:38:13,710 --> 00:38:20,850 다만이보기를 잡아 게시, 당신을 위해 표시합니다. 646 00:38:20,850 --> 00:38:26,220 그리고 지금은 새로운 뷰 파일을 만들거야, 647 00:38:26,220 --> 00:38:33,690 나는 몇 가지 물건을 쓰기 시작하겠습니다. 648 00:38:33,690 --> 00:38:36,540 어떤 코 하나에 대한 좋은 것은 서로 다른 도우미 기능을 많이 제공하는 것입니다 649 00:38:36,540 --> 00:38:38,790 당신은 더 쉽게보기 코드를 작성하기 위해 650 00:38:38,790 --> 00:38:41,970 그 도우미 함수 또는 도우미 모듈 1 651 00:38:41,970 --> 00:38:45,860 주위에 양식을 쓰고있다. 652 00:38:45,860 --> 00:38:49,460 양식을 작성하기위한, 정말 직접 HTML 나 자신을 작성할 필요가 없습니다. 653 00:38:49,460 --> 00:38:51,100 너희들은 HTML 양식을 작성했습니다. 654 00:38:51,100 --> 00:38:54,850 당신은 정말, 정말 고통스러운 양식을 작성하는 성가신 될 수있는 방법을 알고있다. 655 00:38:54,850 --> 00:38:59,970 그것은 다행히, 재미 아니다 656 00:38:59,970 --> 00:39:04,860 우리는 기본적으로 코 하나의를 사용하여 양식을 작성할 수 있습니다 657 00:39:04,860 --> 00:39:11,190 우리를 위해 그것을하는 도우미 함수를 형성한다. 658 00:39:11,190 --> 00:39:17,340 우리는 기본적으로 우리가 매일 매일 일을 위해 필드를해야 할 것입니다 659 00:39:17,340 --> 00:39:23,160 그래서 저자에 대한 하나의 몸에 대한 한. 660 00:39:23,160 --> 00:39:27,090 우리는 레이블을해야 할 것입니다, 우리는 입력을해야 할 것입니다. 661 00:39:37,450 --> 00:39:41,360 >> 그리고 마지막으로, 우리는 제출해야 할 것입니다. 662 00:39:49,350 --> 00:39:52,230 그리고 당신이 볼 수 있듯이,이는 작성하기가 훨씬 깨끗하다 663 00:39:52,230 --> 00:39:58,150 종류의 좋은 모든 지저분한 HTML보다. 664 00:39:58,150 --> 00:40:00,930 설령, 그것보다 훨씬 청소기가 다른 웹 프레임 워크가있다, 665 00:40:00,930 --> 00:40:04,440 하지만 적어도이 HTML을 직접 작성하는 것보다 낫다. 666 00:40:09,400 --> 00:40:11,130 멋진, 그래서 이것은 당신이 무엇을보고있다. 667 00:40:11,130 --> 00:40:13,530 즉, 좀 지저분 668 00:40:13,530 --> 00:40:19,720 그래서 나는 거기에 줄 바꿈을 추가 할거야 669 00:40:19,720 --> 00:40:21,180 그 조금 더 멋진 보이게. 670 00:40:21,180 --> 00:40:23,330 음, 물론, 아직 정말, 정말 나쁜 보이지만, 우리는 단지 집중된다 671 00:40:23,330 --> 00:40:26,050 미학에 지금하지 않는 기능에. 672 00:40:26,050 --> 00:40:28,010 모든 일을 할 시간이 없습니다. 673 00:40:28,010 --> 00:40:30,600 당신이 볼 수 있듯이, 지금 우리는 매우 기본적인 형태를 가지고, 674 00:40:30,600 --> 00:40:32,080 어떤 종류의 좋은 것입니다. 675 00:40:32,080 --> 00:40:36,730 나는이 말을이 코드는 자신을 형성 HTML을 작성하는 것보다 청소기, 676 00:40:36,730 --> 00:40:40,290 그래서 좋다. 677 00:40:40,290 --> 00:40:42,030 다음은? 678 00:40:42,030 --> 00:40:49,260 이제 우리는 행동으로 일을해야합니다. 679 00:40:49,260 --> 00:40:51,240 당신이 HTML 양식을 작성할 때 일반적으로, 680 00:40:51,240 --> 00:40:54,070 당신은에 양식을 제출 어디로 가는지를 말해야한다. 681 00:40:54,070 --> 00:40:56,050 대부분의 웹 프레임 워크에서 기본적으로 682 00:40:56,050 --> 00:40:58,200 그것은 동일한 URL에 제출, 그래서 것입니다 683 00:40:58,200 --> 00:41:01,310 당신은에 / 블로그 / 새로운 GET 요청을 보내는 경우 684 00:41:01,310 --> 00:41:03,240 그것은 당신에게 폼을 표시한다, 685 00:41:03,240 --> 00:41:06,810 그러나 당신이 POST 요청을 보내는 경우에 / 블로그 / 데이터와 새, 686 00:41:06,810 --> 00:41:10,000 실제로 해당 게시물을 저장하려고한다 687 00:41:10,000 --> 00:41:13,300 그것으로 작업을 수행합니다. 688 00:41:20,630 --> 00:41:22,180 >> 우리가하려고하는 것은 689 00:41:22,180 --> 00:41:25,320 기본적으로 모든 우리는 POST 요청 또는 GET 요청의 여부를 확인해야 690 00:41:25,320 --> 00:41:29,350 설정할 수있는 POST 변수가 무엇인지 확인하는 것입니다. 691 00:41:29,350 --> 00:41:34,560 포스트 변수가 설정되어 있다면, 우리는 시도하고 새 게시물을 작성하는 것입니다. 692 00:41:34,560 --> 00:41:38,440 다시 말하지만, 우리는 그냥 이렇게, 693 00:41:38,440 --> 00:41:41,090 그리고 그 새 게시물을 작성하고, 우리는 문자 그대로거야 694 00:41:41,090 --> 00:41:51,150 이 같은 자사의 필드를 설정, 695 00:41:51,150 --> 00:41:55,640 그리고, 우리는 그것을 저장하는 것입니다. 696 00:41:55,640 --> 00:41:59,200 그리고 나서 재거야 697 00:41:59,200 --> 00:42:07,660 인덱스 페이지에 그래서 그들은 게시물의 우리의 목록을 다시 볼 수 있습니다. 698 00:42:07,660 --> 00:42:09,620 의 그 해보자. 699 00:42:09,620 --> 00:42:15,160 나는 "브랜든"라고 말할 수 있습니다 700 00:42:15,160 --> 00:42:18,140 그리고, 다음 게시물을 제출, 모두가 잘되면 701 00:42:18,140 --> 00:42:21,390 당신이 볼 수 있듯이, 인덱스 페이지에 저를 재 702 00:42:21,390 --> 00:42:24,140 나는 아래로 스크롤 경우에, 우리는 새로 삽입 된 게시물이 있습니다. 703 00:42:24,140 --> 00:42:26,430 야호! 704 00:42:26,430 --> 00:42:28,430 네, 질문입니다. 705 00:42:28,430 --> 00:42:31,760 >> [학생] 당신은 무엇을 정확히 똑같은 일을 입력 한 경우 706 00:42:31,760 --> 00:42:33,380 당신은 이전에 입력? 707 00:42:33,380 --> 00:42:36,950 그것은 당신이 중복되지 않은 확인하십시오 않습니​​다 708 00:42:36,950 --> 00:42:38,810 같은 제출? 709 00:42:38,810 --> 00:42:41,660 기본값으로, 아니, 때문에 기본적으로 - 710 00:42:41,660 --> 00:42:46,470 양식에서 동일한 데이터를 입력하면 죄송합니다, 질문은 711 00:42:46,470 --> 00:42:50,180 그리고, 당신이 중복 된 개체를 삽입 할 수 있도록, 그 제출 712 00:42:50,180 --> 00:42:52,550 본질적으로, 항목을 중복? 713 00:42:52,550 --> 00:42:54,070 지금, 그래, 당신이 그렇게 할 수 있도록, 714 00:42:54,070 --> 00:42:58,860 데이터베이스에 완전히 중복 행이 완벽하게 유효하기 때문에, 715 00:42:58,860 --> 00:43:02,260 즉 문제가되는 경우에, 당신은 예를 들어, 유효성 검사를 추가 할 수 있습니다, 716 00:43:02,260 --> 00:43:06,430 이것은 이미 존재하는 무언가와 정확히 동일한 경우 있는지 확인하기 위해, 717 00:43:06,430 --> 00:43:08,720 다음은 유효하지 않은 객체의 말, 718 00:43:08,720 --> 00:43:11,200 그리고 당신은 당신의 오류 메시지를 지정할 수 있습니다 719 00:43:11,200 --> 00:43:14,390 "이 이미 존재하기 때문에 잘못된"또는 그런 뭔가 말. 720 00:43:14,390 --> 00:43:22,420 그러나이 경우, 난 그냥 중복 무언가를 만들 수 있습니다. 721 00:43:22,420 --> 00:43:26,010 이제 해보자 일부 유효성 검사를 추가합니다. 722 00:43:26,010 --> 00:43:30,400 이 문제는 바로 지금입니다 723 00:43:30,400 --> 00:43:34,220 말 그대로 완전히 빈 포스트를 제출할 수 있습니다. 724 00:43:34,220 --> 00:43:37,500 지금은이 버튼을 클릭 할 수 있고, 거기에 우리가 간다. 725 00:43:37,500 --> 00:43:40,290 당신은 정말 그것을 볼 수 없지만 여기 여분의 줄 726 00:43:40,290 --> 00:43:43,830 말 그대로 새 게시물이 있음을 나타냅니다. 727 00:43:43,830 --> 00:43:46,050 그냥 빈 작가와 빈 몸이, 728 00:43:46,050 --> 00:43:48,630 우리는 사람들이 그 작업을 수행 할 수 싶지 않아요. 729 00:43:48,630 --> 00:43:52,550 검증이 필요한 이유는 바로 여기입니다 730 00:43:52,550 --> 00:43:57,540 >> 내 모델 개체에 갈 수있다, 731 00:43:57,540 --> 00:43:59,530 지금은 지정하는 새로운 기능을 추가 할 수 있습니다 732 00:43:59,530 --> 00:44:02,000 나는이 모델에 추가해야하는 유효성 검사 규칙 733 00:44:02,000 --> 00:44:06,840 이 유효한지 확인하거나 지정할 것을 그것은 유효한 포스트 일을 의미 하는가? 734 00:44:06,840 --> 00:44:10,210 그리고 그것은 단지 유효한 포스트의 말을 할 경우 저자 몸도 735 00:44:10,210 --> 00:44:15,150 빈 아니고, 이것은 당신이 코 하나에 그것을 할 방법입니다. 736 00:44:15,150 --> 00:44:18,750 당신은 "규칙"이라는 새로운 함수를 만들 737 00:44:18,750 --> 00:44:20,210 다음은 기본적으로 연관 배열을 반환 738 00:44:20,210 --> 00:44:24,230 즉,이 개체에 대한 유효성 검사 규칙을 정의합니다. 739 00:44:24,230 --> 00:44:27,530 우리는 배열을 반환하려고하고 우리가 할거야 것은입니다 740 00:44:27,530 --> 00:44:32,820 말을 "저자,"이것은 배열에 간다, 741 00:44:32,820 --> 00:44:37,720 이는라는 또 다른 배열에 간다 "비어 있지." 742 00:44:37,720 --> 00:44:41,480 그리고 내가 말할거야 "몸을." 743 00:44:50,980 --> 00:44:54,120 이를 위해 좋아하고,이 구문 및 구조 744 00:44:54,120 --> 00:44:56,530 조금 복잡하고 조금 복잡한 보일 수 있습니다. 745 00:44:56,530 --> 00:44:59,330 당신이 문서를 읽을 경우, 파악하기 매우 간단합니다 746 00:44:59,330 --> 00:45:02,500 그러나 기본적으로 이것은 당신이 지정 할 필요가있다 747 00:45:02,500 --> 00:45:04,130 일부 유효성 검사 규칙과 다른 규칙이 많이 있습니다 748 00:45:04,130 --> 00:45:06,810 당신이 말하는 규칙을 추가 할 수 있습니다처럼 코 하나는 무료로 당신을 줄 것이다 749 00:45:06,810 --> 00:45:08,410 그것은이 길이 이상이어야합니다. 750 00:45:08,410 --> 00:45:11,800 아마 숫자이어야합니다. 아마 알파 숫자이어야합니다. 751 00:45:11,800 --> 00:45:14,410 아마 등등 등등 대부분에이 길이이어야한다. 752 00:45:14,410 --> 00:45:17,730 코 하나가 당신을 위해 제공하는 다른 많은 규칙이있다 753 00:45:17,730 --> 00:45:19,610 당신은, 문서를보고, 자신의 웹 사이트에 갈 수 있습니다 754 00:45:19,610 --> 00:45:23,150 당신은 당신이 할 수있는 모든 다른 것들을 볼 수 있습니다. 755 00:45:23,150 --> 00:45:25,650 >>하지만 내가해야 할 모든 것입니다, 756 00:45:25,650 --> 00:45:30,490 지금의 일이 무엇인지 살펴 보자 757 00:45:30,490 --> 00:45:34,060 나는 빈 포스트를 제출합니다. 758 00:45:34,060 --> 00:45:36,960 무슨 일이 일어날? 아, 아니, 난 오류가 발생합니다. 759 00:45:36,960 --> 00:45:39,440 나는 유효성 검사 예외를 얻을. 760 00:45:39,440 --> 00:45:41,070 음, 좋아. 761 00:45:41,070 --> 00:45:43,200 내 모델이 무효라고 나에게 말했다, 762 00:45:43,200 --> 00:45:45,780 하지만 예외를 표시하지 않으 763 00:45:45,780 --> 00:45:48,720 내 사용자에게 그들이 바로, 잘못된 무언가를 제출하려고 할 때? 764 00:45:48,720 --> 00:45:51,560 나는 그들에게 친숙한 오류 메시지가 어떤 종류의를 제공 할 765 00:45:51,560 --> 00:45:53,610 뭔가 잘못되면. 766 00:45:53,610 --> 00:46:01,830 우리가하려고하는 것은 우리가가는거야입니다 767 00:46:01,830 --> 00:46:04,490 시도 캐치 루프에서 모든 것을 감싸줍니다. 768 00:46:04,490 --> 00:46:06,750 사실,이 또한 아직 배운하지 않은 무언가 생각 769 00:46:06,750 --> 00:46:10,820 CS50에 있기 때문에 C, 프로그래밍 언어 C, 770 00:46:10,820 --> 00:46:14,000 거의 매일 다른 언어에게 예외를 가지고 있지만하지 않습니다 771 00:46:14,000 --> 00:46:16,700 그래서 정말, 정말 간단하게 예외를이 772 00:46:16,700 --> 00:46:19,430 예외 코드의 조각이 할 수있는 무언가이다 773 00:46:19,430 --> 00:46:21,430 뭔가가 잘못되면, 예외를 발생 774 00:46:21,430 --> 00:46:23,410 최대하지만 어쩌면 다른 코드 조각은 높은 775 00:46:23,410 --> 00:46:25,810 그 예외를 catch하고 그것으로 뭔가를 할 수 있습니다. 776 00:46:25,810 --> 00:46:27,710 >> 예를 들어,이 경우, 777 00:46:27,710 --> 00:46:29,940 모델을 저장하려고 코드의 조각, 778 00:46:29,940 --> 00:46:33,170 "좋아,이 모델이 유효하지 않습니다"는 모델의 유효성을 검사하고 말한다면, 779 00:46:33,170 --> 00:46:36,150 예외를 던지는 것, 이것은에 해당하는 종류입니다 780 00:46:36,150 --> 00:46:39,870 C에서 당신은 -1 또는 그런 식으로 뭔가를 반환 할 수 있습니다. 781 00:46:39,870 --> 00:46:42,320 그리고 나를 위해,이 기능, 내 코드 782 00:46:42,320 --> 00:46:46,310 높은 수준에서, 그 예외를 시도하고 잡을 수 있습니다 783 00:46:46,310 --> 00:46:49,330 기본적으로 "좋아, 난 예외를 잡을 경우, 내가 뭘합니까?"라고 784 00:46:49,330 --> 00:46:51,570 아니면 내가 그 예외를 잡을 최대 누군가가 더 높은 가지 않도록 선택할 수 785 00:46:51,570 --> 00:46:54,400 예외를 catch하거나, 아무도 그것을 잡는다없는 경우, 786 00:46:54,400 --> 00:46:56,820 다음 전체 프로그램은 충돌 말한다 787 00:46:56,820 --> 00:46:59,170 "무슨 문제가, 나는 그것을 처리 할 수​​ 없습니다." 788 00:46:59,170 --> 00:47:04,490 >>하지만 우리가 할 것은, 당신이 try 블록의 코드 조각을 포장하다 789 00:47:04,490 --> 00:47:09,030 다음은 또한, catch 블록이라는 것을 추가 790 00:47:09,030 --> 00:47:17,300 하는 시도가 발생할 수 있습니다 예외를 catch하는 코드의 일종이다. 791 00:47:17,300 --> 00:47:20,430 그래서 나는이 예외를 잡을 경우 792 00:47:20,430 --> 00:47:23,110 또는 무효 예외는 다음 내가 할거야 것은 793 00:47:23,110 --> 00:47:31,210 나는 오류를 설정하는거야 - 그게 내가 그것을 어떻게 생각 - 794 00:47:31,210 --> 00:47:35,370 나는 어떤 객체에 오류를 설정하는거야. 795 00:47:35,370 --> 00:47:40,920 는이 예외를 안타 그리고 내가 할거야 것은, 796 00:47:40,920 --> 00:47:43,090 이 리디렉션하지 않는 경우는, 리디렉션하는 것, 그리고 것 797 00:47:43,090 --> 00:47:46,160 그것은 경우 블로그에서 나오는 것 798 00:47:46,160 --> 00:47:49,920 그리고 내가하고 싶은하고자하는,이 블로그 / 새로운 기록했다. 799 00:47:49,920 --> 00:47:53,190 오류가 발생하면, 그때의 모습으로 되돌아 가고 싶어 800 00:47:53,190 --> 00:47:55,100 그 오류를 표시합니다. 801 00:47:55,100 --> 00:48:00,780 지금 내가 원하는 내가 그 오류를 전달하고 싶다 802 00:48:00,780 --> 00:48:07,010 볼 수 있습니다. 803 00:48:07,010 --> 00:48:10,360 좋아, 내가 여기 전망이 생각 804 00:48:10,360 --> 00:48:14,660 기본적으로 나는 그들이 존재하는 경우 그 오류를 표시합니다. 805 00:48:14,660 --> 00:48:19,740 나는 그의 HTML을 작성하기 전에, 나는 정말 빨리 갈거야 806 00:48:19,740 --> 00:48:21,720 이 오류의 구조 변수 외모가 좋아하는 무엇을 보여, 807 00:48:21,720 --> 00:48:23,080 이것은 일반적으로 좋은 방법입니다. 808 00:48:23,080 --> 00:48:25,070 많은 시간 당신은 다시 몇 가지 방법에서 뭔가를 얻을 수 809 00:48:25,070 --> 00:48:27,250 웹 프레임 워크의 일부 기능, 810 00:48:27,250 --> 00:48:29,410 당신은, 변수가 어떻게 생겼는지 몰라 811 00:48:29,410 --> 00:48:31,210 그래서 당신은 그것을 작동하는 방법을 모르겠어요. 812 00:48:31,210 --> 00:48:37,790 나는 기본적으로 그것을 밖으로 인쇄하는 인쇄 R 방법을 사용하도록하겠습니다. 813 00:48:37,790 --> 00:48:41,100 당신이 볼 수있는 >>, 그것은, 그것은 연관 배열 알려줍니다 814 00:48:41,100 --> 00:48:44,880 당신은이 문자열로 키, 저자, 포인트가 815 00:48:44,880 --> 00:48:47,050 저자는 비어 있어야하고, 다른 키, 몸, 안 816 00:48:47,050 --> 00:48:49,680 다른 문자열, 몸에 점은 비워 둘 수 없습니다. 817 00:48:49,680 --> 00:48:52,130 쿨, 좋아, 같이 해요. 818 00:48:52,130 --> 00:48:56,230 그런 다음 배열을 반복하고 모든 단일 메시지를 인쇄 할 수 있습니다. 819 00:48:56,230 --> 00:49:02,150 그것은 메시지의 무리와 함께 연관 배열처럼 기본적이다. 820 00:49:02,150 --> 00:49:13,500 내가 할거야 것은 "만약 오류"입니다 821 00:49:13,500 --> 00:49:17,140 나는 순서가없는 목록을 만들거야, 822 00:49:17,140 --> 00:49:20,860 나는 모든 오류를 반복하는거야. 823 00:49:33,730 --> 00:49:38,710 그리고 이것은, 지금은, 다시 제출하려고하는거야 824 00:49:38,710 --> 00:49:41,200 그리고 이제 우리가 무엇을 얻을 보자. 825 00:49:41,200 --> 00:49:45,370 이제 우리는 오류이 좋은 목록을 얻을, 826 00:49:45,370 --> 00:49:48,630 그리고, 이것은 여전히​​ 매우 추한 있습니다 만, 이것은 분명 좋은보고 포맷 할 수 있습니다 827 00:49:48,630 --> 00:49:51,620 그러나 기본 개념은 단지 몇 줄의 코드에 828 00:49:51,620 --> 00:49:53,720 우리는 우리의 모델의 유효성을 검증 할 수 있었다, 829 00:49:53,720 --> 00:49:56,510 특정 필드가 비어 없다는 사실을 확인, 830 00:49:56,510 --> 00:49:59,740 뭔가 잘못되었을 경우, 다음 오류 메시지가 어떤 종류의 반환 831 00:49:59,740 --> 00:50:01,760 그런 다음 사용자에게 다시 제공 할 수 있습니다. 832 00:50:01,760 --> 00:50:03,910 또한 유효성 검사를 사용자 정의 할 수 있습니다 833 00:50:03,910 --> 00:50:07,590 실제로 오류 메시지가있을 수있다 그래서 834 00:50:07,590 --> 00:50:09,620 즉, 응용 프로그램 또는 그런 일에 더 유용하게 이용 될 수 있습니다. 835 00:50:09,620 --> 00:50:14,600 모두는 일반적으로 사용자 정의 할 수 있습니다. 836 00:50:14,600 --> 00:50:17,150 >> 불행하게도, 우리는 시간이 없어 837 00:50:17,150 --> 00:50:20,040 그래서 나는 여기에 라이브 코딩 세션을 차단해야 할거야. 838 00:50:20,040 --> 00:50:22,980 내가 당신을 위해 입증 할 다른 기능의 무리가 있습니다 839 00:50:22,980 --> 00:50:25,650 이 예에서. 840 00:50:25,650 --> 00:50:27,620 예를 들어, 귀하의 사이트에 템플릿을 추가 할 수 있습니다, 841 00:50:27,620 --> 00:50:31,110 그래서 아마 적용 할 HTML 코드의 일종이있다 842 00:50:31,110 --> 00:50:35,190 귀하의 사이트에있는 모든 단일 페이지, 대신 붙여 넣기의 843 00:50:35,190 --> 00:50:40,630 모든 단일 뷰 파일에서 당신은 분명히 나쁜 관행 될 것이라고,이 844 00:50:40,630 --> 00:50:43,020 당신은 기본적으로 이러한 템플릿을 정의 할 수 있습니다, 845 00:50:43,020 --> 00:50:46,660 다음 컨트롤러에 "좋아, 난이 템플릿을 사용하고 있습니다."라고 846 00:50:46,660 --> 00:50:50,130 "내 모든 뷰는이 템플릿을 사용합니다." 847 00:50:50,130 --> 00:50:52,470 그리고 나뿐만 아니라 당신에게 입증 할 마지막 일 848 00:50:52,470 --> 00:50:57,800 우리는 크로스 사이트 스크립팅입니다 시간이 없어 849 00:50:57,800 --> 00:51:01,430 기본적으로 난 너희들은 아마 CS50에서 볼 수 있다고 생각 - 850 00:51:01,430 --> 00:51:03,770 데이비드 마란 아마 당신은 일반적으로 주입 할 수있는 방법에 대해 이야기 생각 851 00:51:03,770 --> 00:51:08,040 에 자바 스크립트 코드는 - 당신이에 대해 얘기? 852 00:51:08,040 --> 00:51:10,220 어쩌면? 아마? 853 00:51:10,220 --> 00:51:12,670 >> 그러나 많은 시간 당신은 악의적 인 자바 스크립트 코드를 삽입 할 수 있습니다 854 00:51:12,670 --> 00:51:15,630 누군가의 데이터베이스에, 그리고 제대로 그 탈출하지 않는 경우, 855 00:51:15,630 --> 00:51:18,280 그 후에는 다시 사용자에게 데이터를 제시 할 때, 856 00:51:18,280 --> 00:51:21,310 다음 오류가 발생하는하지 않는 임의의 자바 스크립트 코드의 일종을 실행할 수 있습니다, 857 00:51:21,310 --> 00:51:23,050 그리고 당신이 코 하나 내에서 그렇게 할 것입니다 방법을 보여주기 위해 가고 있었다. 858 00:51:23,050 --> 00:51:25,380 사실은 정말, 정말 간단합니다. 859 00:51:25,380 --> 00:51:31,920 말 그대로 이초에 지금 그것을 할 수 있습니다. 860 00:51:31,920 --> 00:51:34,560 당신이 할 수있는 일은 기본적으로이 일을 포장한다 861 00:51:34,560 --> 00:51:46,920 이 일에 HTML 엔티티를했다. 862 00:51:46,920 --> 00:51:51,180 그리고 자동으로 적절하게 모든 문자를 이스케이프합니다 863 00:51:51,180 --> 00:51:54,730 당신은이 문제를 얻을하지 않습니다 있는지 확인하십시오. 864 00:51:54,730 --> 00:51:57,220 [학생] 당신은 잘못 첫 번째 테스트를 철자. 865 00:51:57,220 --> 00:52:01,030 [브랜든 리우] 죄송합니다, 오. 866 00:52:01,030 --> 00:52:06,420 >> 좋아, 내가 오늘 당신과 함께 공유했다 전부입니다. 867 00:52:06,420 --> 00:52:09,930 이 슬라이드를 게시하려고하지만, 이들은 일반적으로 868 00:52:09,930 --> 00:52:13,900 유일한 자원은 정말 코 하나를 시작해야한다. 869 00:52:13,900 --> 00:52:16,770 당신은 웹 사이트로 이동할 수 있습니다. 그들은 사용자 가이드를 가지고 있고, 그들은 또한 API 탐색기가 있습니다. 870 00:52:16,770 --> 00:52:20,630 우리는 그들이 당신을 위해 가지고있는 모든 다른 기능과 도우미 기능을 탐색 할 수 있습니다. 871 00:52:20,630 --> 00:52:22,070 그들은 일반적으로 웹 사이트에 대한 충분한 정보를 가지고 872 00:52:22,070 --> 00:52:25,310 당신은 시작하고 코 하나와 함께 성장 사용할 수있다. 873 00:52:25,310 --> 00:52:30,840 많은 튜토리얼은 외부, 코 하나, 나는 생각이 없습니다 874 00:52:30,840 --> 00:52:33,880 그들이 여기에 웹 사이트에있다, 그래서하면이는 아마 당신의 최선의 방법이다. 875 00:52:33,880 --> 00:52:35,600 하지만 당신은 웹 프레임 워크로 이동하려면 876 00:52:35,600 --> 00:52:37,120 당신은 새로운 언어를 데리러 싶지 않아, 877 00:52:37,120 --> 00:52:39,780 당신은 상대적으로 가볍고 쉬운 학습 곡선을 가지고 뭔가를 할 878 00:52:39,780 --> 00:52:41,570 확실히 코 하나를 제안했다. 879 00:52:41,570 --> 00:52:44,040 그건 아마위한 최선의 제안입니다. 880 00:52:44,040 --> 00:52:46,830 우리는 루비 온 레일즈를 사용한다면 재미있는 것은, 그러나,이다, 881 00:52:46,830 --> 00:52:48,550 우리는 우리가 무슨 짓을 복제 한 수 882 00:52:48,550 --> 00:52:51,430 아마 3 분 미만에 더 많은입니다. 883 00:52:51,430 --> 00:52:54,710 농담은,하지만 루비 온 레일즈를 배우는 것은 훨씬 더 긴지지 않습니다 884 00:52:54,710 --> 00:52:56,780 그것은 코 하나를 배울 걸릴 것보다. 885 00:52:56,780 --> 00:52:58,840 그것은 당신이 배우를 선택하려는 작업에 기본적으로 당신의 선택 886 00:52:58,840 --> 00:53:01,260 하지만 당신이 신속하게 실행하는 데하려는 경우, 887 00:53:01,260 --> 00:53:03,870 코 하나는 확실히 아주 좋은 선택입니다. 888 00:53:03,870 --> 00:53:06,730 >> 우리는 결국 모든 마지막 질문하기 전에? 예. 889 00:53:06,730 --> 00:53:08,020 [학생] 우리는 어떻게하는 것이 통합 것 890 00:53:08,020 --> 00:53:13,120 당신이 지시했을 때 사용했던 같은 CSS 프레임 워크? 891 00:53:13,120 --> 00:53:16,700 문제는 우리가 어떻게 CSS 프레임 워크를 통합하는 것입니까? 892 00:53:16,700 --> 00:53:18,740 우리가 아마 할 것입니다 우리가 아마 포함 할 것입니다 893 00:53:18,740 --> 00:53:21,090 우리는 우리의 CSS 파일을 덤프 할 새 폴더, 894 00:53:21,090 --> 00:53:23,010 그리고, 우리는 또한 새로운 템플릿을 추가 할 것입니다. 895 00:53:23,010 --> 00:53:26,090 템플릿에서 우리는 그 CSS 파일을 포함 할 것 896 00:53:26,090 --> 00:53:28,410 그들은 모든 단일 페이지에 참조 된 것을 확인하고, 897 00:53:28,410 --> 00:53:32,220 다음은 실제로 HTML을 작성하는 경우, 898 00:53:32,220 --> 00:53:34,010 당신은 적절한 클래스와 이것 저것을 추가, 899 00:53:34,010 --> 00:53:36,100 예를 들어, 폼 같은 것을 사용하는 900 00:53:36,100 --> 00:53:40,710 도우미 기능, 당신은 나중에 더 많은 매개 변수를 추가 할 수 있습니다 901 00:53:40,710 --> 00:53:42,830 당신은 여러 가지에 첨부 할 원하는 클래스 지정 902 00:53:42,830 --> 00:53:47,820 그래서 그들은 제대로 스타일을 할 수 있고, 그것은 당신이 이동하는 방법을 기본적으로합니다. 903 00:53:47,820 --> 00:53:50,100 >> 다른 질문? 904 00:53:50,100 --> 00:53:52,090 신난다. 905 00:53:52,090 --> 00:53:58,540 시간 내 주셔서 감사합니다,와 주셔서 감사합니다. 906 00:53:58,540 --> 00:54:05,170 나는 매우 다른 추가하지 않을했다 907 00:54:05,170 --> 00:54:08,560 하지만 1 정말 빠른 것은 우리가 링크가없는 것입니다 908 00:54:08,560 --> 00:54:12,590 양식. 909 00:54:12,590 --> 00:54:14,310 정말 바보. 910 00:54:14,310 --> 00:54:20,110 의은을 추가하자 - 실제로보기, 블로그, 인덱스, 911 00:54:20,110 --> 00:54:23,890 새 페이지로가는 링크를 추가 정말 빨리하자, 912 00:54:23,890 --> 00:54:26,770 우리는 새로운 포스트를 삽입 할 수있는 페이지. 913 00:54:26,770 --> 00:54:29,950 우리는이 작업을 수행하는 것입니다. 914 00:54:29,950 --> 00:54:34,020 어떤 좋은 것은 HTML 도우미 기능이 전체 그룹이있다 915 00:54:34,020 --> 00:54:37,090 당신을위한 다른 일을 할, 그래서 당신은 이미 실체를보고하는 916 00:54:37,090 --> 00:54:41,980 "앵커"여기에 작동하지만, 그들은 또한라는 기능이 917 00:54:41,980 --> 00:54:45,400 당신은 블로그 / 새로운 입력 할 수있는 918 00:54:45,400 --> 00:54:49,550 와 "포스트는 새 블로그."라고 919 00:54:49,550 --> 00:54:51,850 그리고 그것은 당신을 위해 해당 링크를 만드는 것입니다 920 00:54:51,850 --> 00:54:54,120 그리고,이 할 정말 사소한 것,하지만이 좋은 921 00:54:54,120 --> 00:54:58,720 당신은 1 개의 도메인에서 다른 웹 사이트를 이동하는 것을 가정하기 때문이다. 922 00:54:58,720 --> 00:55:01,390 그리고 당신은 URL을 직접 썼다면, 923 00:55:01,390 --> 00:55:04,350 당신은 모든 URL을 변경해야합니다. 924 00:55:04,350 --> 00:55:06,850 아니면 다른 하위 폴더에 하위 폴더 1에서 움직였다. 925 00:55:06,850 --> 00:55:08,790 당신은 모든 해당 URL을 직접 변경해야 할 것입니다 926 00:55:08,790 --> 00:55:12,180 그리고 그 재미 없다. 927 00:55:12,180 --> 00:55:14,510 당신은 바로 여기에이 앵커를 사용할 수 있습니다 928 00:55:14,510 --> 00:55:18,950 당신은 도메인 또는 하위 폴더 접두사를 변경할 수 있습니다 929 00:55:18,950 --> 00:55:20,640 일단 구성 파일 930 00:55:20,640 --> 00:55:22,980 그리고, 그때는 그 사방에 적용되며, 이는 다시이며 931 00:55:22,980 --> 00:55:26,930 의 좋은 예는 코드를 건조, 자신을 반복하지 않는다. 932 00:55:26,930 --> 00:55:30,370 당신이 자신을 반복하는 곳, 시도 및 구성 파일의 어떤 종류에서 추출 933 00:55:30,370 --> 00:55:34,160 또는 다른 기능을하고 당신을 위해 그것을 처리했다. 934 00:55:34,160 --> 00:55:42,930 >> 그리고 난 당신을 보여주고 싶었다 매우 마지막 일이었다 935 00:55:42,930 --> 00:55:50,250 우리는이 게시물에 돌아와서, 나는 정말 긴 에세이를 구성했다 가정, 936 00:55:50,250 --> 00:55:52,670 하지만 난 내 저자를 포함하는 것을 잊었다. 937 00:55:52,670 --> 00:55:55,210 지금은 "포스트를 제출"을 클릭하면 938 00:55:55,210 --> 00:55:57,270 난 그냥 모든 것을 잃었다. 939 00:55:57,270 --> 00:56:00,000 안돼! 정말 슬픈 일. 940 00:56:00,000 --> 00:56:03,870 그렇다면 당신은 그 처리합니까? 941 00:56:03,870 --> 00:56:06,070 이것은 우리가하는 일입니다. 942 00:56:06,070 --> 00:56:09,340 우리가 할 일은 이러한 입력 텍스트 영역 기능을 여기에, 943 00:56:09,340 --> 00:56:12,700 우리는 두 번째 매개 변수가 두 번째 매개 변수의 다음 값을 포함하는 경우 944 00:56:12,700 --> 00:56:16,620 필드가 처음으로 채울 수 무슨 일이 될 것입니다. 945 00:56:16,620 --> 00:56:23,570 우리가 할 수있는 것은 우리의 블로그 컨트롤러에, 946 00:56:23,570 --> 00:56:25,360 우리는 또 다른 변수를 바인딩 할 수 있습니다. 947 00:56:25,360 --> 00:56:27,050 어쩌면 그것은 "가치"를 호출합니다. 948 00:56:27,050 --> 00:56:30,620 그리고 말 그대로 포스트 배열을 전달합니다. 949 00:56:30,620 --> 00:56:32,620 즉, 검증이 실패하면 것을 의미한다 950 00:56:32,620 --> 00:56:36,570 나에게 나는 마지막 요청에서 제출 한 포스트 배열을 전달, 951 00:56:36,570 --> 00:56:38,420 그 방법은 내 마지막 제출의 값을 사용할 수 있습니다 952 00:56:38,420 --> 00:56:44,540 필드를 다시 채워야합니다. 953 00:56:44,540 --> 00:56:49,600 지금은 값의 저자과 같은 작업을 수행 할 수 있습니다 954 00:56:49,600 --> 00:56:55,180 내가 어떤 임의의 물건을 할 경우 지금 몸, 그 방법을 값 955 00:56:55,180 --> 00:57:01,490 후가 유지 ", 우편 제출"을 클릭합니다. 956 00:57:01,490 --> 00:57:03,830 그러나 우리는 또 다른 문제로 실행하는 것입니다. 957 00:57:03,830 --> 00:57:07,670 나는 페이지에 처음으로 갈 경우 즉, 작동하지만, 958 00:57:07,670 --> 00:57:09,720 그것은 충돌 것, 그리고 그건 난생 처음보기 때문에 959 00:57:09,720 --> 00:57:13,730 우리는 페이지로 이동,이 게시물 변수는 아직 정의되지 않았습니다. 960 00:57:13,730 --> 00:57:18,170 널 (null)입니다. 그것은 존재하지 않습니다. 961 00:57:18,170 --> 00:57:21,630 이 키가 존재하는 경우 >> 그리고 우리가 말하고 싶은 것은,이다 962 00:57:21,630 --> 00:57:27,750 다음이 배열의 값을 반환 963 00:57:27,750 --> 00:57:30,450 키가 존재하지 않으면, 그때 빈 문자열을 반환. 964 00:57:30,450 --> 00:57:32,150 즉, 우리가 여기에 원하는 기능입니다. 965 00:57:32,150 --> 00:57:34,690 우리는 키가 배열에 액세스하기 전에 있는지 확인하려면, 966 00:57:34,690 --> 00:57:36,580 다행히만큼, 967 00:57:36,580 --> 00:57:38,570 코 하나는 우리에게 그것을위한 도우미 기능을 제공합니다. 968 00:57:38,570 --> 00:57:41,040 그들은 기능이 모든 제품군이 969 00:57:41,040 --> 00:57:43,660 이름 ARR에서, 짧은 배열, 970 00:57:43,660 --> 00:57:45,800 그들은 "GET"라고 한 기능을 가지고 있습니다 971 00:57:45,800 --> 00:57:48,690 당신은 배열에 통과 할 수있다, 972 00:57:48,690 --> 00:57:50,740 당신은 키의 이름으로 전달할 수 있습니다. 973 00:57:50,740 --> 00:57:54,330 그런 다음 기본적으로 무엇을 할 것인가하는 것은 해당 키를 얻기 위해 노력할 것입니다, 974 00:57:54,330 --> 00:57:56,470 하지만 키 배열에 없으면 975 00:57:56,470 --> 00:58:00,900 , 저는 믿습니다, 그것은 빈 반환하거나, 우리는 또한 기본값을 지정할 수 있습니다 976 00:58:00,900 --> 00:58:03,500 어떤 좋은 것입니다. 977 00:58:09,740 --> 00:58:13,150 이제 우리는 다시 같은 일을 할 경우, 978 00:58:13,150 --> 00:58:15,970 당신은, 그 주위에 처음 작동 현재 참조 979 00:58:15,970 --> 00:58:18,080 다시, 우리는 어떤 임의의 물건에 입력하면 980 00:58:18,080 --> 00:58:23,210 후가 유지 시도하고 제출합니다. 981 00:58:23,210 --> 00:58:31,640 >> 그리고 나는 방법도 정말 빨리 템플릿을 추가하는 방법을 보여줄 수있는 것 같아요. 982 00:58:31,640 --> 00:58:36,140 우리가 먼저 할 수있는 무엇인가 우리는 "template.php"라는 새보기를 추가 할 수 있습니다 983 00:58:36,140 --> 00:58:38,890 뷰 폴더 내에서, 984 00:58:38,890 --> 00:58:44,730 그리고 내가 할거야하는 것은 "내용"나는라고 뭔가를 인쇄 할거야입니다 985 00:58:44,730 --> 00:58:49,130 나의 주된 내용이 될 것이다. 986 00:58:49,130 --> 00:58:51,380 그리고 어쩌면 맨 아래에 나는, 말, 추가거야 987 00:58:51,380 --> 00:58:53,340 저작권. 988 00:58:53,340 --> 00:58:56,150 [들리지 학생 질문] 989 00:58:56,150 --> 00:58:58,050 [브랜든 리우] 어쩌면 이것은 내가 사용하고 싶은 초 기본 템플릿입니다. 990 00:58:58,050 --> 00:59:02,840 나는 모든 단일 페이지 내 저작권이있는 폴더를 갖고 싶어, 991 00:59:02,840 --> 00:59:05,560 지금은 내 컨트롤러 내에서 할거야 992 00:59:05,560 --> 00:59:07,740 대신 말의 지금, "컨트롤러는 확장" 993 00:59:07,740 --> 00:59:11,870 나는 "Controller_Template를 확장"라고 말할거야 994 00:59:11,870 --> 00:59:15,890 대신 말의 지금, "응답 본문이보기와 같다" 995 00:59:15,890 --> 00:59:24,110 내가 말할거야 "이 템플릿의 내용은 -" 996 00:59:24,110 --> 00:59:27,690 내가 생각 - 나는 등호를 배치해야합니까? 997 00:59:27,690 --> 00:59:32,710 잊지. 그래, 나도 그렇게 생각. 998 00:59:32,710 --> 00:59:37,710 지금은 내용 변수보기를 동일하게한다는 설정. 999 00:59:37,710 --> 00:59:40,960 나는 여기에 동일한 작업을 수행 할 수 있습니다. 1000 00:59:49,620 --> 00:59:57,170 내가 새로 고치면 그리고 지금, 당신은이 저작권을가 추가됩니다 지금 볼 수 있습니다 1001 00:59:57,170 --> 01:00:00,350 그냥 어떤 임의의 게시물을 확인, 1002 01:00:00,350 --> 01:00:06,760 다음, 다시, 당신은 저작권 페이지의 맨 아래에있는 것을 볼 수 있습니다. 1003 01:00:06,760 --> 01:00:10,730 >> 좋아요. 그게 내가 너희들을 보여주고 싶었다 전부입니다. 1004 01:00:10,730 --> 01:00:14,970 [박수] 1005 01:00:14,970 --> 01:00:18,950 질문? 1006 01:00:18,950 --> 01:00:21,000 [CS50.TV]