디렉토리 구조, 진짜 어떻게 해야 하는데?
·
Computer Science
정답은 없다. 하지만 원칙은 있다. 그리고 혼자 할 때와 팀으로 할 때는 완전히 다른 게임이다.Claude 선생님이 알려주신 대원칙 51. 관심사 분리 (Separation of Concerns)핵심 각 파일/폴더는 하나의 명확한 책임을 가져야 한다의미’아, 이 기능 바꾸려면 저 파일들을 수정하면 되겠구나’라고 미리 알 수 있는 것‘어디어디에 같은 코드가 또 있을까?’ 하고 걱정하지 않아도 되는 것예시// ✅ 관심사가 잘 분리된 구조src/├── utils/│ └── dateHelper.js // 날짜 관련 로직만├── api/│ └── eventApi.js // 서버 통신만├── components/│ └── EventCard.vue // 화면 표시만..
나도 쓰레드 써보자
·
Computer Science
나는 왜 쓰레드가 필요한가?상황 1: 순차적 크롤링 (쓰레드 없음)온오프믹스 크롤링 (3초) → 이벤터스 크롤링 (4초) → 데브이벤트 크롤링 (2초)총 소요시간: 9초상황 2: 동시 크롤링 (쓰레드 사용)온오프믹스 │ 이벤터스 │ 데브이벤트 (모두 동시에)총 소요시간: 4초 (가장 오래 걸리는 작업 기준)크롤링 작업에서 가장 큰 병목은 보통 네트워크 대기 시간예를 들어 3개의 사이트를 순차적으로 크롤링하면, 각 요청이 끝날 때까지 기다려야 하므로 시간이 누적된다.그래서 ‘동시에 여러 일을 처리하는 구조’, 즉 쓰레드가 필요하다.쓰레드의 핵심 개념쓰레드(Thread) = 프로그램 실행의 최소 단위프로세스(Process) = 하나의 독립된 프로그램 (예: 크롬 브라우저)하나의 프로세스 안에 여러 쓰레드가 ..
AOP 적용했는데 코드가 더 늘어났습니다
·
Computer Science
AOP가 무엇인가 - "코드 중복을 없애는 똑똑한 방법"📍 AOP 한 줄 정의"모든 함수에 공통으로 필요한 코드를 한 곳에 모아서 자동으로 적용하는 기법"📍 간단한 Before/AfterBefore: 로깅 코드를 10개 함수에 복사-붙여넣기After: @log 데코레이터 하나로 해결📍 핵심 개념 2가지만- 핵심 관심사: 함수가 진짜 하려는 일- 횡단 관심사: 모든 함수에 공통으로 필요한 일실제 개발할 때 겪는 문제📅 1주차: "간단한 크롤러 만들어주세요"def crawl_data(): return requests.get("...")😊 "쉽네!"📅 2주차: 팀장 "로그 좀 남겨주세요" def crawl_data(): print("시작") result = requests.get(..
당신의 사용자는 2초를 못 기다립니다
·
Computer Science
'부하 테스트(Load Testing)'라는 말을 들으면 대부분은 백엔드를 떠올린다. 서버가 얼마나 많은 요청을 동시에 감당할 수 있을까? 몇 명까지 무너지지 않고 버틸 수 있을까? 이 질문에 답하는 것이 전통적인 의미의 부하 테스트다. 하지만 프론트엔드에서는 이 개념이 다르게 작동한다. 하나의 사용자가 웹 페이지를 마주했을 때 브라우저는 얼마나 빠르고 안정적으로 반응하는가를 묻는다. 이는 엄밀히 말하면 성능 테스트(Performance Testing)에 더 가깝다. 결국 프론트엔드에서는 이런 질문을 던져야 한다. “사용자는 기다릴 수 있을까?” 1. 왜 중요할까?좋은 사용자 경험이란 단지 기능이 잘 작동하는 것이 아니다. 빠르고, 매끄럽고, 기다리지 않게 하는 것. 속도는 기능모다 먼저 체감된다. 사용..
recv()로 받은 데이터, 어디까지가 한 덩어리일까?
·
Computer Science
TCP를 공부하면서 한 가지 의문이 들었습니다. 데이터를 나누는 건 누가 하고, 받은 쪽은 어디까지가 한 덩어리인지 어떻게 알 수 있을까요? 이 글은 그 질문에서 출발해, 왜 개발자가 직접 데이터의 경계를 설계해야 하는지를 설명합니다. 1. TCP는 패킷으로 나누는데, 왜 애플리케이션은 경계를 모를까?TCP를 공부하다 보면 "패킷으로 보내니까 당연히 끊어서 보내는 거 아닌가?"라는 생각이 들 수 있다. 맞는 말이다. TCP는 내부적으로 데이터를 세그먼트(segment) 단위로 나눠서 보낸다. 운영체제가 자동으로 적절한 크기로 나눠 전송하고, 네트워크에서는 그것이 패킷 형태로 흐른다. 하지만 중요한 건 이거다. TCP는 데이터를 끊어서 전송하긴 하지만, 그 경계를 애플리케이션에 알려주지 않는다. 예를 들어..
주소창에 URL을 입력하면 어떤 일이 일어날까?
·
Computer Science
우리는 매일 브라우저에 URL을 입력하고, 익숙하게 웹페이지를 마주합니다. 하지만 그 짧은 순간 동안, 컴퓨터와 인터넷 너머에서는 여러 기술이 유기적으로 작동하고 있습니다. 이 글은 그 과정을 단계별로 차근차근 짚어보려 합니다. 도메인 이름을 IP 주소로 바꾸는 일(DNS)부터, 서버와의 연결(TCP), 요청과 응답이 오가는 방식(HTTP), 그리고 브라우저가 화면을 그리는 과정까지 함께 따라가봅니다. 1. 브라우저 주소창에 www.example.com 입력브라우저에 http://www.example.com을 입력하고 엔터를 누르면, 웹 요청이 시작된다. 이 단순한 동작은 웹의 작동 원리를 이해하는 첫 단서다. 요청은 이 한 줄의 문자열에서 출발하지만, 그 안에는 서버와 통신하기 위한 핵심 정보들이 담겨..