전체 글 510

[오브젝트] 2. 객체지향 프로그래밍

조영호 님의 "오브젝트" 책을 정리한 글입니다.1. 영화 예매 시스템요구사항 살펴보기사용자에게 예매 서비스 제공할인 조건을 만족할 경우 할인 정책에 따른 금액을 할인받을 수 있음예매 완료 시, 예매 정보 생성 정보구분설명영화 정보영화의 기본 정보상영 정보요일, 시작 시간, 종료 시간예매 정보제목, 상영 정보, 인원, 정가, 결제 금액 할인 적용 방식구분설명할인 조건 (영화별로 여러 개 적용 가능) 🔹 순서 조건특정 상영 순번에 따라 할인 적용🔹 기간 조건특정 상영 시간에 따라 할인 적용할인 정책 (영화별로 1개만 적용 가능) 🔹 금액 할인 정책일정 금액 할인🔹 비율 할인 정책정가에서 일정 비율 할인  2. 객체지향 프로그래밍을 향해협력, 객체, 클래스객체지향 패러다임으로의 전환은 클래스가 아닌 객..

Code/OOP 2025.04.02

[객체지향의 사실과 오해] 2. 이상한 나라의 객체

조영호 님의 "객체지향의 사실과 오해" 책을 정리한 글입니다. 1. 객체지향과 인지 능력객체특성설명형태물리적 또는 개념적인 것인지 가능추상적인 사물을 포함하여 인식할 수 있음구별 가능식별 가능한 경계를 가짐크기작게 분해됨 (복잡성을 극복하기 위함) 객체지향현실 세계를 기반으로 새로운 세계를 창조하는 것 예시세계전등의 동작 방식현실 세계사람의 손길 없이는 전원을 켜거나 끌 수 없음소프트웨어 세계전등이 스스로 전원을 켜거나 끌 수 있음 2. 객체, 그리고 이상한 나라앨리스 객체개념설명행동이 상태를 결정행동의 결과에 따라 객체의 상태가 변화함ex) 앨리스의 키는 행동을 통해 변화됨상태 의존성행동의 성공 여부는 이전 상태에 따라 달라짐즉, 행동의 순서가 중요함 3. 객체, 그리고 소프트웨어 나라상태행동의 과정과..

Code/OOP 2025.04.02

[객체지향의 사실과 오해] 1. 협력하는 객체들의 공동체

조영호 님의 "객체지향의 사실과 오해" 책을 정리한 글입니다. 1. 객체현실 세계의 사물을 추상화한 개념상태(State)와 행동(Behavior)을 함께 지닌 자율적인 실체 2. 객체지향현실 세계를 직관적으로 모델링할 수 있는 패러다임 목표요구사항을 만족하는 시스템을 구현하는 것문제 해결을 위한 효과적인 구조를 설계하는 것 (단순히 현실 세계를 모방하는 것이 목표가 아님) 핵심 개념개념정의 및 설명주요 특징협력복잡한 문제를 해결하기 위해 객체들이 서로 요청-응답하는 과정- 객체 간 메시지 교환이 핵심 - 협력의 성공 여부는 객체의 응답 품질에 달려 있음역할협력 속에서 각 객체가 맡은 책임- 다형성 지원: 동일한 역할을 여러 객체가 수행 가능 - 대체 가능성: 요청자는 역할을 수행하는 특정 객체에 관심 없..

Code/OOP 2025.04.02

[오브젝트] 1. 객체, 설계

조영호 님의 "오브젝트" 책을 정리한 글입니다. 1. 티켓 판매 애플리케이션 구현하기관람객구분입장 조건필요한 절차이벤트 당첨자초대장을 티켓으로 교환한 후 입장초대장 → 티켓 교환 → 입장이벤트 미당첨자티켓을 구매한 후 입장티켓 구매 → 입장 극장관람객 입장 담당 (이벤트 당첨자/미당첨자에 따른 입장) 더보기코드public class Invitation { private LocalDateTime when;}public class Ticket { private Long fee; public Long getFee() { return fee; }}public class Bag { // 관람객의 가방 (초대장, 현금, 티켓) private Long amount; private I..

Code/OOP 2025.04.02

[NGINX 쿡북] 3. 트래픽 관리

데릭 디용기 님의 "NGINX 쿡북" 책을 정리한 글입니다.0. 소개웹 트래픽 컨트롤러: 트래픽 경로를 결정하고 여러 속성값을 이용해 흐름을 제어할 수 있음 기능특정 비율로 분기요청 빈도, 연결 수, 대역폭 등을 제한 1. A/B 테스트split_client 모듈트래픽을 특정 비율로 나누는 모듈 split_clients "${remote_addr}AAA" $variant { 20.0% "backendv2"; * "backendv1";}location / { proxy_pass http://$variant}구성 요소설명"${remote_addr}AAA"사용자 IP 주소 ($remote_addr)와 문자열 "AAA"를 결합하여 해시 생성$variant요청을 분배할 변수20.0% "bac..

Network 2025.04.01

[NGINX 쿡북] 2. 고성능 부하분산

데릭 디용기 님의 "NGINX 쿡북" 책을 정리한 글입니다.0. 소개인터넷 서비스에서의 성능과 가용성현대의 인터넷 서비스의 사용자 경험은 높은 성능과 가용성이 필요함이를 위해 일반적으로 같은 시스템을 여러 대 운영하고 부하를 각 시스템으로 분산함 부하 분산개념설명Scale Out동일한 시스템을 여러 대 운영하여 부하를 분산시키는 방식부하에 따라 서버 수를 동적으로 조절함Stateless 아키텍처서버 간에 상태 정보를 공유 메모리에 저장하여 서버 간 독립성을 유지하는 아키텍처서비스의 효율성을 높아짐세션 관리상태 유지가 필요한 경우, 사용자가 같은 서버로 연결되도록 함쿠키값이나 라우팅을 추적하는 등의 방식으로 문제를 해결 서버 상태 감지방식설명패시브 방식사용자의 요청을 로드 밸런서가 받은 시점에 서버와의 연..

Network 2025.04.01

[NGINX 쿡북] 1. 엔진엑스 기초

데릭 디용기 님의 "NGINX 쿡북" 책을 정리한 글입니다. 0. 소개1. 데비안/우분투 리눅스 배포판에 설치하기2. 레드햇/센트OS 리눅스 배포판에 설치하기3. 엔진엑스 플러스 설치하기4. 설치 상태 점검하기5. 주요 설정 파일, 디렉터리, 명령어주요 파일과 디렉토리경로설명/etc/nginx/NGINX의 기본 설정이 저장된 루트 디렉토리/etc/nginx/nginx.conf기본 설정 파일 (다른 세부 설정 파일을 참조)/etc/nginx/conf.d/추가 설정 파일이 저장되는 디렉토리/var/log/nginx/로그 파일 저장 디렉토리 (access.log, error.log 포함) 주요 명령어명령어설명nginx -vNGINX 버전 출력nginx -V컴파일 옵션 및 모듈 정보 포함한 버전 출력nginx ..

Network 2025.04.01

[따배셸] 4. Bash Shell Script

이성미 님의 "[따배셸] 셸 프로그래밍 시리즈" 강의를 정리한 글입니다. 1. Shell ScriptLinux command들을 모아놓은 ASCII Text 파일스크립트 파일을 위에서 아래로 읽음 개념설명예시실행 퍼미션실행 권한을 부여해야 실행 가능chmod +x script.sh셔뱅(Shebang)스크립트를 실행할 서브 쉘 지정 (#!)#!/bin/bash (Bash 사용)서브 쉘 (Sub Shell)로그인 쉘이 아닌 특정 쉘에서 실행됨#!/bin/zsh (Zsh 사용)실행 (./)스크립트 파일을 쉘에서 실행하는 명령./script.sh    출처따배셸 - 셸 프로그래밍 시리즈

OS 2025.03.31

[따배셸] 3. Bash Shell과 Rules

이성미 님의 "[따배셸] 셸 프로그래밍 시리즈" 강의를 정리한 글입니다. 1. Quoting RuleMetacharactersShell에서 특별히 의미를 정해놓은 문자들 메타 문자설명예시*모든 문자에 해당 (와일드카드로 사용 가능)*.txt → 모든 .txt 파일?임의의 단일 문자에 해당file?.txt → file1.txt, fileA.txt{a..b}a부터 b까지의 문자 집합 정의{a..c} → a, b, c[]대괄호 안의 문자 중 하나와 일치file[123].txt → file1.txt, file2.txt, file3.txt!명령어 내에서 논리 부정 (이 명령어가 쓰인 위치에서 사용)!file → file이 아닌 모든 파일|파이프(pipe)명령어의 출력을 다른 명령어의 입력으로 전달cat /etc/..

OS 2025.03.31

[따배셸] 2. Bash Shell과 변수

이성미 님의 "[따배셸] 셸 프로그래밍 시리즈" 강의를 정리한 글입니다.1. Shell 변수명령어작업설명예제변수 선언변수에 값을 할당하여 선언별도의 타입 지정 없이 값 저장name=noahname = noah (blank X)변수 확인변수 이름 앞에 $를 붙여 사용echo $name변수 제거unset 명령어로 변수를 제거할 수 있음unset name 2. Shell 환경 변수프로세스에게 영향을 주는 변수 명령어작업설명예제변수 선언환경 변수를 설정하려면 export 명령어를 사용합니다. 이 명령어는 변수를 현재 셸뿐만 아니라 자식 프로세스에도 적용할 수 있도록 만듭니다.export VAR_NAME="value"변수 확인 시스템의 환경 변수를 확인하려면 env 명령어를 사용합니다. 이 명령어는 현재 환경 변..

OS 2025.03.31