profile
느려도 꾸준히 발전하려고 노력하는 사람입니다.

내가 꿈꾸는 개발자로서의 삶

개발을 하게 된 이유 4학년 1학기, 곧 취업을 생각해야 할 시기이지만 잘하는 것이 없었다. 좋아하는 것도 없었고, 인생이 막막했다. 전공인 경영학 공부는 재미도 없었고, 왜 해야하는지 이해도 되지 않았다. 내가 좋아하는 일을 하면서 살자라는 막연한 꿈만 가지고 있었다

2021년 10월 18일
·
0개의 댓글
·
post-thumbnail

브라우저 최적화

우테코에서 가상돔과 비교 알고리즘, 렌더러 함수를 만드는 미션을 하고 있다. 하다가 갑자기 궁금한 것이 생겼다. 이렇게 element가 있을 때, 첫 번째와 세 번째의 textContent를 변경한다고 생각해보자. 그러면 자바스크립트는 동기적이기 때문에 첫 번째의 te

2021년 10월 9일
·
0개의 댓글
·

axios cancel (비동기 처리)

간단하게 배운 것을 작성하려고 한다.크루의 블로그를 보고 abortController에 대해 알게 되었다. 블로그에 보면 자세하게 나와 있는데, fetch의 두 번째 인자에 abortController의 메소드인 signal을 할당하고, 취소하고 싶을 때 해당 sign

2021년 9월 29일
·
0개의 댓글
·
post-thumbnail

URI 관련 이슈

현재 보또보의 검색 기능은 검색어를 입력해 추천 검색어를 클릭할 수도 있고, 엔터를 눌러서 해당 검색어를 검색할 수 있다. 요청을 보낼 때 검색어 그대로를 서버에 보내고 있다. 오늘 실수로 ]를 입력했는데, 에러가 발생했다. CORS가 뜨면서 에러가 발생했는데, 처음에

2021년 9월 28일
·
0개의 댓글
·
post-thumbnail

HTTP/2

오늘 http/2를 도입했다. 도입하는 것 자체는 쉬웠다. nginx가 기본적으로 http/2를 지원하기 때문에 ssl을 적용해 둔 상태였던 우리의 프로젝트에는 http2 5글자만 작성하면 끝났다. 도입한 과정보다는 왜 도입하게 되었고, 어떤 경험을 했는지 작성해 보려

2021년 9월 27일
·
0개의 댓글
·

ssr 데이터 동적 할당

일단은 쿠키부터가 말썽이었다. 서버에서는 로컬스토리지에 접근할 방법이 없었고, 현재 사용하고 있는 인증 방법은 토큰이기 때문에 로컬스토리지에 저장되어 있는 토큰을 쿠키로 옮겨야만 했다. 로컬스토리지로 할 방법을 하루종일 찾아봤지만 찾지 못했고, 불가능하다고 판단했다.

2021년 9월 14일
·
0개의 댓글
·

express nginx에 배포

nginx에 express를 배포했다. express는 노드 서버로 사용되고 있으며, 지금은 단순히 클라이언트의 index.html와 index.js를 가지고 메인 페이지에 맞는 데이터로 가공해서 전달해주는 역할을 하고 있다. 특별히 토큰을 받고, 사용자를 확인해 사용

2021년 9월 11일
·
0개의 댓글
·

SSR 도입

SSR이란 Server Side Rendering으로 서버 사이드에서 렌더링에 필요한 html을 모두 구성해서 클라이언트로 보내준다는 의미이다. 즉, 클라이언트인 브라우저가 받는 index.html은 파싱만 완료하면 더 이상 DOM을 변경할 필요가 없다.(CSR에 비해

2021년 9월 9일
·
0개의 댓글
·

비동기 처리의 어려움

어제 잠들기 전에 문득 보또보의 비동기 처리에 대한 코드가 생각났다. async await을 통해 Promise나 콜백 함수보다 한층 더 깔끔해진 비동기 처리를 할 수 있게 되었지만 에러가 발생했을 때의 코드가 섞여있다는 것이 별로라는 생각이 들었다. 아무래도 비동기

2021년 9월 8일
·
0개의 댓글
·

리액트 batching

오늘 코딩을 하다가 신기한 현상을 발견했다. 비동기 로직 안에 있는 useState의 set하는 함수가 batching이 안되는 것이다. 그래서 10개의 set 함수가 있으면 렌더링도 10번 발생하는 것을 확인했다. batching은 set 함수를 일정 주기별로 모아서

2021년 9월 6일
·
0개의 댓글
·

쿠키에 대하여

이 글을 작성하는 이유는 쿠키에 대해 이것저것 실험해보면서 알게된 것들을 정리하기 위함이다.쿠키는 브라우저에 저장되는 작은 크기(최대 4KB)의 문자열이다. 이들은 HTTP 요청 시 자동으로 Headers에 전송된다는 특징이 있다. 이 특징으로 인해 CSRF에 취약하게

2021년 9월 2일
·
0개의 댓글
·

모바일, 태블릿, 데스크탑 구분하기

오늘 개발을 하다가 생각도 못해본 이슈를 만나게 되었다. 모바일과 태블릿에서는 터치가 가능하기 때문에 터치가 가능한 UI를 제공하고, 데스크탑에서는 터치가 불가능한 UI를 제공하도록 구현하려고 했다. 그러려면 모바일, 태블릿과 데스크탑을 구분해야 했다. 찾아보니 nav

2021년 9월 2일
·
0개의 댓글
·

nginx gzip

js의 파일 크기가 커서 로드 속도를 줄일 필요가 생겼다. 그래서 gzip으로 압축하려고 nginx에 설정을 해주었다.이전에 인터넷을 보면서 알아본 속성은 아래와 같다.이와 같은 속성들이 있었고, 결국 내가 적용한 속성은 아래와 같다.모두 적용하지 않은 이유gzip_s

2021년 8월 11일
·
1개의 댓글
·

HTTP 캐싱 전략

no-cache: 캐시를 사용하지만 서버에 매번 요청을 해 해당 캐시가 최신화된 캐시인지 검사를 받는 것이다. Etag랑 함께 쓰여 Etag가 변하면 새로운 자원을 가져온다.no-store: 아예 캐시를 사용하지 않는 것이다.must-revalidate: 만료된 캐시

2021년 7월 30일
·
0개의 댓글
·

07.29 캐싱 전략 및 라우팅.. 등 고민거리

우테코 미션 중 사용자는 항상 최신 버전을 볼 수 있어야 한다가 있었다. 도대체 무슨 말인지 알 수가 없었다. 최신 버전을 배포하면 당연히 사용자는 최신 버전을 보는 것이 아닌가?? 라는 생각이었다. 하지만 HTTP 캐시라는 존재를 잊고 있었다. 캐시는 효율성을 위해

2021년 7월 29일
·
0개의 댓글
·

XSS - 쿠키 / 로컬스토리지

XSS(Cross-Site Scripting)는 해커가 특정 사이트를 이용하고 있는 사용자의 정보를 가져갈 때 사용하는 공격 방법이다. 앞 글자를 따면 CSS이지만 CSS는 이미 존재하는 용어이기 때문에 XSS로 부른다고 한다. XSS에 대해 설명하기 보다는 XSS에

2021년 7월 17일
·
0개의 댓글
·

갈등 해결

백엔드와 있었던 갈등을 잘 해결했다. 모두가 만족할 수 있는 방향으로 해결했다고 생각한다. 많은 얘기를 하면서 각자의 입장을 알게 되었고, 결국 서로가 같은 주제를 가지고 말을 하고 있었다. 같은 주제로 말을 했지만 서로 알아듣지 못했던 이유는 용어 때문이었다. 프론트

2021년 7월 17일
·
0개의 댓글
·

백엔드와의 갈등(의사소통)

오늘은 나에게는 조금 당황스러운 일이 있었다. 보고 또 보고 프로젝트를 진행하고 있는데, 내가 생각하고 있던 최종 그림과 백엔드가 생각하고 있던 최종 그림이 완벽하게 다른 것이었다. 처음에 최종 모습을 그릴 때 의사소통을 많이 해서 충분히 동기화가 되었다고 생각했는데

2021년 7월 14일
·
0개의 댓글
·

recoil 장단점

보일러 플레이트가 적고, 리액트의 useState와 비슷한 문법이라 프로젝트에 적용하기 쉽다.리액트의 내부를 알고 있기 때문에 suspense나 에러 바운더리, 동시성 모드를 지원한다.캐싱을 지원한다.캐싱을 지원해서 데이터가 바뀌었을 때, 캐싱을 끝내고 새로운 데이터로

2021년 7월 12일
·
0개의 댓글
·

2021.07.10 데일리 회고

요즘 프로젝트를 하는 것이 너무 즐겁다. 팀을 잘 만나서 그런 것 같다. 디자인도 하고, 내가 만든 디자인대로 컴포넌트도 구현하고, API 설계도 해보는 과정이 재밌다. 하루도 쉬지 않고 달려서 지칠 법도 한데 아직까지는 멀쩡하다.아쉬운 것은 이제부터 루터에 나가지 못

2021년 7월 10일
·
0개의 댓글
·