옛날부터 겸손해야한다. 겸손해야한다. 여기저기서 10번도 넘게 들었던 말이다. 나는 겸손해야하는 이유가 남에게 미움받지 않기 위해서라고 생각했었는데 지금은 생각이 좀 다르다. 정말 겸손해야하는 이유는 다른데 있다고 생각한다. 능력과 겸손함의 역설세상을 살다보면 어떤 분야든 나보다 잘하는 사람, 못하는 사람을 모두 만나게 된다. 그리고 특정 분야에서 나보다 못한다고 생각하는 사람의 의견은 무시하거나 "내가 했던 경험인데 그거 아니야" 라고 생각하는 경우가 있다. 근데 막상 들어보면 그 사람의 의견이 가장 좋은 해결책이 되기도 한다. 왜 이런 일이 발생하는 걸까? 나는 가장 큰 이유가 겸손함의 부족함이라고 생각한다.그리고 이 겸손함은 경력이 많아지고 능력이 생길수록 결여되기 쉬운 부분이다. 경력 20년이 넘..
배경좋은 동료가 되기 위한 많은 조건들이 있다. 그리고 나는 좋은 동료가 되기 위해 어떤 행동을 하고 있는지 생각해보았다. 그리고 꽤 잘하고 있다고 생각하는 것들을 블로그에 하나하나 정리해보려고 한다. 주석을 왜 쓸까일반적으로 사용되는 주석의 정의는 다음과 같다.낱말이나 문장의 뜻을 쉽게 풀이함. 또는 그런 글 [1] 개발자가 사용하는 코드에서의 주석도 크게 다르지 않다. 개발에서 주석은 코드의 설명을 쉽게 풀이하거나 추가 설명을 위해 작성한다.이렇게만 들으면 주석을 그냥 사용하면 끝일것같은데 실무에서는 어떤 문제들이 있을지 하나씩 살펴보겠다. 주석이 문제가 되는 경우생각보다 주석이 문제가 되는 경우가 종종 있다. 그리고 내 생각에는 모두 해결책이 존재한다.(물론 상황에 따라 다를수는 있지만 정석이라고 ..
배경취업하기 전 인상깊게 읽은 글이 있다. 절반도 이해하지 못했는데 경력이 쌓이면 언젠가 이해할 수 있겠지? 라고 생각했었다. 그리고 4년차 개발자가 된 지금은 어떤지 알고 싶어졌다. 프론트개발만 하고 있기 때문에 그때와 달라진게 있을까? 싶은 생각도 있지만 CS 지식도 쌓인 만큼 조금 달라졌길 기대한다. 본문위에서부터 한문단씩 읽으면서 생각을 정리해보겠다.(굳이 설명을 덧붙이지 않아도 되는 부분은 생략) 작성자 OR 굴비 알고리즘의 연산 비용을 계산해 보자. 내가 따르는 친구의 수를 m이라 하고 전체 사용자 수를 n이라고 한다면 전체 사용자 검색 연산의 시간 복잡도는 O(m log(n))이 된다. 물론, 각 사용자별로 정렬된 게시물 레코드 식별자 리스트를 찾은 후에도 각 사용자별 레인지 쿼리를 수행하고..
날것의 생각을 그대로 올립니다. 깨달았다. 나는 깊이 파고 들지 않는다. 우테캠 세번째 프로젝트를 하면서 깨달았는데 지금도 변한게 없다. 여러가지 변명을 대고 싶지만 그건 좋은 방법이 아니라는 것을 알고 있다. 지금까지는 그랬다는 것을 인정하고 앞으로는 변해야한다. 변하기 위한 액션 아이템은 두가지정도 잡았다. 첫번째는 내가 잘 모른다고 생각하는 것들을 깊게 생각해보고 코드로 작성하기. 이건 https://github.com/yoonminsang/web-playground 에 올릴 예정이다. 그 동안 매번 바뀌어왔던 코드 가치관, 그리고 변화 등도 같이 업데이트시켜서 나만의 데이터베이스를 만들려고한다.(코드로 작성하지 않고 그냥 학습한 내용들은 https://github.com/yoonminsang/TI..
배경예전에 웹 서비스 캐시 똑똑하게 다루기 라는 글을 읽었다. 과연 똑똑하게 다루는 방법은 뭘까? 지금 내가 하는 프로젝트는 어떤 방법을 사용해야할까? 타사 서비스들은 어떻게 다루고 있을까? 이런 여러가지 고민들을 했고 정리해보려고 한다. 기초 지식캐시 컨트롤에 대한 기초 내용은 다루지 이 글에서 다루지 않습니다. 다만 필수적인 내용만 가볍게 정리하고 넘어갑니다. no-cache: 브라우저(로컬) 캐시를 사용하지 않는다. 단, cdn(중간서버) 캐싱은 사용한다.(사용 전 서버에 재검증)no-store: 모든 캐시(브라우저, cdn)를 사용하지 않는다.max-age: 브라우저 캐시 유지 시간s-max-age: cdn 캐시 유지 시간public: 브라우저와 중간 서버가 모두 캐시를 저장할 수 있음privat..
배경이전에 면접, 과제 등에서 스택, 큐에 대한 질문을 받은적이 있다. 그때는 실무 경험이 없었기 때문에 막연히 이론적 지식만으로 답변을 했었떤 것 같다. 조금이지만 경험이 쌓인 지금 그 때로 돌아가서 답변해보려고 한다. 실무에서 마주한 문제js script 최적화웹에서 js를 사용하려면 script 태그를 사용해야한다. 그리고 async, defer 속성을 통해 실행 순서를 제어할 수 있다. 아래는 과거 기술면접을 준비하면서 적었던 내용이다.- DOM을 따라 반드시 순서대로 실행되어야 한다면 이 방식을 사용하면 스크립트가 로드되기 전에 함수를 실행할 수 있고, 로드된 후에는 순차적으로 실행된다. 더 생각해보기- 전역객체를 두개나 만들었다. 이게 최선일까? 하나로 줄일수는 없을까?- body에 appe..
배경과거 객체지향 강의에서 추상화, 카테고라이즈에 대해 배웠다. 그런데 나는 이런 것들을 실제로 사용하고 있는걸까? 하는 의문점들이 조금씩 들던와중에 실무에 적용할일이 생겼다. 배경 설명- Foo라는 enum이 존재한다.- enum이 자주 추가되지는 않지만 계속해서 추가되는건 확실하다.- 프론트엔드, 백엔드 모두에서 전역적으로 사용된다.- 경우에 따라 특정 enum 값만 허용되어야 한다.- input이 전체 enum인데 outpt은 특정 enum으로 필터링해야한다.- enum에 매핑되는 value가 존재하는 경우가 있다.- enum이 추가될 때마다 전체 시스템을 점검해야하므로, 많은 시간이 소요된다. 고민나는 Foo enum을 추가해야하는 요구사항을 받았다. 또한 기존과는 약간 다른 타입의 enum이였다..
배경요즘 쇼츠가 유행이다. 나도 도파인 터지는 쇼츠에 빠져있다. 그런데 사용하다보니 어떤 플랫폼은 사용성이 좋은데 어떤 플랫폼은 사용성이 좋지 않았다. 특히 내가 성능이 안좋은 스마트폰을 사용중이라서 이게 더 심하게 체감되었다. 왜 이런 차이가 발생하는걸까? 가볍게 몇개의 플랫폼의 쇼츠를 들어가서 분석해보겠다. 분석하기네이버 쇼츠예시 링크 동영상 목록 api 살펴보기- `GET ~/cards` API에 cards라는 데이터가 있다.- cards는 배열이고 length가 4다.- 단, 맨 처음에는 length가 1인 api를 호출하고 끝난 시점에 length가 4인 api를 호출한다.- 내부에는 썸네일, 동영상 등 다양한 정보가 들어있다. 왜 4개의 데이터만 불러올까?- 쇼츠는 슥슥 내리는 사용성을 가진 ..
