목록전체 글 (54)
croissant_code
시리즈 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권이 상태는..
LLMLLM방대한 양의 텍스트 데이터를 학습하여 사람과 유사한 방식으로 이해하거나 생성하는 AI 시스템예시 : ChatGPT, Claude, Gemini작동 방식다음에 오는 단어를 예측하는 방식으로 텍스트 생성인터넷의 방대한 데이터로 사전 훈련특정 작업에 맞게 미세 조정 가능트랜스포머 아키텍처인코더 : 입력 텍스트 이해어텐션 : 단어 간 관계 동적으로 가중포지셔널 인코딩 : 단어 순서 정보 등록디코더 : 입축된 의미로 새 텍스트 생성어텐션 메커니즘트랜스포머 아키텍처 핵심 : 모든 내용을 같은 집중도로 읽기 보다는 중요한 것에 집중토큰과 토큰화LLM은 텍스트를 토큰으로 분할 후 처리한국어는 영어보다 더 많은 토큰 필요(비용 증가)예시인공지능이 세상을 바꾸고 있습니다인공 지능 이 세상 을 바꾸 고 있습니다다..
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 ..
Truthy Falsy참 같은 값, 거짓 같은 값// Faslyundefinednull0-0NaN""0n// Truthy// 7가지 Fasly 값을 제외한 모든 것"hello"123[]{}() => {}// 어떤 상황에 사용?function printName(person) { if (!person) { return; } console.log(person.name);}let person;printName(person);단락평가false && true 인 경우에는 false만 나와도 뒤에 부분은 출력하지 않는다.연산에도 Truthy와 Falsy도 사용이 가능하다.function returnFalse() { console.log("False 함수"); return false;}function..
React.js오픈소스 JS 라이브러리 기술적인 특징컴포넌트를 기반으로 UI를 표현화면 업데이트 구현이 쉽다화면 업데이트가 빠르게 처리컴포넌트란 구성요소를 의미한다. 화면을 구성하는 요소 UI를 구성하는 요소를 의미한다. 만약 컴포넌트를 구성하지 않는다면 공통적인 부분을 전구 만들어야 한다. 중복 코드가 또한 늘어난다.따라서 리액트에서는 중복 코드를 컴포넌트로 만들어서 처리한다.화면 업데이트에 관해서 알아보자. 사용자의 행동에 따라 웹 페이지가 모습을 바꾸는 것을 의미한다.리액트는 선언형 프로그래밍이기 때문에 화면 업데이트가 쉽다. 여기서 선언형 프로그래밍이라는 것은 과정은 생략하고 목적만 간결히 명시하는 방식이다. (반대로는 명령형 프로그래밍, 목적을 이루기 위한 모든 일련의 과정을 프로그래밍하는 것)..