목록SW (42)
croissant_code
상황A와 B라는 사람이 존재A는 특정(3번)에 해당하는 로드맵을 조회, 조회 시 조회 수 1 증가B는 특정(3번)에 해당하는 로드맵을 조회가 아닌, 좋아요 선택, 그러면 해당 로드맵은 좋아요 개수가 1 증가동시에 발생한다면?DB의 경우 PostgreSQL 기준정보찾기PostgreSQL 내부 동작은 행(Row) 단위로 Lock을 대기 시킨다.Column 단위 Lock 아님, 따라서 a라는 컬럼을 다루든 b 컬럼을 다뤄도 완전 동시에 요청이 와도 한 개만 먼저 Lock 점유나머지는 대기, Lock Queue에 들어감
시리즈 A 투자유치에서 자주 나오는 지표 뜻 정리스타트업이 투자유치를 준비하다 보면 시리즈 A 단계에서 자주 듣게 되는 단어들이 있습니다.ARR, MRR, CAC, LTV, 리텐션, NRR 같은 용어들입니다.처음 들으면 어렵고 복잡해 보이지만, 실제로는 회사가 잘 성장하고 있는지 숫자로 보여주는 언어라고 생각하시면 됩니다.이번 글에서는 시리즈 A 투자 검토 과정에서 자주 등장하는 핵심 지표들의 의미를 하나씩 쉽게 정리해보겠습니다.1. ARR(Annual Recurring Revenue)ARR은 연간 반복 매출을 뜻합니다.쉽게 말해, 구독형 서비스에서 1년 동안 반복적으로 발생하는 매출을 의미합니다.예를 들어 어떤 고객이 매달 100만 원씩 이용료를 낸다면,1년 기준으로는 1,200만 원이 됩니다.이때 A..
테스트 코드 종류 정리Unit Test, Integration Test, E2E Test는 언제 무엇을 써야 할까?테스트 코드를 공부하다 보면 가장 먼저 마주치는 질문이 있습니다.“테스트에도 종류가 여러 개 있던데, 도대체 뭐가 다른 걸까?”“Unit Test만 하면 되는 걸까?”“Integration Test랑 E2E Test는 왜 필요한 걸까?”처음에는 이름도 비슷하고, 전부 다 “코드가 잘 동작하는지 확인하는 것”처럼 보입니다.하지만 실제로는 검증하는 범위가 다르고, 잡아내는 버그도 다릅니다.이번 글에서는 대표적인 세 가지 테스트인Unit TestIntegration TestE2E Test가 무엇인지, 왜 사용하는지, 언제 써야 하는지, 그리고 코드 예시까지 함께 정리해보겠습니다.1. 왜 테스트 종..
PR 전에 테스트를 돌리는 이유와 커버리지 문서가 의미하는 것개발을 하다 보면 이런 말을 자주 듣게 됩니다.“테스트 코드는 안정성을 위해 필요하다.”“PR 올리기 전에 테스트부터 돌려야 한다.”“커버리지 리포트 확인해 봐라.”그런데 막상 처음 테스트를 접할 때는 이런 생각이 듭니다.그냥 기능이 되면 되는 거 아닌가?왜 굳이 테스트 코드를 또 작성해야 하지?커버리지 숫자가 높으면 뭐가 좋은 거지?테스트 후 생성되는 HTML 문서나 리포트는 뭘 의미하는 걸까?이번 글에서는 왜 테스트 코드를 작성하는지, 왜 PR 전에 테스트를 먼저 해야 하는지, 그리고 테스트 후 생성되는 문서와 커버리지가 어떤 의미를 가지는지를 “왜 사용하는가” 중심으로 정리해보겠습니다.1. 테스트 코드는 왜 작성할까?테스트 코드는 단순히 ..
이커머스 시스템을 설계할 때 가장 먼저 등장하는 기능 중 하나가 장바구니(Cart)이다.사용자는 상품을 바로 구매하지 않고 장바구니에 담아두었다가 나중에 주문을 진행한다.하지만 데이터베이스를 설계할 때 많은 개발자가 처음에 이런 질문을 하게 된다. 장바구니 테이블을 Cart 하나만 만들면 안 될까? 결론부터 말하면 실무에서는 거의 항상 Cart / Cart_Item 구조를 사용한다.그 이유를 예시와 함께 자세히 살펴보자.1. 이커머스에서 장바구니의 의미장바구니는 단순히 상품을 담는 기능처럼 보이지만 실제로는 다음과 같은 역할을 가진다.사용자가 구매하기 전 상품들을 임시로 저장하는 공간예를 들어 사용자가 다음과 같이 상품을 담을 수 있다.Java 책 1권Python 책 2권Clean Code 1권이 상태는..
Prod 환경의 프로젝트 clone 하기회사 업무용 폴더(company)에 복제하기git clone {주소}SSH 정보 복제SSH 정보 복제Window : C:\Users\{사용자이름}\.sshMac : ~\Users\{사용자이름}\.sshconfigid_rsaid_rsa.pubknown_hostsknown_hosts.old복제 방법무조건 USB로 옮기기(보안 + 쉬움)복제한 파일을 노트북 또는 데스크탑의 같은 경로에 입력VSCode 확장자 설치현재 상황데스크탑 또는 랩탑에 복제한 파일들이 위치Window : C:\Users\{사용자이름}\.sshMac : ~\Users\{사용자이름}\.sshGit Clone {Prod 환경 프로젝트 주소}VScode SSH Extension 설치VSCode 와 SSH ..
React.js오픈소스 JS 라이브러리 기술적인 특징컴포넌트를 기반으로 UI를 표현화면 업데이트 구현이 쉽다화면 업데이트가 빠르게 처리컴포넌트란 구성요소를 의미한다. 화면을 구성하는 요소 UI를 구성하는 요소를 의미한다. 만약 컴포넌트를 구성하지 않는다면 공통적인 부분을 전구 만들어야 한다. 중복 코드가 또한 늘어난다.따라서 리액트에서는 중복 코드를 컴포넌트로 만들어서 처리한다.화면 업데이트에 관해서 알아보자. 사용자의 행동에 따라 웹 페이지가 모습을 바꾸는 것을 의미한다.리액트는 선언형 프로그래밍이기 때문에 화면 업데이트가 쉽다. 여기서 선언형 프로그래밍이라는 것은 과정은 생략하고 목적만 간결히 명시하는 방식이다. (반대로는 명령형 프로그래밍, 목적을 이루기 위한 모든 일련의 과정을 프로그래밍하는 것)..
Node.js리액트는 노드 기반으로 돌아간다. 기존 JS는 웹 환경에서만 사용이 가능(개발자 도구 창)했지만, Node는 웹 환경이 아니여도 JS를 실행시켜주는 JS의 실행환경(Run Time)이다. 즉, JS가 구동할 수 있도록 만들어주는 실행환경이라고 생각하면 된다. NPM은 Node Package Manager라는 것이다. Node들의 패키지를 관리하는 도구이다. Node.js에서는 패키지가 프로그램의 단위이다. Ex) 쇼핑몰 패키지, 웹 패키지 등등Node.js 모듈 시스템 이해모듈이라는 것은 특정 기능을 1개의 파일이 아닌 N개의 파일로 나누어서 만드는 것을 의미한다. 여기서 기능별로 나누어진 JS의 파일들을 모듈이라고 한다. 예를 들면, user.js, cart.js, payment.js 이런..