outwater 2021. 3. 4. 02:08

 Busy Day

 

막학기가 개강하고 최대한 부담이 안가는 과목들로 선정을 했지만 신경이 쓰이는 건 어쩔 수가 없다.

정신없는 하루에도 멘탈 잘 잡자!!

🎄오늘 한 일


✔️ 1.  Toyproblem22_rotateMatrix()

  • M*N의 2차원 배열(matrix)을 받아, 90도 회전 시켰을 때의 rotateMatrix를 리턴하는 문제이다.
    머리속으로 생각하는 것보다 이러한 문제들은 빈a4 용지에 그림과 함께 몇개의 케이스들을 쭈르륵 나열하며 규칙을 발견하는 게 중요하다고 생각했다.
    그결과 규칙을 발견하여 basic case는 해결할 수 있었다. but advance case인 180도, 270도 회전과 같이 회전각도를 받아 해당 matrix를 반환하도록 하는 것은 많이 까다로웠고, reference를 통해 이해하는 정도로 toy를 마쳤다.

✔️ 2. Short.ly 에서 Association을 이용하여 Join Table 구현하기

  • 어제 url 을 받아 단축 url을 만들어주는 short.ly 앱의 기본 구현을 마쳤다.
    오늘은 심화과정으로 여러 테이블을 만들어 테이블간의 관계를 맺는 것을 구현해보았다.
    대표적으로 User 테이블과 url테이블의 1:다 관계(One To Many)를 코드로 구현해보았는데, sequelize의 공식문서가 가독성과 구성이 썩 좋지 않아서 찾는데 애를 많이 먹었다.

    스키마 변경을 위해서 빈 마이그레이션 파일(스켈레톤)을 만들어주고, 해당 마이그레이션 파일을 작성하여 마이그레이트 하는 과정을 경험해보고 익혀보았다.

    

🎄기억할 것


✔️1. 모델과 컨트롤러의 구분

  • 모델은 보통 데이터를 기술하는 부분이지만, 데이터를 조작하는 코드도 상당 수 포함되어 있다.
    따라서 컨트롤러가 데이터를 조작하는 부분이라고 이해하는 것은 다소 혼돈을 불러올 수 있다.
  • 컨트롤러의 경우 가장 핵심은 비즈니스 로직(=업무순서)를 담당한다는 것이다.
    모델에서 가져온 데이터를 통해 업무순서대로 데이터를 처리하도록 하고, 이를 뷰로 보내주는 코드를 담당한다.
✔️ 2. ORM의 장점과 한계
  • ORM의 가장 큰 장점은 쿼리문을 작성하지 않고 편하게 데이터베이스에 CRUD 할 수 있다는 점이다.
  • 한계로 모든 데이터들을 간단하게 UI나 ORM을 통해 가져올 수 없다. 특히 여러 조건이 달린 데이터를 가져오고 데이터분석을 하는 기업의 경우 반드시 SQL 쿼리문을 통해 데이터를 가져오고 분석하는 경우가 많다.

✔️3. Sequelize로 테이블들의 관계 설정(association)을 해주는 이유

  • association을 하였을 때, 관계가 설정 된 테이블의 속성들을 세트로 불러올 수 있다.
    특히 fetch API를 통해 연결된 테이블을 접근할 수 있다는 것은 매우 효과적인 기능이다. 





 : )