Published on

주간 회고 (2022-10-31)

Authors
  • avatar
    Name
    박준열 | Eric Park
    Twitter

처음 적는 회고인데, 앞으로 이런 포맷으로 갈 예정입니다. 바뀔지도?

  1. 프론트엔드
  2. 알고리즘
  3. 일상
  4. 추가적인 공부 내용 (백엔드, 딥러닝, 등등)

프론트엔드

이번주에는 프론트엔드 공부를 많이 하지는 못했지만, 두가지를 그래도 나름 해봤습니다.

  1. Vanilla Javascript만을 이용해서 SPA 앱 만들기
  2. Next.js/Typescript랑 Express 모노레포 구축해서 간단한 SNS 서비스 제작

1. Vanilla Javascript SPA

나는 첫 프론트엔드 개발을 리액트로 시작을 했기 때문에 JS만을 이용해서 서비스를 제대로 제작을 해본 적이 거의 없다. 그래서 DOM Manipulation이나 그런게 좀 많이 미숙하고, 그래서인지 JS 자체의 이해도도 좀 비교적 떨어지는 편인데, 그게 계속 기술 부채로 남아있어서 너무나도 거슬렸었다.

언젠간 JS 공부 해야지 해야지 하면서 계속 미루다가 더이상 미루면 안되겠다 싶어서 패캠에 있는 김민태님 강의를 들으면서 JS 공부를 시작하게 되었는데,

아무튼 뭐 강의 후기가 아니라 그냥 주간 회고니까 간단히 얘기를 하자면, JS만 이용해서 무언가를 제작하는게 생각보다 조금 귀찮더라. 왜 리액트가 만들어진건지 알 것 같은 느낌

내가 그동안 개발 해오던건 리액트가 잘 만들어진 라이브러리이기 때문이라는 걸 다시 한번 느끼게 되었고, JS를 더더욱 열심히 공부를 해야겠다는 다짐을 하게 되었다.

2. Next.js/Typescript, Express.js

요즘 필수인 Next.js/Typescript 기술스택에 조금이라도 더 익숙해지기 위해 하는 공부인데, 갑자기 Nextjs가 13버전으로 업데이트가 된다는 소식을 듣고 뭔가 좀 허무하더라... 심지어 잔뜩 바뀌다보니까 뭔가 이전에 공부한게 효율이 확 떨어지는 느낌..?

getStaticProps, getServerSideProps, getStaticPaths를 전혀 안쓰고 새로운 방식을 이용해야한다고 하고, 폴더 구조도 잔뜩 바뀐다더라.. 이게 뭐야

그래도 뭐 작동원리를 깊게 알아서 나쁠 건 없다고 생각하기 때문에 계속 공부하기로 했다.

코어 자바스크립트 저자인 정재남 개발자님께서 제작하신 강의인데, 기술 자체의 이해도도 이해도지만, 프론트엔드 개발의 노하우들을 다 들을 수 있다는게 너무나도 큰 장점인 강의. 강의 들으면서 계속 "와..." 하면서 듣게 됨

하나 아쉬운건 강의가 Javascript로 제작이 되어서 혼자서 강의 따라가면서 Typescript로 구현하고있는데, Typescript가 에러들 잡아주는건 정말 좋지만, 작은 서비스에서 Typescript를 쓰면 오히려 개발 속도가 떨어지는 느낌을 받았다.. 물론 내가 아직 익숙하지 않아서일수도

아무튼 강의를 통해서 모노레포의 개념도 아주 살짝 찍먹을 해볼 수 있었는데, 편한지는 잘 모르겠다.. 이번에 근데 Vercel에서도 Turbopack 발표하면서 모노레포에 관해서 얘기한거보면 쓰는 이유가 있는 것 같다. 조금 더 공부해봐야지.

3. 넘블 싸이월드 클론 코딩

넘블에서 운영하는 챌린지에 참가를 해서 클론 코딩을 했는데, 이게 생각보다 재밌더라. 3등안에 들면 코드리뷰도 자세히 해준다는데, 그거 노리고 열심히 했으니까 됐으면 좋겠따

사용한 기술 스택으로는 Next.js, Typescript, GraphQL이다.

GraphQL은 해봐야지 해봐야지 하면서 계속 미루다가 이번에 쓰면서 배우게 되었는데, 생각보다 되게 편하더라. 내가 원하는 정보들만 딱 가져올 수 있다는게 진짜 큰 장점인듯. 근데 Overfetching/Underfetching을 해결하니까 진짜 그냥 무조건 써야하는 그런 기술로 보일 수는 있지만, REST API를 통한 요청에 비하면 백엔드 쪽에 부하가 좀 크다더라. 그래도 사용 경험은 너무 좋았어서 조만간 다시 한번 제대로 공부해보고 프로젝트에 도입해볼 예정.

알고리즘

250문제를 풀었고, 첫 플레 문제를 풀었다. 물론 LIS O(nlogn) 구현으로 날먹을 한거긴 하다.

처음에 LIS 공부할 때는 브루트포스밖에 안떠올라서 너무 어려웠는데, DP를 좀 많이 풀어보다보니 조금 익숙해졌다고 생각했는데, 알고보니 더 효율적인 알고리즘이 있더라.

DP를 통한 LIS 해결 방법은 O(N^2)로 효율성이 나쁘지 않은데, N이 10만인 경우에는 시간 제한 때문에 쓸 수가 없는 알고리즘이다. 이런 경우에는 더 효율적인 알고리즘을 찾아야 하는데, 최근에 이분탐색을 좀 공부를 해서 O(nlogn)이면 Parametric Search를 이용해서 구현을 하면 되지 않을까 생각을 하면서 몇시간을 고민해봤는데, 도저히 모르겠어서 찾아봤다. . .

역시나 이분탐색을 이용하는 알고리즘은 맞았는데, 주어진 숫자 배열에서 이분탐색을 하는게 아니라, LIS를 Tracking하는 큐에서 값을 추가할때마다 이분탐색을 하는 방식으로 하는거더라... 이해하기 어렵지도 않은 알고리즘인데 이렇게 효율적일 수가 있구나 하면서 충격을 먹었다.

일상

연고전을 갔다왔다. 농구 티켓을 어쩌다보니 구하게 돼서 여자친구랑 같이 보러갔다.

농구 경기는 처음 구경해봤는데 진짜 재밌더라! 계속 골이 막 들어가니까 긴장을 놓지 않고 재밌게 봤음

추가적인 공부 내용

백엔드 공부가 계속 하고 싶은데, 기술 스택이 너무나도 고민이 된다. 지금 하는 창업 동아리에서는 Django Rest Framework를 이용하는 스터디를 하고있는데, 내가 프론트엔드도 할줄 알다보니까 Javascript를 이용해서 백엔드를 하는게 더 효율적이지 않나 싶기도 하다. Express.js나 Nest.js를 배워보고 싶긴 한데, 할게 너무 많아서 일을 너무 크게 벌리는 느낌... 그래서 쉽게 도전을 못하고 있다.

그리고 장고가 속도가 너어어어무 느려서 조금만 서비스가 커져도 문제가 된다더라...

고민 좀 더 해봐야지,,