> For the complete documentation index, see [llms.txt](https://simian114.gitbook.io/blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://simian114.gitbook.io/blog/undefined-1/diary/2020/12/20201215.md).

# 20201215(화)

## 2020-12-15

### 1. 학습 날짜

* 2020-12-15

### 2. 학습 시간

* 09:00 \~ 23:00

### 3. 학습 범위 및 주제

* 루비
* 루비온레일즈
* 리액트 네이티브

### 4. 학습 목표

* 루비 학습
* 루비온레일즈 getting started 웹페이지 만들어보기
* 리액트 네이티브로 앱 만들어보기

### 5. 과제 제출

* x

### 6. 상세 학습 내용

* 루비
  * 루비에서 중복을 없애는 방법에는 두 가지가 있다. 하나는 상속, 다른 하나는 믹스인
  * 상속은 당연히 아는 내용이니깐 생략하고 믹스인에 대해 설명하자면 믹스인은 어떤 클래스에 모듈을 `include` 해서 사용하는 것이다. 모듈 안에는 상수가 들어갈 수도 있고 클래스 또는 메써드가 들어갈수도 있다.&#x20;
  * 믹스인은 c++ 등의 언어에서 사용하는 다중상속을 손쉽게 구현할 수 있다. 다중상속이라 함은 부모가 여러개 있는 클래스를 의미하는데 루비에서는 여러 모듈을 include 하면서 손쉽게  사용할 수 있는것.
  * 또한 믹스인을 이용해서 클래스의 여러 기능을 구현할 수 있다. 대표적인게 비교다. 클래스에서 비교연산자를 작성하기만 하면 기능이 별로 없는데 이 때 `include Comparable`을 하면 객체 간의 비교가 가능해진다.
  * `include` 가 있다고 해서 파일을 인클루드 하는게 아니라 모듈에 대한 참조를 하는 것뿐이다.
  * 또한 루비에는 컬렉션이 있고 이 컬렉션들은 반복자들을 이용해서 수많은 기능을 구현해낸다. 사용자들은 자신의 클래스에서 이런 반복자들을 사용하기 위해서는 `each` 만을 구현하면 된다. 이후에는 `Enumerable` 모듈을 `include` 하면 `map` 등의 다른 반복자를 구현없이 사용할 수 있게 된다.
  * 루비에서의 범위는 `..` 또는 `...` 로 범위 시퀀스를 만든다.
    * `..` 는 양 옆을 모두 포함한다.
    * `...`는 왼쪽 경계값만 포함하고 오른쪽은 포함하지 않는다.
  * 범위를 이용해서는 크게 `조건`, `간격`, `시퀀스` 등을 표현할 수 있다.
  * 범위에서의 조건은 `===` 연산자를 이용한다
* 루비온레일즈
  * 흠.. `getting started` 를 보면서 아주 간단한 웹을 만드는 실습을 해봤다. 솔직히 아는게 아무것도 없고, 영어였어서 흠.. 머릿속에 들어온 내용은 아무것도 없다ㅜ
* 리액트네이티브
  * 내일 해커톤이라서 조금은 공부하고 가려고 했는데 젠장.. 이상하게 동작하지 않는다.

### 7. 오늘 학습 내용에 대한 개인적인 총평

* 많은걸 해보려고 했지만 흠... 거의 한게 없는것같은 하루다. 그래도 아침부터 고생했다\~

### 8. 다음 학습 계획

* 해커톤
