포시코딩

12월 4주차 - 스파르타 내일배움캠프 6주차 본문

WIL

12월 4주차 - 스파르타 내일배움캠프 6주차

포시 2022. 12. 26. 10:44
728x90

이번 주 알게 된 점

TIL 작성 방법 변경

기존에는 새롭게 공부한 주제에 대해 아예 따로 정리한 다음

TIL에는 오늘 뭐 했는지 나열하며 해당 항목에 정리한 글 링크를 거는 식으로 했는데

정리하는건 똑같이 하면서 '뭐 했는지'보다 '뭘 배웠는지'가 중요한거라 판단해

새롭게 알게된 부분만 간단히 정리해서 올리게 됐다.

 

기본적인 틀은 다음을 지킨다.

  • 문제점
  • 시도해본 것들*
  • 해결
  • 알게 된 점*

WIL도 일주일 동안 한 일이 아니라 내가 뭘 배웠는지를 중점으로 정리해갈 계획이다.

KPT도 프로젝트 회고를 할 때만 쓰고 WIL에 쓰기엔 별로 안좋은듯

 

Sequelize 사용

예전에 사용해봤던 MyBatis도 ORM인줄 알았는데 MyBatis는 Object Mapping 기술로서

SQL Mapper로 분류하는듯 하다.

Sequelize는 Mongoose와 마찬가지로 ORM으로 분류되는데 

Mongoose에 비해 생각보다 사용이 많이 어려웠다.

그래도 제일 많이 썼던 명령어를 정리하자면

 

model 생성

npx sequelize model:generate --name User --attributes email:string,nickname:string,password:string

migration file 생성

npx sequelize migration:generate --name test

migration file - DB 동기화

npx sequelize db:migrate

 

위 세가지인 것 같다.

마지막으로 Sequelize를 사용하면서 벽에 부딪힌다면 주저없이 Sequelize.query를 통해 raw query를 사용하도록 하자.

const { QueryTypes } = require("sequelize"); 
const { sequelize } = require("../sequelize/models/index"); 

const query = `SELECT * FROM Likes WHERE userId = ?`;

await sequelize.query(query, { 
    type: QueryTypes.SELECT,
    replacements: [userId], 
})

 

Python 문법 공부

코딩테스트 연습문제를 풀며 내 방법 말고도 다른 사람 풀이 방법을 꾸준히 보고 있는데

거기서 새롭게 배우고 있는 것들이 많다.

 

lambda

lambda 표현식 : 매개변수

map()

map(함수, 리스트)

* 가변 인자, rest parameter

def test(*params):
  print(params)

test(1, 2, 3, 4, 5)

빈 칸을 채워주는 rjust, ljust, zfill

val = "77".rjust(5, "0")	# 00077

이진수 <-> 십진수

# 십진수 -> 이진수
format(11, '#b')  # 0b1011
format(11, 'b')  # 1011  접두어 생략

# 이진수 -> 십진수
int('0b1011', 2)  # 11

zip()

numbers = [1, 2, 3]
letters = ["A", "B", "C"]
for pair in zip(numbers, letters):
    print(pair)

# (1, 'A')
# (2, 'B')
# (3, 'C')

이외에도 많지만 떠오르는 것들만 정리해봤다. 

그리고 위에 정리한 것들은 실제로 알고리즘 문제를 풀 때 사용하고 있다.

확실히 도움이 많이 되고 문제를 푸는데 걸리는 시간이 줄어든 것을 느끼고 있다.

 

이번 주 목표 달성

Node.js 숙련 과정 회고

Node.js 주특기 숙련 주차에 들어와 거의 4일 안에 모든 강의를 듣고 

그걸 토대로 블로그 백엔드 API를 완성하는 과제가 있었다.

 

생각보다 빡빡한 스케줄임에도 목표한 완성도까지 구현해냈는데 

원래 계획은 주말까지 활용해 프로젝트의 보완(redis 도입, pagination 등)과

받은 피드백에 대한 개선이 이루어져야 했지만 그러지 못해 아쉬웠다. 

 

Token, middleware를 이용한 로그인 시스템 개발

줄곧 배워서 개인프로젝트에 적용해야지 하던 로그인 시스템에 대해

새롭게 배웠고 또 적용까지 해서 잘 되는 것을 확인했다.

다만, 지금 refresh token에 대해 Redis를 또 배워 적용해보고 

완벽해지면 내 개인 프로젝트에 적용할 예정이라

아직도 한참 부족하다.

그래도 제일 완벽히 배우고자 했던 기능을 잘 알게 되었으니 

다른 프로젝트에 새롭게 적용하기는 시간문제라고 판단된다. 

주말 공부

새벽까지 코딩하며 고생했으니 크리스마스 겸 좀 쉬자라는 핑계를 대며 놀았는데

다음주를 나아갈 원동력을 위해 잘한건지

놀지말고 더 몰아붙였어야 했는지는 잘 모르겠다.

정답은 없겠지만 

멘탈을 유지할 수 있는 선에서 좀 더 긴장하자

 

다음 주 목표

Node.js 심화 과정 마스터

다음주 Node.js 심화 과정은 개인 과제도 없고 생각보다 널널한줄 알았는데

전혀 아니었다. 

 

socket.io를 통한 채팅 구현

OOP

테스트 코드

등 진짜 중요한 핵심 개념들이 등장하는데

사실 제일 집중해야 하는 시기가 아닐까 싶다. 

다음주는 강의 학습을 마치고 팀 프로젝트가 예정되어 있는데

저번 팀 프로젝트처럼 잘 완성시킬 수 있었으면 좋겠다.

 

Redis 적용

진행했던 프로젝트가 현재 refresh token을 그대로 MySQL에 저장중인데

딱봐도 다른 데이터들에 비해 리소스를 크게 잡아먹고 있다.

제일 효율좋게 다룰 수 있는 Redis를 도입해 적용할 예정인데

내가 따로 공부해서 적용해야 하는 문제라 얼마나 걸릴지 어떻게 될지 모르겠지만

일단 시간 나는대로 적용을 완료하는게 목표가 될 것 같다.

 

코딩테스트 연습 문제

이번주에 12문제 정도를 풀었는데

프로그래머스 난이도 레벨 0 기준 안 푼 문제가 78문제다.

0 레벨이라 대부분 금방 풀 것이니 이번주에 이걸 다 푸는걸 목표로 해봐야겠다.

솔직히 될까 싶지만 일단 목표는 크게 잡아놓고 

해본 다음 다음주 목표에서 제대로 다시 정하는 방법으로 나아가야 할 것 같다.

728x90