GABRIEL GUIMARAES :이 CS50입니다. 놀라운 웹 애플리케이션에 오신 것을 환영합니다 루비 온 레일스 (Ruby on Rails)와 함께. 그래서 누군가를 위해 누구는 웹에 관심 개발 및 제작 웹 사이트, 웹 응용 프로그램, 루비 온 레일스 (Ruby on Rails)이 있습니다 놀라운 도구가 트위터, GitHub의, 그루 폰, 정말 좋은 모든 종류의, 큰 웹 응용 프로그램에서 사용하는 지난 몇 년. 그리고 정말, 정말 멋진 기능, 멋진 도구, 그것은 새로운 때문이다. 그래서 새로운 강력한 모두 가지고 기술 하나에 통합 당신이 처리하는 데 도움이 프레임 워크 놀라운 사물의 모든 종류. 하지만 프레임 워크는 무엇인가? 따라서 프레임 워크는 기본적으로 생성 일 - 당신이 웹 사이트를 시작할 때, 경우에 당신은 시작 처음부터, 같은 당신이 열 이 gedit에서, 당신은 모든 코드를 할 당신의 당신의 HTML, 코드의 모든 PHP, 당신의 CSS의 모든, 모든 처음부터 - 그건 그냥 일이 많이있을 것입니다. 그리고 프레임 워크는 말 그대로 당신에게 제공 웹 사이트의 절반은 이미 완료. 그래서 당신은 반 웹 사이트로 시작 그것은 당신을 위해 거기에 모든 것을 갖추고 있습니다. 데이터베이스 연결을 표시하고, 모든 당신이 걱정해야 할 일의 종류 처음부터 그 일을하는 경우에 대해, 당신은 그에 대해 걱정할 필요가 없습니다 낮은 수준의 세부 사항. 하지만 오늘 우리는 하나를 내보낼거야 웹 사이트가의 신입생 2017 클래스는 아마 잘 알고 있습니다. 따라서이 웹 사이트는 웹 사이트입니다 I 여름에 우리의 클래스했다. 그것은의 학생들이 웹 사이트했다 2017 클래스는 로그인 할 수 서로 상호 작용합니다. 그리고 다음이지도입니다 - 사람들이 모두. 그리고 우리는 노래 게임에게 책 게임을했다 우리는 사람들의 노래를보고 위치 사람들의 책. 그들이 읽고 싶은 무엇, 무엇을 그들은 듣고 싶어요. 그리고 그것의 가장 흥미로운 부분은 그것은 말 그대로 나에게 세 시간 걸린 그것 모두를 코딩. 때문에 나는 모든 것을해야 할 일을했을 경우 의 gedit를 개방 상처, 그것은 아마 촬영 한 것 저 20, 30 시간이다. 그러나 루비 온 레일즈, 때문에 모든 것이 이미 나를 위해 설립되었다, 그것은 단지, 나에게 서너 시간이 걸렸다 또는 그런 일. 그래서 루비 온 레일스 (Ruby on Rails)는 무엇인가. 루비 레일에, 다시 같은 우리 이미 말했다 프레임 워크입니다. 이 프레임 워크의 사진입니다. 그래서 당신은 구축을 시작하는거야 집, 당신은 이미 절반이 집이 다. 즉, 프레임 워크입니다. 그리고 루비 온 레일스 (Ruby on Rails)는 정확히 같은. 그리고 당신은 당신이 시작이라고 생각한다 웹 사이트, 당신은 당신의 웹을 시작 응용 프로그램, 우리는 이미 그것의 절반이 다. 그러나 우선, 루비는 무엇인가? 루비 온 레일스 (Ruby on Rails)는 모델 뷰를 사용하여 패러다임 컨트롤러, 어떤 정말 재미있다 - 요즘 모든 응용 프로그램 그런 식으로 뭔가를 사용합니다. 에 물건을 분리하는이 아이디어 세 부분, 모델, 뷰, 그리고 컨트롤러. 우리는 조금 이야기 할 것입니다 나중에 대한 자세한. 첫째, 루비는 무엇인가? 그래서이 루비입니다. 그리고 이것은의 상징이다 루비라는 언어. 루비는 해석 약간 새로운 중 하나입니다 언어, 그래서 스크립트. 그것은 컴파일되지있어 언어의 C.처럼 그것은 실행에 컴파일 된 것. 그래서 그 좋은 때문에, 그냥 PHP와 같은, 예를 들어도 해석된다 컴파일되지 않습니다. 포터블 때문 좋다. 그래서 당신은 단지에서 코드를 통과 다른 하나의 시스템. 리눅스 머신에서 윈도우에 Mac 또는 애플 컴퓨터, 또는에 기계, 그런 식으로. 그리고 당신에 대해 걱정할 필요가 없습니다 특정의 각각에 관한 상세 운영 체제. 이 곳에서 작업 할 것입니다. 그리고 루비는 언어입니다 - 너희들은 아마 기억. 사람들은 구현 해시 함수를 사용 해시 테이블의 C에 지난 주와 모든 종류의 있었다 분할 고장. 그러면 모든 일이 있는지 여부에 대한 걱정 해당 문자열 내가 거기 문자열 I 여기에, 실제로 소문자 또는 하였다 대문자, 또는 우려의 이러한 종류의 낮은 수준의 세부 사항. 그럼 루비에, 당신이 원하는 경우에 구현하는 해시 테이블이 정확히 어떻게입니다 해시 테이블을 만들 수 있습니다. 당신이 말하는, 그 이름 사전의 내 변수 = "Hash.new". 그리고 사전 [ "foo에"], 때 난 내 해시 테이블에 foo에 추가, 난 그냥 foo는이 말. 그리고 내가 원하는 경우 확인하는 경우 foo는이 있었다, 난 그냥 말한다면 사전 [ "foo에"] == true를 반환 사실. 우와, 그것은 당신의 해시 테이블입니다. 즉, 구현의 루비 해시 테이블의. 그래서 모든 사람은 그들이 가질 수 좋겠다고 최근에 루비 같은 것을 사용 주 PSET, 오른쪽? 우리는 할 수있는 모든 종류의 이유가 루비 같은 언어를 사용합니다. 루비 보석이 있습니다. 보석은 종류에 대한 이름입니다 루비 라이브러리. 흥미로운 기능의 그래서 모든 종류의 당신이 가질 수있는, 예를 들어, I 내 응용 프로그램을 통합 할. 즉, 하버드 2017 응용 프로그램 페이스 북에 통합되었습니다. 그래서 당신은을 통해 로그인 할 수 페이스 북, 애플 리케이션에. 당신이 그렇게 할거야 그렇다면, 당신은하지 않습니다 일부 전송에 대해 걱정할 필요가 HTTP의 페이스 북에 요청하고 대기 응답 및보기 강제력 응답, 어쩌구 저쩌구. 당신은 보석을 다운로드하는 당신을 위해 모든 것을 않습니다. 그리고 당신은 할 필요가 없습니다 이 모든 걱정. 도움 그리고 많은 온라인, 물론. 많은, 많은, 많은 웹 사이트가있다 그 모두와 당신을 도움이 될 수 있습니다 루비와 레일스와. 그리고 코드에 재미를 많이 있습니다. 당신은 걱정 중지 할 수 있습니다 정확히 때문에 그 때문에 재미없는 문제에 대한. 좋아하는 경우에 무언가가 소문자 또는 위의 경우, 다음 이유입니다 당신에게 세그먼트 오류를​​ 제공하고, 당신이 정말로 매우에 뛰어들 수 있습니다 흥미로운 것들. 정말 멋진 문제에 다이빙. 그래서 루비는 단지 의미에서 C로 같습니다. 그래서는 않을거야 실제로 점프의 큰. 그래서 루비에서 우리의 인쇄 응용 프로그램의, 둔다. 난 당신이 너무 인쇄를 사용할 수있을거야 하지만 풋 사람들이 사용하는 것입니다. 그래서 그냥 "안녕하세요"를 넣습니다. 당신은 할 수, 또는 당신이 가지고 수 없습니다 둘러싸는 괄호 거기에 "Hello World". 당신은 여부를 선택할 수 있습니다 또는 그것을 사용하지. 그리고 X = "1". While 루프는 꽤 보인다 거의 같은. 그냥 적은 구문을 가지고 있습니다. 그것은 종류의 청소기 조금 있습니다. 그리고 만약 X> 25 박았 "큰!" 및 다른 "작은 ..."를 넣습니다. 그리고 그런 의미에서 C의 일종이다. 당신이 보는 경우에, 당신이 할 수 있도록 방법은 아마 이해 일어나고있는 모든 것을. 하지만 더 강력합니다. 더 강력한 그 이상 때​​문에, 그것은 사물은하지 않습니다 수 있습니다 - hackage 약간의 일종. C에서 당신은에서 할 수 없습니다 하나의 라인으로한다. 예를 들어, "나는 # {X}입니다"넣습니다. 값을 넣어 본은 구문입니다 여기서 X 및 인쇄되지 않습니다 문자 X. C에서 당신은 %의 개발을 할 수 있고, 그 후 변수 x를 넣어 여기에 쉼표, 또는 그런 일. 그리고 루비에 속기가있다 단지 그 일을하십시오. 그리고 당신이 할 수있는 경우에 X> 3, 이것을두고, 그래서 둘 모두 한 줄에있는 경우. 그리고 목록. C의 목록, 배열처럼, 당신은에있다 배열이 얼마나 큰 추적 또는 보관 그렇지 않으면 당신은 분할을 얻을 결함. 어레이는 하나의 유형이다. 그래서 어느 충전의 배열의 또는 정수의 배열. 이 경우는, 여기에 목록을 작성 그 첫 번째가 배열의 요소는, 존 문자열이며, 네, 두 - 사람들은 정수입니다. 그리고 난 그냥 목록에 추가 좌 각 브라켓, 왼쪽 각 부류, 세. 그건 그냥 추가 의미 내 목록에 뭔가. 그래서 좀 더 재미 있기 때문에의 당신이로 사용하려는 경우 정수의 단순한 목록 당신은 완전히 수 있습니다. 즉, 완전히 괜찮아요. 그냥 정수를 넣어. 하지만 당신은 뭔가를하고 싶었다면 더 강력한, 즉이 다른 가지, 즉이 - 나도 몰라, 목록에있는 모든 종류의 거기에, 또는 그 이상의 다른 개체 흥미로운, 당신은 완전히 그 작업을 수행 할 수 있습니다. 그것은 완전히 괜찮아. 그리고 당신은을 반복하려면 목록, 당​​신은 사용할 수 접근의 더 많은 C-틱 종류. 즉, 루프, 당신은 시작합니다 변수, I = "1", 또는 I = "0". 그리고 당신은, 이동 및 반복 그리고 모든 요소를​​ 얻는다. 그러나 당신은 또한이 사용할 수 더 루비와 같은 접근 방식. 그건 그냥 list.each 같아요. 그건 그냥 나를 돌려 말하는 것 목록의 모든 요소. 그리고 각 요소와 함께 할, ELEM를 호출합니다. 그래서이 난 것을 그냥 이름입니다 각 요소에 제공. 그리고 지금이 모든 반복하는 것입니다 요소 및 ELEM, 그것은거야 우리는 접근 방법이 될 수 있습니다 그 하나의 요소입니다. 그래서 당신은 완전히에 충실 할 수 C 방식, 그러나 이것은 너무 작동합니다. 그리고 OK, 정확히 같은 것입니다. 그리고 그 이외의, 정말입니다, 루비와 HTML을 통합 할 정말 쉽습니다 너희들은 관심이 있기 때문에 웹 응용 프로그램에서. HTML은 확실히 뭔가있다 당신을 많이 사용하는 것입니다. 그리고 여기에 루비를 넣어하려는 경우 HTML에서, 단지 <% 여기에서 시작합니다. 즉, 여기에 루비는 시작을 의미합니다. 그리고 %>, 종류 등 그런 의미에서 PHP. 여기에 루비는 당신이 할 수있는 한 후 종료하고 그냥 여기에 경우를 넣어. 그리고 나는 약간의 변수가 user.logged_in. 루비에, 우리는 일반적으로 하나, 그 추가 심문 마크 또는 느낌표 마크, 은행 문자처럼, 단지 종류의에 우리의 기능을 구분합니다. 하지만 당신은 그냥 넣어 자신의 이익을 위해. 그것은 변화 게 아니에요 기능에서 아무것도. 그래서 그냥이는 것을 생각 나게합니다 기능 - 루비의 기능, 오히려 C보다, 이미 말했듯이, 그들은 괄호가 필요하지 않습니다. 그래서 그 일에 기록, 그건 함수는 그 방법이다. 하지만 당신은 명시 적으로 할 필요가 없습니다 거기에 괄호를 넣어. 사용자가 로그인 한 경우 그래서 그냥 물어 사용자의가 로그인 한 경우, 현재 HTML이 다시 시작됩니다. 그래서 오신 것을 환영합니다, 여기에 나는 user.name를 인쇄 할 수 있습니다. 그리고 바로 그거야. 그래서 방법을 꽤 똑바로 앞으로의 당신은 당신의 HTML과 루비를 통합 할 수 있습니다. 내가 말했듯이 자원은있다 루비에 대한 자원의 모든 종류. 너희들은 모두 이후에이를 조회 할 수 있습니다 때문에 비디오 및 양쪽 슬라이드로 가고있다 온라인으로 사용할 수 있습니다. 그리고 지금의이 레일로하세요. 레일은 사랑입니다. 레일 - 그래서 루비는 자신의 언어입니다. OK, 단지 PHP처럼, 그냥 파이썬을 좋아한다. 그것은 C를 높은 수준의 언어처럼되지 않습니다 에있는 C의 중간, 낮은 수준의 언어 루비는 당신이하지 않아도 의미 메모리 재 할당에 대해 걱정하고, 포인터, 사물의 그 종류. 그러나 레일이 프로그램입니다 루비로 작성되었습니다. 그리고이 있기 위하여, 루비를 사용 프레임 워크, 당신은 수 있으려면 멋진 웹 애플리케이션을 구축 할 수 있습니다. 그래서 처음에 루비를 설치해야 기계,하지만 대부분의 기계 이미이 있습니다. 그리고 그 위에 레일을 설치합니다. 우리는 나중에 이야기 할 것입니다. 왜 레일? 그래서 MVC, 즉 모델 뷰 컨트롤러의 우리는 조금 이야기 비트 때문에 모든 것을 간단하게 그것은 것들을 분할 다른에 개념적으로 다른 응용 프로그램의 일부. 낮은 수준의 문제에 더 적은 시간 소비, 또, 매우, 매우 인기있는 지금. 에 관심이있는 모든 사람들을위한 그래서 시작 장면, 또는 뭔가 사업을 시작하고, 사람들처럼 하는 기술 시장에서 지금 자신의 사업을 시작 입니다 정말 루비 정말 팬에 너무 빨리 때문에 레일. 그래서 및 실행 뭔가를 얻을 수 있습니다 에서 하루보다, 그리고 그의 정말 매우 강력한 루비를 사용하는 인수. 그리고 4.0 레일 - 지금 오븐에서 매우 신선합니다. 그래서 4.0 레일 - 내가 생각하는 첫 번째 릴리스 올해 3 월이었다. 그리고, 모두가 정말 좋은 것 새로운, 멋진 기능의 종류. 그래서 루비 온 레일즈의 프레임 워크입니다 끊임없이을 가지고 업데이트되고 새로운 기술. 내가 루비를 사용하려고 처음 레일, 나는이 문제를 가지고 있기 때문에, 내 첫 번째 웹 응용 프로그램을 작성, 그리고 그것은 정확히처럼 보였다. 그래서 위해 그 모든 파일을 생성 당신, 나는 아무 생각이 없었다 - 이것은 무엇입니까? 그것은 모든 해당 파일을 생성, 그리고 만 간단한 프로그램을 만들고 싶었 간단한 HTML 웹 사이트. 그리고 난 아무것도 할 수 없습니다. 그래서 나는 조금 당황했다. 하지만 그 중 하나의 당신에게 한 번 이해, 모든 일이됩니다 훨씬 명확. 그래서 첫 번째에 의해 압도되지 않습니다 처음에 만들 어떤 광경. 그래서 무슨 일이 레일을 생성합니다 이러한 모든 파일. 그래서 그 중 하나는 문서, 문서입니다. DB, 즉 데이터베이스에 관련이 있어요. 리브는, 그 도서관은 로그 있어요. 공중, 스크립트, 그리고 몇 가지. 거의 모든 당신이 걱정하는거야 에 대한 응용 프로그램 폴더가 거기있다. 즉이 들어있는 폴더의 응용 프로그램. 다른 모든 파일 - 그들 중 일부는 중요합니다, 당신은있어 나중에 배울 것. 그러나 그들은 단지 여기 프레임 워크가 포함되어 있습니다. 집 그래서 첫 번째 초석 너희들은 OK, 구축하고있다? 그러나 응용 프로그램 폴더 - 그건 정말 중요한 하나입니다. 그리고 app 폴더 자산을 보유하고 있습니다. 자산은 거의 전부입니다 그 온다. 예를 들어 이미지의 모든 정적이 다운로드 할 것 당신의 웹 사이트에. 그래서 이미지, 자바 스크립트, CSS - 사물의 이러한 종류의 자산입니다. 컨트롤러 - 우리에 대해 더 많은 것을 이야기 할 것입니다 컨트롤러, 모델은 무엇입니까 그리고 두 번째의 필드. 그리고 도우미 기능을하고 있음 코드에 모두 사용할 수 있습니다 당신이 뭔가를하는 데 도움이. 같은 기능을 위해, 로그인 예 - user.loggedin. 그것은 아마도 함수의 당신의 모든 부분에 사용해야 응용 프로그램. 그래서 당신은 뭔가를 넣을 수 있습니다 당신의 헬퍼. 우편물 - 당신이 보내려고하는 경우에 그의 사용자에게 이메일, 당신 메일 프로그램을 사용하고 싶습니다. 그리고 모델과 뷰, 우리는거야 지금 그 권리에 대해 이야기. 그래서 모델 뷰 컨트롤러, 그건 루비의 기본 초석 레일, 대부분 워크 요즘, 솔직히 말해서. 그래서 다시, 우리는 우리의 모든 코드를 분리 세 가지 부분으로. 모델 - 모델은 기본적으로 데이터베이스이다. 그것은 데이터베이스에 일을 처리합니다. 따라서 데이터베이스의 각 테이블은이 모델 내에서 파일을 해당. 그래서 테이블 종류의 사용자를위한. 그래서 당신은 같은 정보를 저장하고 사용자 이름, 자신의 이메일, 자신의 주소, 비밀번호, 그 같은 것들. 당신은 하나의 파일을해야 할 것입니다 사용자의 RB라는 모델 - 루비 경우 rb. 그리고이 모든해야 할 것입니다 방법과 변수. 변수는 대응 예정 사용자 이름, 이메일,에 모든. 그리고 당신은 방법이 될 것입니다. 그와 관련된 것이 될 것입니다 - 이 정보를 처리하는거야 데이터베이스. 레일을 사용하여 모델을 만들려면 당신은 레일 생성 사용합니다. 그리고, 레일에 당신이 물건을 만들 수 있습니다 실제로 단말기가 필요합니다. 그래서 그것은 매우 터미널의 기반의 프레임 워크. 당신은 터미널에 로그인 레일즈는 모델을 생성 않습니다. 그리고, 모델 이름은 사용자이다. 그리고 두 변수를 갖고 싶어, 내 테이블에 두 개의 열. 그래서 이메일입니다. 이메일 형식의 문자열입니다. 암호, 암호는 또한 형식 문자열입니다. 사람들은 두 가지입니다. 그것은 단순한 사용자 테이블의 일종입니다. 하지만 당신은 완전히 백을 넣을 수 당신이 원한다면 일이있다. 그리고 레일은 그것을 매우하게 모두가 매우 간단 데이터베이스 관계의 종류. 그래서 일반적으로, 당신의 테이블이 때 데이터베이스, 그들은 매우 아니에요 서로 독립적. 의에 대해 생각 해보자. 당신은 구매 및 판매 할 온라인 제품. 좋아, 그럼 당신은 웹 사이트가 제품 구매 및 판매합니다. 따라서 각 사용자가 많은 제품을 가지고 이 사용자는 판매하고자합니다. 그리고 각 사용자는 많은 트랜잭션이 지속적으로, 또는 그 그런 식으로. 그리고 거래는 다른 사용자와 함께. 각 트랜잭션이 속한 두 개의 서로 다른 사용자. 구입하고있어 사용자 팔고 사용자. 그래서 사람들은 소위 데이터베이스 관계. 그리고 여기에 우리가 정확히 그 키워드가, 많은을 가지고 있으며,에 속한다. 사람들은 가장 중요한 것들입니다. 그리고 당신은 단지에 대해 말할거야 예를 들어, 이것의 예는 하버드 2017의 웹 사이트에있는 모델입니다. 다시 말하지만, 여기에 학생 - 웹 사이트, 학생에 대한 각 학생 모델 데이터베이스 테이블이다. 각 학생은 많은 책을 가지고 당신 때문에 말할 수있는, 당신의 마음에 드는 것은 무엇인가 책, 맞아. 각각의 책이 속한 여기에 학생 다운. 장애인 접근 가능 속성 - 그것은 단지 그 말 것 변수는 다음과 같습니다. 이들은 변수 접근 이 모델에서. 그리고 변수는 저자의이다 책, 설명, 장르 및 책의 제목입니다. 그래서 그냥 정보 책에 관하여. 그리고 여기에는 방법이 그 단순히 모든 것을 정렬합니다. 그건 그냥, 그래서 정의하고 여기에 종료 말, 여기에 내 방법을 제공. Self.sorted_all. 그건 그냥,, 모든 우선 순위 나에게주는 것 그것은 당신이 구현 방법 정렬 알고리즘, 하는 매우 쉽습니다. 그러나 기본적으로,이 방법 모델 확인과 같습니다. 사람에 관한 질문이 있습니까 이 데이터베이스 것은? 관계? 알아 들었나? 예. 청중 : 당신이 할 수 정렬 알고리즘? GABRIEL GUIMARAES : 정렬 알고리즘, OK. 당신은 루비 구문에 익숙해 때, 그것은 분명있을거야. 그러나 기본적으로는, elems은 Book.all입니다. 그래서이 책은 내 모델의 이름입니다. 당신이 모델을 만들 때 함께 제공 당신을위한 좋은 방법의 모든 종류. 그래서 dot.all는 방법입니다 책을 모두 반환합니다. 그러나 찾을 예컨대 검색 것 한 권의 책과 그 책을 반환하거나, 그런 식으로. 그리고는, elems 모든입니다. 그리고 난 그냥 elems.sort을 말하는거야. 정렬 내장 된 루비 기능입니다. 그리고, AB을한다. 그래서 이것은 다시하면됩니다 - 당신은 정렬 할 것입니다. 하지만 당신이받을거야 나를 위해이 인수. 그리고 인수는 사용 -이 중 하나입니다 실제로 루비에서 열심히 일, 이 일을. 그러나 당신은 모든 것을 이해하고 나면 매우, 매우 직관적 온다. 그래서 AB,이 장소를 말하고있다 내가 사용하려고 해요 홀더 - 같은 내가 사용하려고 해요 변수는있다 A와 B를 호출 할 것. 그리고 그는 책이다. 종류는 비교 할 필요가 그래서 있기 때문에 요소는, 그 기억? 그래서 당신은, 당신이 물건을 정렬 할 때 두 가지 요소를 비교. 내가 말할거야 그 때마다 당신이 비교하는거야 - 그래서 이것은 내가 전달하고있어입니다 인수를 정렬합니다. 그리고 인수가 전부입니다 에서 할 일 OK로 여기에? 그리고이 주장은 단지 말하고있다 비교 정렬 방법. 종류는 여기에서 작동하지만 것 비교 것입니다 그들의 알고리즘을 비교하는 기본. 나는 그것이 매우 구체적인에서 비교하려는 방법, 즉,시 책 , 만들 때 각 책을 만들었습니다. 그래서 내 말은, 처음의 이름을 말 이 책은의와 이름입니다 B로 두 번째 책, 나는 일종의 정렬 할 이 b.created_at 기반으로 뭔가 이상한 기호, a.created_at. 그리고 그 이상한 기호가 속기 하나는보다 큰 경우 다른, 1을 반환합니다. 하나 같으면 기타, 0을 반환. 하나보다 작 으면 다른 반환 - 1. 그래서 그 이상한 기호가 무엇인지입니다. 하지만 그건 중요하지 않습니다. 나는 너희들이하고 싶어 무엇을 의미 지금 생각은 데이터베이스입니다 - 당신이 모델을 할 수 있습니다. 그래서 당신에 대해 걱정할 필요가 없습니다 연결 및 SQL 문을 사용하여, 그 같은 것들. 또한에 문을 만들 수 있습니다 SQL 주입 및 모든 보안 문제의 종류. 이 경우에, 당신은하지 않습니다 걱정. 당신은 book.all 같은 방법을 사용합니다. 그리고, 그 과정의 배경 데이터베이스에 가고, 그리고 형입니다 SQL 문을 사용하는 것 모든 책을 얻을 수 있습니다. 하지만 당신은 필요가 없습니다 걱정. 즉 OK, 테이크 아웃이야? 그리고 당신은 belongs_to 문이 때 다음과 같이 그 의미 당신은 책 개체, 당신이 한 번 그 학생이 무엇인지 볼 수 있습니다. 그래서 어떤 학생은이 책이? 그래서 우리는 단지 book.student를 사용하고 있습니다 그 학생이 무엇을 당신에게 제공합니다. 그리고 정말 가지고 있습니다입니다. OK, 이제 볼 수 있습니다. 따라서이 모델은 상호 작용하는 것입니다 데이터베이스와, 오른쪽? 보기는 기본적으로 HTML, 그리고 CSS, 일부 자바 스크립트. 그리고 어떤 사용자에게의 실제로 본다. 사용자에 없을거야 데이터베이스를 참조하십시오. 그는에서 일부 데이터를 볼 것 데이터베이스는 뷰어에 매립. 루비 온 레일스 (Ruby on Rails) 정말 만든다 필드를 만들 간단. 첫째, 이미 생성하기 때문에 당신을 위해, 상자, 레이아웃 중. 레이아웃은 기본적으로 뭔가입니다 - 귀하의 모든 페이지 상단에 로고가있는 경우 그리고, 나는, 어떤 메뉴를 모르거나하지 않습니다 그런 식으로, 모든 페이지 공통의 공유, 당신은하지 않습니다 많고 많은 HTML을 생성해야 모든 파일이 있는지의 파일 같은 HTML 코드입니다. 나는 당신이 단지이기 때문에 그 바보의 의미 다른 파일 사이에 코드를 반복. 그것은 확실히 좋은 방법이 아니다. 그래서 루비 온 레일스 (Ruby on Rails)가 생성 당신이 레이아웃. 그리고 이것은 단지 내 모든 페이지, 말하는 이 HTML이이 머리를 가고있다 여기에 제목, 그리고 그는 스타일 시트 링크 태그. 여기에 내 모든 CSS를 연결합니다. 여기에 내 모든 자바 스크립트에 연결 일부 메타 태그. 즉, 그들은 그냥 뭔가 당신을 위해 자동으로 수행합니다. 그리고 지금, 머리를 종료 여기에 몸이 시작됩니다. 그리고 지금이 내 실제 내용입니다. 내가 좋아하는 뭔가를하고 싶었다 그래서 경우 여기 메뉴는 바로 이상을 둘 것 이 장소, 또는 그런 식으로, 내 모든 페이지가 공유되도록. 그래서 레이아웃 공유 모든 페이지에 의해. 지금 여기에 그 수익률은 아무 말한다 무슨 페이지에이 단지에있다 그 내용에 연결 여기에서 페이지, OK? 그리고 지금은, 예를 들면, 될 것 한 페이지의 내용 이 yield 문에 연결 자동 레일에 의해. 그러나이 공유 레이아웃입니다 모든 페이지에서. 그리고 이것은 한 페이지의 예입니다. 그리고 이것은 정확히 페이지입니다 그 모든 책을 보여줍니다. 그래서이 정상까지 기본 HTML 테이블입니다. 그래서 책 목록, 제목, 저자, 설명, 장르. 그리고 여기에서 우리는 다시, 일부 사용 루비 구문 @ books.each-- @ 종류의 말한다 당신의 변수 어떤 의미에서 글로벌입니다. 이 변수는 사실 때문에 컨트롤러에 선언하는 당신은 지금 볼 것입니다. 당연하지만 그냥 가지고 그이 @ 책의 목록입니다 변수 모든 책. 그래서 books.each, 다시이는 않습니다 당신이 이름을 지정할 어떻게 말 반복자의 각 우리가하지 않도록 네 걱정이, 내가 int로 어쩌구 저쩌구. 우리는 단지 각을 요소를 사용합니다. 그래서이 책 한 후 바로 인쇄 여기에. book.title, book.author, book.description 및 어쩌구 저쩌구. 그리고 여기 LINK_TO입니다. 그래서 LINK_TO은 링크 태그입니다 사용자가 클릭 할 수 있음 다른 웹 사이트로 이동합니다. LINK_TO, 특정 책을 보여줍니다. 따라서 사용자는 매우 흥미있는 경우 이 책은, 그는 쇼를 클릭 할 수 있습니다. 아니면 그가 원하는 경우 편집을 클릭합니다 책을 편집 할 수 있습니다. 그가 삭제하고자하는 경우 또는 파괴 데이터베이스에서 책. OK, 그 의미가 무엇입니까? 좋은. 마지막으로, 제어기. 그래서 기본적으로 컨트롤러는 계면 모델과 뷰. 그래서 모델의 일부입니다 당신의 데이터베이스가 코드 - 데이터베이스의 각 테이블에는 에있는 각각의 파일 모델, 등등. 어떻게 모델을하고 보기는 상호 작용? 그래서, 컨트롤러를 통해. 그것은 무엇 컨트롤러가 수행입니다 뭔가 모델과 같이, 예를 들어, 내부의 책을 모두 넣어 변수. 이 같은 책 @. 그리고이 글로벌해야 일에 있기 때문에 될 것 뷰에 액세스. 그것은 내 사용하지 않을 것 컨트롤러 자체. 그리고 그것은 단지 정보를 속도가 느려 보기를 사용하는 것입니다. 예를 들어, 제어기 점검 사용자가 온라인 상태인지. 그리고 어떻게 그 일을합니까? 실제로 모델을 요청합니다 모델이 있으므로 사용자에 대한 정보를 제공합니다. 이 책보기, 사용자 테이블이 있습니다 테이블을 다른 테이블. 그래서 컨트롤러는 묻습니다 사용자가 온라인 상태입니다. 사용자는 온라인으로, 제어기이면 쿠키를 넣어 같은 것들을 처리, 또는 스탬프를 넣어 그런 식으로, 사용자가 온라인 상태인지 말할 수 있습니다. 다시 로그인 할 필요가 없습니다. 그리고 그것은라는 변수를로드하는 것 사용자, 예를 들면, 그 보기는 사용할 수 있습니다. 그리고보기는 여기에 뭔가를 넣을 수 있습니다, 예를 들어, user.name을 환영합니다. 그래서 말 것, 환영 존, 환영 제임스 - 그런 식으로, 오른쪽? 따라서 이러한 모든 변수가 사용될 보기에 보급 할 예정 컨트롤러가 될 수 있습니다 모델에서 뽑아. 이 컨트롤러의 예입니다. 그래서 우리는, 기본적으로, 각각이 - 우리는 그런 것들을 작업을 호출합니다. 따라서 인덱스는 작업입니다. 그것은 루비 기능입니다. 그것은 거기에서 루비 방법입니다. 그러나 컨트롤러 통화 그런 것들을 작업. 각 동작은 경로와 관련이 있습니다. 예를 들어, 그래서 여기에이 경로,, GET 문 / 책입니다. 그래서 당신은 harvard2017.com/books에 가면, 무슨 일이 일어날 것은이 코드입니다 호출 할 것. 그리고 파일이 있습니다 - 날이 진짜 빨리를 열 수 있습니다. RAW 파일이라는 파일이있다. 안 열려요. 그래서 RAW 파일이라는 파일이있다 즉, 기본적으로 일치 - 오, 지금은 여는. 여기에서, 노선. 그러니까 기본적으로, 변형과 일치 예를 들어, 정품 인증 / 새 컨트롤러에 뭔가. 소위이 컨트롤러가있다 활성화 컨트롤러,하지만 여기, 우리는, 예를 들어, 책이있다. 그래서 일치 - 컨트롤러, 도서 / 새 책, 새로운 액션. 그러니까 기본적으로, 매우 간단합니다 일. 그리고 여기, 당신은 / 책을 얻을 수 있던 경우에, 책의 ID를 슬래시, 새로운 슬래시 당신은에 가서 거기 루비 방법. 그래서 여기에, 어떤이 지수는하고있다 다만 책의 로그를로드하는 것입니다. 즉, 그 뭔가 - 나는 로그의 모든 도서를 기록합니다. 그리고 모두를 정렬 할 수 있습니다. 그래서이 돌아 오려고 모든 정렬 된 책. 이것은 데이터베이스에 다시이다. 그래서이 모델의 방법이다. 이 방법은 존재했다 모델에 만들었습니다. 지금은 모든 책을로드 그리고 변수에 그 퍼팅이 뷰에서 보일 수있다. 당신이 중간에, 할 수 없기 때문에 HTML 코드, 당신은 호출 할 수 없습니다 직접 모델에서 무언가, 두 가지 이유 때문이다. 첫째, 보안상의 이유로 인해 그것은 할 정말 재미없는 사람이다 직접 내부 정보를로드 데이터베이스의 모든 HTML. 둘째, 당신을 유지하는 코드는 정말 조직. 그래서 정확히 분리 다른 부분. 이에 따라서 BookLog.sorted_all, 데이터베이스와이 투입 예정 책 @ 변수. 그리고 지금이 변수를 액세스 할 수 있습니다 HTML 코드 내에서. 그래서 당신은 모든 책을 넣을 수 있습니다 우리는 바로 여기,이 그랬던 것처럼. 이 변수이다. 형식 | | 및 방문 할 respond_to, 이 루비 구문의 단지 종류입니다 사용자는 저를 요구하는 경우 HTML 코드, 내가 갈거야 HTML 코드로 응답합니다. 사용자는 JSON 코드에 저를 요청하는 경우 웹 응용 프로그램이 사용하는 무언가이다 자신 사이에 통신을하기 일반적으로 JSON 또는 기타를 사용 물건의 종류입니다. 그래서 그것은 단지 사람들을 사용하여 응답 두 개의 서로 다른 형식을 지원합니다. 그러나 일반 사용자는이 여기에 필요하지 않을 것입니다. 당신은과 반응 할 것 HTML, 그건 괜찮아요. 그래서 정말 걱정하지 않는 이에 대해 많은. 이 코드의 한 줄에 우리의 그것은 HTML에서로드됩니다으로 제어 데이터베이스, 뭔가 퍼팅 보기 액세스 할 수 있습니다. 그리고 새로운, 그래서 여기에 나는 책을 만드는거야. 그러나 책을 만들기 위해, 나는 학생이 필요 나는 학생을 알 필요가 있기 때문에 그 책이, 오른쪽에 속한다. 학생 = 학생 @ 그래서. 학생, 다시, 우리는 시작입니다 큰 S 모델 학생입니다. 좋아, 그럼이 모델 학생입니다 이 모델의 북 로그입니다. Student.find, 그래서 찾아 낼거야 매개 변수 ID를 사용하여 학생. params.id, 이것은 단지 나에게 값을 얻을 수있다 전달 된이 ID의 - 및 URL. 그냥 그 학생을 검색 할 것. 먼저, 우리는 당신을 검사하는거야 학생은 어떤 노래가있는 경우 어쩌구 저쩌구. 그리고 이것은 이미에게 처리 경우 경우 학생 예를 들어, 존재하지 않습니다. 그리고, 그렇지 않으면, 우리는 다만 응답 HTML을 사용하여 같은 일을. 그리고 우리는 사용자에게 할 수 있습니다 자신의 노래를 만들 수 있습니다. 그래서이 새로운 기능입니다. 새로운 보통,하자에 사용되는 사용자가 무언가를 만들 수 있습니다. 그리고 생성 작용이있다 그 일반적으로 사용되는 것 - 실제로 데이터베이스에서 노래를 넣어 또는 그런 일. 하지만 당신은 레일을 사용하기 시작하면, 그 가지가 될 수 있습니다 훨씬 더 명확하고 더. OK, 냉각. 질문 지금까지? 이 컨트롤러와 의미가 있는가, 모델, 필드 - 그래? 다시 레일 응용 프로그램에서 - 그래서 모두는 여기에서 찾을 수있다. 그래서 당신은 응용 프로그램, 컨트롤러, 그이 내 모든 컨트롤러입니다. 그래서 예를 들어, 책을 제어 할 수 있습니다. 즉, 우리가 방금 본 하나입니다. 그리고 전경. 각 컨트롤러는이 연결된보기, 오른쪽? 그래서 자동이를 호출 할 때 여기서 인덱스, 예를 들어, 경우 나 이 책 새로운, 다음 뷰를 호출 책, 새가 호출 될 것입니다. 그래서 레일은 모든 작업을 수행 자동으로 당신을 위해. 그래서 모든 컨트롤러는 관련있다 보고 모든 모델 - 여기서 I는 하나, 둘, 셋을 가지고 넷, 다섯 모델. 하지만이 학생 모델, 그래서 그 변수는 모든 학생들은이 - 현지화, 생년월일. 학생들은 조금 더 복잡한 각 학생이 있기 때문에 더 다른 방법 그것에 연결된. 그러나 이것은 단지 처리하는 했다 테이블의 모든 데이터베이스에있는 학생. 그리고, OK, 레일 설치. 레일 설치, 정직하기, 간단한 일이 아니다. 하지만 당신은 모든 것을 통과하면, 그것은 매우, 매우 간단합니다. 그래서 레일을 설치, 당신은 단지로 이동 웹 사이트, ruby​​andrails.org / 다운로드 거기에 감독의 지시를 따릅니다. 모든 다운로드. 그리고 당신은, 가전에 하나 그렇게 할 수 에 CS50 어플라이언스에 Mac에서 윈도우, 또는 운영 당신의 선택의 시스템입니다. 루비 온 레일스 (Ruby on Rails)는 모두에서 실행됩니다. 승률 이미 루비가 설치되어 있습니다 당신은 Mac 또는이있는 경우 - 가전​​ 제품에서 나는 루비는 생각 - 잘 모르겠 는데요. 그리고 당신은이 설치되어 있습니다. 그리고 새를 만들려면 웹 응용 프로그램, 방금 레일, 새, 블로그를 않습니다. 레일, 새 - 난 몰라 - 귀하의 웹 사이트의 이름입니다. 그리고 그것은 간단합니다. 그것은 그 모두를 만들 것 파일은 내가 당신을 보여 주었다. 그러나 모델, 뷰, 그리고 컨트롤러가 될 수 없습니다 아직 채워집니다. 당신은 거기 가서해야 할 것입니다 그 세 개의 폴더를 채 웁니다. 그래서 확률은, 당신이 모델을 만들 수 있습니다 예를 들어, 하나의 구현 첫 번째 모델. 그래서 다시, 항상 작은 물린하려고 시 문제의 비트. 그리고 생성의 말을하자 사용자를위한 모델. 즉, 제 일이 당신은 사용자가있는 경우. 그럼 난 모델을 만들려면 우리는 여기에서 보인 것처럼. 다음 레일, 생성, 모델, 사용자 및 이메일 문자열 - 우리는 여기에있다. 그냥 그래, 그 모델을 만들 수 있습니다. 레일 모델 사용자의 이메일을 생성합니다 문자열 암호 : 문자열입니다. 그리고 당신은 컨트롤러를 만들 즉, 사용자 다룬다. 그리고 당신은 새로운 사용자를 만들 수 있습니다 그러한 종류의 일들을 수행합니다. 그리고 당신은 창조로 이동할 수 있습니다 귀하의 웹 사이트의 나머지 부분. 쿨, 질문? 예. 청중 : [청취] GABRIEL GUIMARAES : 그래, 그래, 당신 확실히보기로 이동합니다. 즉, 아주 좋은 질문입니다. 그래서보기는 무엇을 실제로 당신의 HTML이 포함되어 있습니다. 그래서 어떤 사용자의 볼 것입니다. 다시, 여기,이입니다 보기의 예. 그것은 HTML 코드와 루비가 동시에 코드입니다. 그래서 루비 코드는 물건을 넣을 수있다 데이터베이스에서, 예를 들면, 컨트롤러에로드 된 그. 그래서 서 변수 @, 예를 들면, 책의 모든 테이블이 데이터베이스에서 책. 우리는 있었다는 것을 확인했다 컨트롤러. 그리고보기 - 귀하의 웹 사이트 떨어져 각 페이지입니다 하나의 연결된보기를해야 할 것. 만약 홈 페이지로 이동 그렇다면, 첫 페이지, harvard2017.com. 즉, 하나의 페이지를 보여줍니다. 그리고 당신은 프로필을 슬래시로 이동합니다. 즉, 컨트롤러에 갈거야 즉, 프로파일 컨트롤러입니다. 그리고 프로필 컨트롤러는 것입니다 당신에게 프로필보기를 제공합니다. 그리고 프로필보기를보기 위하여려고하고있다 다소 다음과 같이하지만 것 사용자에 대한 정보를 가지고 아니라 책에 대한. 그래서 HTML 코드와 CSS와 그의 사용자가 보는 것들 루비 코드 - 즉, 실제로 물건을 인쇄 데이터베이스에서. 그게 더 명확인가? 나는 희망한다. 청중 : HTML 코드로 사용된다 실제로 웹 사이트를 만드는 것이 사용자는 볼 수 있지만, 루비 코드는 어떻게 웹 사이트 작업을한다? GABRIEL GUIMARAES : 루비 코드 HTML로 변환됩니다. 그래서 사용자 가져 단지 HTML은 OK입니다! 그것은 단지 HTML입니다. 이 book.title는로 변환하는 것입니다 HTML에서 book.title의 가치, OK. 그래서이 서버의 모든, 등 이가 무슨 책입니다에 따라 달라집니다 지금 서버. 그러나 서버가 즉시 것 의미는 OK, 단지 HTML 코드입니다. 그러나보기는 단지의 레이아웃을 제공 HTML처럼보고 무슨 일이 있었는지 어떤 변수 가 될 수 있습니다. 인쇄 중의이 종류, OK. 그 가지가있다 기본적으로 아웃을 인쇄 할 수 있습니다. 그들은 OK, 변수를 인쇄 할 것입니다. 그래서 HTML 만, 사람들은 무엇인가 - 저자, 제목, 설명. 즉, 정적 콘텐츠입니다. 그건 변함이 없을거야. 그건 그냥 일반 HTML 코드입니다. 사람들은 프린트 아웃입니다 변수 - 따라 가지. 쿨, 더 많은 질문? 좋은? 예. 청중 : 나는 당신이 모든 일을했다 생각 다른 텍스트 편집 편집 프로그램. 우리는 또한을 다운로드해야합니까? GABRIEL GUIMARAES : 그래, 난이 좋아 텍스트 편집기 TextMate를 불렀다. 그리고 그것은 정말 좋다. 그것은 잘 루비에 적합한 것. 그것은 매우 깔끔하게 색상 관광 명소. 그래서 TextMate를, T-E-X-T. 나는 갈거야 그 넣어, 기다려 - 나는 당신의 gedit를 사용하여 의미 또는 당신이 원하는 무엇이든. 그러나이 맥에 대한 특정하고, 그것은 모두를두고 있기 때문에 정말 깔끔하네요 거기 파일. 그리고 루비 온 레일스 (Ruby on Rails), 당신이 필요합니다 파일이 많이 전환합니다. 그래서 많은, 많은 파일을 그냥 하나의 파일에서 이동으로 이동 하나의 파일 또는 다른. 그래서 TextMate에 아주 좋은 하나이지만, 많은 거기에있다. 더 많은 질문? 예, OK? 대상 : 모바일 개발이 있는가 루비 온 레일스 (Ruby on Rails)를 통해? GABRIEL GUIMARAES : 나는했습니다 것들을 들었다. 나는 그들을 사용하지 않았습니다. 당신은 그것에 더 연구 할 수 있었다. 어떤 거기에 있는지 확실하지 않습니다 거기에 좋은 일이. 예, OK? 청중 : [청취] GABRIEL GUIMARAES : 없음 레일, 아마 루비의 배열입니다. 터미널 창을 열고 및 분류 "루비". 그래, 아마도, 다음 그냥 레일을 설치해야합니다. 그러나 새를 설치하려고하는 경우 나는 매우 좋습니다 4.0, 레일 당신은 루비 2.0을 다운로드해야합니다. 그것도 새로운 하나입니다. 그리고 새로운 레일 4.0 뭔가가있다 그 정말 멋진 그것은 자산 않습니다. 이 자산을 처리합니다. 자산은 다시, 이미지, CSS 파일입니다 그리고 자바 스크립트 파일. 루비에 따라서 하나 정말 깔끔한 것 레일은 당신을 위해 그 CSS의 모든 것입니다 않습니다 당신이 파일과 모든 - 그것은 단지 하나에 모든 것을 묶어 큰 파일, 공백 또는 아무것도, 사용자가 필요한 시간을 최소화하는 서버에서 해당 코드를 다운로드 할 수 있습니다. 당신은 당신의 컴퓨터에서 볼 때, 그것은이다 15 CSS 파일을 같이해야 할 것. 또는 많은, 많은 다른 CSS 파일. 하지만 하루의 끝에서, 어떻게 레일 자동으로 그것을 둔다입니다 않습니다 하나의 큰 파일에 모든 것을 함께 그것은 요청 시간을 최소화하도록. 정말 멋지다. 예? 청중 : [청취] GABRIEL GUIMARAES : 그렇지. 그래서, Google지도 통합. 즉, 구글의 자바 스크립트 API입니다. 그래서 난 그냥 구글 웹 사이트에 갔다. 그들은이 Google지도 API와 I가 코드를 다운로드하고 그것을 집적 내보기에. 나는 거기에 할 필요가 그래서 나는 얻을 필요 데이터베이스에서 위치. 즉 컨트롤러에서 이루어졌다. 그래서 컨트롤러에 갔다 - 여기서 컨트롤러입니다. 컨트롤러는이처럼 보였다. 의 위치의 모든있어 학생들은 큰에 모든 걸 넣어 변수, 큰 목록, 그 모든 위치가 있습니다. 그리고보기 때문에 자바 스크립트 API는 뭔가있다 오른쪽 셨나요? 자바 스크립트는 HTML 내에서 실행되기 때문에 코드는 전송 될 것 사용자의 컴퓨터. 그리고보기에, 나는 그 모두를로드 구글 API에 정보. 그리고 그것은을 위해이 모든 것을 한 나, 어떤 정말 멋지다. 하지만 당신은 물건을 사용하려는 경우 백엔드, 그것을 위해, 라이브러리처럼 예를 들어, 다시 - 페이스 북의 통합. 즉, 많은, 많은 뭔가 많은 응용 프로그램은 요즘 사용하고 있습니다. 그래서 페이스 북과의 통합이 그것은 너무 쉽게이기 때문에 단지 작성하는 것보다 페이스 북으로 로그인 계정과 어쩌구 저쩌구. 그럼 그냥 보석을 사용하고는의 당신의 주옥 파일에가는 간단. 보석 파일은 보석 파일이라는 파일입니다 에 루비의 소스 디렉토리 프로젝트 레일. 그냥 가서 새로운 보석을 추가합니다. 그리고 당신은 Google에서 그것을보고. 많고 많은 보석이 있습니다. 구체적으로 수행 한이있다 이 페이스 북의 통합을위한. 나는 어떤 이름을 모르겠어요. 그냥 구글과 당신이있어 그것을 발견하는 것. OK, 더 많은 질문? 최고,와 주셔서 감사합니다.