본문 바로가기

전체 글

(10)
객체 지향 프로그래밍의 5가지 설계 원칙 - SOLID 객체 지향 프로그래밍에서 좋은 설계를 위한 SOLID 원칙에 대해 공부해보자.1. 단일 책임 원칙 (SRP: Single Responsibility Principle)한 클래스는 한 가지 책임만 가져야 한다. 클래스가 변경되어야 하는 이유는 오직 하나뿐이어야 한다는 의미하나의 클래스가 여러 책임을 가지면 변경 사항이 생겼을 때 예상치 못한 부작용이 발생할 수 있다. // 단일 책임 원칙을 위반한 예public class User { private String name; private String email; // 사용자 데이터 관련 메서드 public String getName() { return name; } public void setName(String name) { th..
객체 지향 프로그래밍 (OOP, Object Oriented Programming) 개발 공부를 하다 보니 '객체 지향적으로 설계하라'는 말을 자주 듣게 되는데, 이게 뭔지 확실히 정리해보려고 한다. 객체 지향 프로그래밍(OOP)의 기본 개념이랑 특징에 대해 알아보자. 객체 지향 프로그래밍이란?객체 지향 프로그래밍은 현실 세계의 사물이나 개념을 '객체(Object)'라는 단위로 모델링해서 프로그램을 구성하는 방식이다. 각 객체는 자신만의 상태(데이터)와 행동(메서드)을 갖고, 이 객체들이 서로 메시지를 주고받으며 협력하는 방식으로 프로그램이 돌아간다. 예를 들어, 커피숍 주문 시스템을 만든다고 생각해보자'고객' 객체: 이름, 포인트 같은 정보와 '주문하기' 같은 행동을 가짐'메뉴' 객체: 음료 종류, 가격 정보와 '항목 추가/삭제' 같은 행동을 가짐'주문' 객체: 주문 항목, 총액 정보..
Spring에서 Bean 등록하는 2가지 방법 Spring에서는 객체를 직접 생성하는 대신 스프링 컨테이너에 Bean으로 등록하고 관리할 수 있다.이를 통해 의존성 주입(DI, Dependency Injection)이 가능해지고, 객체 간의 결합도를 낮출 수 있다. Spring에서 Bean을 등록하는 방법은 크게 2가지가 있다. 1. 컴포넌트 스캔(Component Scan) 2. 자바 코드로 직접 등록(@Configuration, @Bean 사용) 하나씩 살펴보자. 🚀1️⃣ 컴포넌트 스캔을 이용한 빈 등록Spring Boot를 실행하면, 특정 패키지 하위에 있는 @Component 어노테이션이 붙은 클래스들을 자동으로 찾아서 빈으로 등록해준다. @Componentpublic class MyComponent { public void hello..
[Java] 프로그래머스 - 가장 큰 수 (정렬) 문제 설명0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.제한 사항numbers의 길이는 1 이상 100,000 이하입니다.numbers의 원소는 0 이상 1,000 이하입니다.정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.입출력 예numbersreturn[6, 10, 2]"6210"[3,..
[COTATO] 백엔드 네트워킹 - Gilded Rose 코드 리팩토링 1. 안 쓰는 코드는 삭제하자기존 Gilded Rose 코드를 주석처리해서 남겨놓았던 부분을 삭제했다  2. 매직넘버를 잘 활용하자매직 넘버를 잘 활용해서 보기 편했다는 코드 리뷰를 받았다 :) 아이템의 품질은 50을 넘길 수 없다(Sulfuras는 전설의 아이템이기 때문에 예외)는 조건이 있어서MAX_QUALITY와 MIN_QUALITY를 매직 넘버로 관리했다. 매직 넘버로 관리하지 않으면코드에 있는 숫자만을 보고 그 숫자가 무엇을 의미하는지 파악하기 어렵고추후에 값을 수정하고 싶을 때 그 값이 쓰여진 모든 코드를 수정해야 하는 번거로움이 있기 때문에 매직넘버를 활용하면 좋다public abstract class AbstractItemUpdateStrategy implements ItemUpdateSt..
Github Action + SpringBoot + Elastic Beanstalk 무중단 배포 다시 도전 1. 역할 이름 수정elasticbeanstalk이 아니라 elaticbeanstalk  2. Elastic Beanstalk 다시 생성변경된 역할로 다시 생성  잘 생성이 되었다~~ 3. application.yml 파일의 환경 변수도 elastic beanstalk 환경 속성에 추가하기 JWT_SECRET 추가!  헬스 체크 요청을 위한 API URL이 /health 인데, 시큐리티로 인해 막혀있는 상황이라 요청 허가로 변경 SecurityConfig.java@RequiredArgsConstructor@Configuration@EnableWebSecuritypublic class SecurityConfig { private final JwtTokenProvider jwtTokenProvider;..
무중단 CI/CD (Github Action + Elastic Beanstalk) 계속해서 배포에 실패하는 나··· 다시 처음부터 차근차근 기록해가면서 놓친 부분 찾기 시작 !!  VPC vpc 생성총 4개의 서브넷 (public 2개, private 2개) 를 만들 예정 public 2개 - Elastic Beanstalk이 요구private 2개 - RDS에서 서브넷 그룹 생성 시 필요   서브넷 생성public, private 각각 가용영역 a와 c에 하나씩 만들어준다    인터넷 게이트웨이 생성인터넷 게이트웨이 생성 후 위에서 만든 VPC에 할당  인터넷 게이트웨이만 연결했다고 해서 퍼블릭 서브넷이 되는 것은 아님라우팅 테이블 생성 필요 라우팅 테이블 생성위에서 만든 VPC에 대한 라우팅테이블 생성 후라우팅 편집 - 아웃바운드 설정해주기! 0.0.0.0/0 : 모든 ip 주소에..
스프링 MVC에서 주로 사용하는 어노테이션 컨트롤러 선언부에 사용하는 어노테이션@Controller스프링 빈의 처리됨을 명시 @RestControllerREST 방식의 처리를 위한 컨트롤러임을 명시 @RequestMapping특정한 URL 패턴에 맞는 컨트롤러인지를 명시   메소드 선언부에 사용하는 어노테이션@GetMapping/@PostMapping/@DeleteMapping/@PutMappingHTTP 전송 방식(method)에 따라 해당 메소드를 지정하는 경우에 사용일반적으로 @GetMapping과 @PostMapping이 주로 사용됨 @RequestMappingGET/POST 방식 모두를 지원하는 경우에 사용 @ResponseBodyREST 방식에서 사용    메소드의 파라미터에 사용하는 어노테이션@RequestParamRequest에 있..

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });