최신 글
📁 Design Pattern
1. Observer Pattern?정의한 객체(Subject)의 상태가 바뀌면, 그 객체에 의존하는 여러 옵저버(Observers)들이 자동으로 알림을 받고 갱신되는 구조즉, 1 → N(일대다) 의존성을 정의하는 패턴흔히 Pub/Sub(발행/구독) 모델이라고도 부른다.효과상태 변화를 자동 전파느슨한 결합(Loose Coupling) 확보새로운 옵저버를 쉽게 추가/삭제할 수 있어 OCP(Open/Closed 원칙) 만족뉴스나 유튜브 같은 것!유튜버(Subject) ↔ 구독자(Observers)유튜버가 영상 업로드 → 여러명의 구독자에게 영상 업로드 알림구독자들은 -해당 채널을 구독함으로써 채널에 어떠한 변화(영상을 올리는 등)가 생기게 되면 바로 연락을 받아 탐지반면 구독 안 한 시청자에게는 알림이 가지..
📁 Design Pattern
1. 디자인 패턴이란?정의: 반복 출현하는 설계 문제를 문제-맥락-해법 템플릿으로 정리한 이름 있는 해결책Someone has already solved your problems.→ "누군가 당신의 문제를 이미 해결했다": 디자인 패턴은 정해지거나 만들어진 프레임워크 또는 모듈 같은 기능이 아닌, 선배 개발자들이 경험하며 쌓아 온 노하우라는 것.패턴 ≠ 코드 스니펫→ 설계 수준의 역할·책임·협력에 대한 약속(의도·트레이드오프 포함)효과팀의 공유 언어팀원간의 의사소통이 편리해진다. 또한 통일성을 줄 수 있음. e.g.) “여긴 Strategy 패턴을 사용하자” 한마디로 의도와 구조가 모두 전달됨.재사용 가능한 구조 습득, 설계 품질(확장성/유지보수성/가독성) 상승리뷰·온보딩 속도 ↑, 설계 토론 비용 ↓경..
📁 Spring
기본 개념Spring Web MVC 패턴Spring Web MVC는 Model-View-Controller(MVC) 패턴을 기반으로 한다.Model: 애플리케이션의 데이터와 비즈니스 로직 담당View: 사용자 인터페이스 담당. (JSP, Thymeleaf 등의 템플릿 엔진)Controller: 사용자 요청을 처리, 모델-뷰 연결 -> Dispatcher Servlet이 컨트롤러 호출Dispatcher Servlet이 때 Dispatcher Servlet은 Spring Web MVC 프레임워크의 핵심 구성 요소로서, 클라이언트의 모든 요청을 받아 적절한 컨트롤러(핸들러)를 찾아 전달하는 역할을 한다.이렇게 컨트롤러 구현을 단순화할 수 있으며, 비즈니스 로직에 집중하고  HTTP 요청 및 응답 처리 등에 대..
📁 Spring
ORM이란?ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어(OOP 언어, Java/C#등)와 관계형 데이터베이스 간의 데이터 변환을 자동으로 처리하는 기술ORM을 사용하면 SQL 쿼리 대신 직관적인 코드로 데이터를 조작할 수 있다.ORM은 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 객체 모델과 관계형 데이터베이스 간의 불일치를 해결하고, 이를 통해 개발자는 데이터베이스를 간접적으로 조작할 수 있다.ORM의 장/단점장점생산성 향상: SQL 쿼리 작성을 자동화해 개발 시간을 단축시킬 수 있다.유지보수성 향상: 객체 지향적인 코드로 데이터베이스를 관리하므로 유지보수가 용이하다.데이터베이스 독립성: 데이터베이스 종류에 상관없이 동일한 코드로 작동객체 지향적 접근:..
인기 글
📂 Tools
General - 일반적인 단축키 Window Mac 설명 Alt + #[0-9] ⌘0...⌘9 각 단축키에 해당하는 도구창 열기 Ctrl + S ⌘S 모두 저장 Ctrl + Alt + Y ⌘⌥Y IntelliJ가 파일 시스템에서 최신 변경 사항을 처리하도록 강제 일반적으로 변경 내용은 자동으로 처리되므로 작업은 아무 작업도 수행하지 않음 Ctrl + Shift + F12 ⌘⇧F12 편집기(Editor) 영역을 최대로 크기로 토글 Alt + Shift + I ⌥⇧I 현재 프로필 기준으로 현재 파일 검사 Ctrl + ` ⌃` 인텔리제이 테마 변경 Ctrl + Alt + S ⌘ , 설정창(Settings) 열기 Ctrl + Alt + Shift + S ⌘ ; 프로젝트 구조창(프로젝트 구조 확인 및 변경) 열..
📂 Python
1. 웹스크래핑(Web Scraping)이란? 우리는 웹 페이지에서 많은 정보를 얻는다. 이 정보들을 추출, 정리할 필요성을 느낄 때가 있는데, 이를 스크래핑이라고 한다. 즉, 웹 페이지의 정보를 가져오고(크롤링;Crawling), 데이터들을 추출(스크래핑;Scraping)해 DB에 저장하고 사용하는 것을 이야기한다. 2. Python으로 웹 크롤링하기 2-1. 준비하기 기본적으로 웹 크롤링은 HTML로 작성된 문서를 긁어서 가져오는 일이기 때문에, 파이썬에서 그 정보를 가져오도록 요청해야 한다. 따라서 Requests 라이브러리로 요청하고, BeautifulSoup 라이브러리로 필요한 정보만 추출할 것이다. requests 라이브러리 설치 나는 venv 가상환경을 사용하기 때문에 간단하게 VSCode ..
📂 Node.js
Node.js 삭제하기 제어판 > 프로그램 > 프로그램 제거 (또는 Win+R > appwiz.cpl) 설치된 Node.js 버전을 찾아 선택하고 제거 NVM 삭제하기 파일 탐색기에서 C:\Users\\AppData\Roaming\nvm 폴더를 찾아 삭제 Win+R > cmd > control sysdm.cpl,,3 입력 > 환경변수 > NVM_HOME 및 NVM_SYMLINK 변수를 삭제 관련 폴더 삭제하기 C:\Program Files\nodejs 폴더 삭제 C:\Users\\AppData\Roaming\npm 폴더 삭제 Win+R > regedit > HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 경로에서 nvm 관련 항목을 찾아 삭제
📂 프로그래머스
문제https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제설명하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다.예를들어- 0ms 시점에 3ms가 소요되는 A작업 요청- 1ms 시점에 9ms가 소요되는 B작업 요청- 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니..
📂 Spring Boot
MySQL과 Workbench 설치MySQL 설치하기 [MySQL] MySQL, MySQL Workbench 설치하기2024.04.19 글 업데이트! 업데이트 내용 : MySQL 버전. 끝. 다운로드 링크 : https://dev.mysql.com/downloads/windows/installer/8.0.html MySQL :: Download MySQL Installer Note: MySQL 8.0 is the final series with MySQL Installer. As of MySQL 8chaeyami.tistory.comConnections 생성워크벤치를 실행하고, + 버튼을 눌러 커넥션을 생성한다.원하는 커넥션 이름으로 설정해 Test ConnectionMySQL 설치시에 설정했던 root..
📂 네트워크
DNS를 이용한 로드밸런싱은 동일한 레코드 이름에 다른 IP 주소를 할당함으로써 질의에 따른 응답 IP 주소를 분산시키는 방법하지만 DNS는 서비스의 상태를 체크하지 않음→ 문제가 발생한 서비스에 대한 질의에도 정상적인 응답이러한 문제를 해결하기 위해 등장한 것이 GSLB(Global Server Load Balancing)GSLB는 DNS의 기능인 도메인 질의 응답과 함께 서비스의 상태를 체크하는 역할이를 통해 정상적인 서비스만 사용자에게 연결만약 특정 서비스에 문제가 발생하면 GSLB는 그 서비스의 레코드를 잠시 사용하지 않으므로 사용자는 항상 정상적인 서비스에 접근할 수 있고, 이 때문에 GSLB는 '인텔리전스 DNS'라고도 불린다.이제부터 GSLB의 동작 방식, 분산 방식, 그리고 GSLB를 사용..
ChaeYami
채야미의 코드레시피🍳