전체 글 562

[2장-4] 도커 엔진

참고서적 : 시작하세요! 도커/쿠버네티스 (9.2) 컨테이너 CPU 제한 - cpu-shares : 컨테이너에 가중치를 설정해서 해당 컨테이너가 CPU를 상대적으로 얼마나 사용할 수 있는지를 나타낸다. 시스템에 존재하는 CPU를 어느 비중으로 나눠 쓸 지 명시하는 옵션 docker run -d --name cpu_1024 --cpu-shares 1024 alicek106/stress stress --cpu 1 -> 1024의 값을 할당하였고 1개의 프로세스로 cpu에 부하를 주는 명령어(stress --cpu 1)로 설정됨 이 상태에서 --cpu-shares의 값이 512로 설정된 컨테이너가 같이 실행된다면, 2:1의 비율로 CPU를 나눠쓰는 걸 확인할 수 있다. 1024:512=2:1의 비율로 시스템의..

[2장-3] 도커 엔진

참고서적 : 시작하세요! 도커/쿠버네티스 (8) 컨테이너 로깅 1. json-file 로그 사용하기 도커는 컨테이너의 표준 출력과 에러 로그를 별도의 메타데이터 파일로 저장하며 이를 확인하는 명령어를 제공함. docker run -d --name mysql_test -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7 mysql과 같은 어플리케이션을 구동하는 컨테이너는 포그라운드 모드로 실행이 되므로 -d 옵션을 써서 백그라운드 모드로 컨테이너를 생성하는 경우가 많음 docker logs 명령어를 써서 컨테이너의 표준 출력을 확인함으로써 애플리케이션의 상태를 알 수 있음 docker logs mysql 위 명령어를 입력하면 로그를 확인할 수 있음 -e 옵션을 제거하면 mysql 실행에 필요..

[2장-2] 도커 엔진

참고서적 : 시작하세요! 도커/쿠버네티스 (6) 도커 볼륨 이미 생성된 이미지는 어떠한 경우로도 변경되지 않음 컨테이너 계층에 원래 이미지에서 변경된 파일 시스템 등을 저장함 이미지와 컨테이너 구조 도커 컨테이너 (쓰기 가능) : 컨테이너 레이어 도커 이미지 (읽기 전용) : mysql:5.7 mysql 컨테이너 삭제 시 컨테이너 계층에 저장돼있던 데이터베이스의 정보도 삭제된다. 컨테이너의 데이터를 영속적 데이터로 활용하려면 볼륨을 활용하면 된다. 볼륨이란 컨테이너가 데이터를 유지하고 저장하는 데 사용되는 데이터 저장영역을 의미함 1. 호스트와 볼륨을 공유하기 : 데이터베이서 컨테이너 삭제를 해도 데이터는 삭제되지 않도록 설정 가능함 # mysql 데이터베이스 컨테이너 생성 docker run -d \ ..

카테고리 없음 2024.02.08

[2장-1] 도커 엔진

참고서적 : 시작하세요! 도커/쿠버네티스 (1) 도커 이미지와 컨테이너 : 도커 엔진에서 사용하는 기본단위는 이미지와 컨테이너 (핵심) 1. 도커 이미지 - 컨테이너를 생성할 때 필요한 요소 - 여러 개의 계층으로 된 바이너리 파일로 존재함 - 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다 - 도커 명령어로 내려받을 수 있어 별도 설치는 필요없음 즉, 이미지는 컨테이너화된 애플리케이션을 실행하는데 필요한 파일, 라이브러리 및 설정과 같은 모든 요소를 포함하는 가볍고 독립적인 패키지임 도커에서 사용하는 이미지 이름 형식 [저장소이름]/[이미지이름]:[태그] ex) alicek106/ubuntu:14.04 저장소 : 이미지가 저장된 저장소. 단, 저장소 이름이 명시되지 않은 이미지는 도커에서 기본으로..

[1장] 도커란?

참고서적 : 시작하세요! 도커/쿠버네티스 1. 도커란? 리눅스 컨테이너에 여러 기능을 추가함으로써 어플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트 리눅스 컨테이너는 애플리케이션과 실행에 필요한 모든 구성 요소를 격리된 환경에서 실행할 수 있도록 하는 가상화 기술 중 하나임 리눅스 컨테이너를 사용하면 각 컴퓨터에 별도로 웹 서버를 설치하지 않고 하나의 이미지를 만들어 각각의 컨테이너로 실행할 수 있다. 도커 엔진 : 컨테이너를 생성하고 관리하는 주체 1.1 가상 머신과 도커 컨테이너 기존 가상화 기술은 하이퍼바이저를 이용해서 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었음 하이퍼바이저는 가상화 기술을 이용하여 하나의 물리적인 컴퓨터에서 여러 개의 가상머신..

[Spring] Chapter 15 ~ 17 : 간단한 웹 어플리케이션의 구조, JSON 응답과 요청처리, 프로필과 프로퍼티 파일

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 간단한 웹 어플리케이션의 구성 요소 (1) 프론트 서블릿 -> 웹 브라우저의 모든 요청을 받는 창구 역할, 요청 분석 후 알맞은 컨트롤러에 전달함 스프링 MVC에서는 DispatcherServle이 역할을 수행함 (2) 컨트롤러 + 뷰 -> 실제 웹 브라우저의 요청을 처리함 클라이언트의 요청을 처리하기 위해 알맞은 기능을 실행하고 그 결봐를 뷰에 전달함 컨트롤러의 주요역할 1) 클라이언트가 요구한 기능 실행 2) 응답 결과를 생성하는데 필요한 모델 생성 3) 응답 결과를 생성할 뷰 선택 컨트롤러는 어플리케이션이 제공하는 기능과 사용자 요청을 연결하는 매개체로서 기능 제공을 위한 로직을 직접 수행하진 않음. 대신 해당 로직을 제공하는 서비스에..

[Spring] MVC 4 : 날짜 값 변환, @Path Variable, 익셉션 처리

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 날짜를 이용한 회원 검색 기능 > selectBtRegdate() 메서드는 REGDATE 값이 두 파라미터로 전달받은 from과 to 사이에 있는 Member 목록을 구한다. package spring; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.List; import javax.sql.DataSource; import org.spring..

[Spring] MVC 3 : 세션, 인터셉터, 쿠키

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 로그인 처리를 위한 코드 준비 로그인 성공 후 인증상태 정보를 세션에 보관할 때 사용할 AutoInfo.java 클래스 package spring; public class AuthInfo { private Long id; private String email; private String name; public AuthInfo(Long id, String email, String name) { this.id = id; this.email = email; this.name = name; } public Long getId() { return id; } public String getEmail() { return email; } public St..

[Spring] MVC 2 : 메시지, 커맨드 객체 검증

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. spring:message 태그로 메시지 출력하기 > 뷰 코드에 문자열이 하드코딩 되어 있으면 언어별로 뷰 코드를 따로 만들어야하는 문제점이 발생한다. 해결방법 > 문자열을 별도 파일에 작성하고 JSP 코드에서 이를 사용하면 된다. 1.문자열을 담은 메시지 파일을 작성 : 자바의 프로퍼티 파일 형식으로 작성 2.메시지 파일에서 값을 읽어오는 MessageSource 빈을 설정 : MvcConfig 설정 클래스에 추가 @Bean public MessageSource messageSource() { ResourceBundleMessageSource ms = new ResourceBundleMessageSource(); ms.setBasenam..

[Spring] MVC 1 : 요청 매핑, 커맨드 객체, 리다이렉트, 폼 태그, 모델 (Chapter 11)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 프로젝트 준비 1) pom.xml 4.0.0 sp5 sp5-chap11 0.0.1-SNAPSHOT war javax.servlet javax.servlet-api 3.1.0 provided javax.servlet.jsp javax.servlet.jsp-api 2.3.2-b02 provided javax.servlet jstl 1.2 org.springframework spring-webmvc 5.0.2.RELEASE org.springframework spring-jdbc 5.0.2.RELEASE org.apache.tomcat tomcat-jdbc 8.5.27 mysql mysql-connector-java 5.1.45 org.slf4j..

[Spring] 스프링 mvc 프레임워크 동작 방식 (Chapter 10)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 스프링 MVC 핵심 구성 요소 DispatcherServlet은 모든 연결을 담당함 1) 웹 브라우저로부터 요청이 들어옴 2) DispatcherServlet은 해당 요청을 처리하기 위한 컨트롤러 객체를 검색함 (직접 조회하는 것이 아니라 HandlerMapping이라는 빈 객체에게 컨트롤러 검색을 요청함) 3) HandlerMapping은 클라이언트의 요청 경로를 이용하여 이를 처리할 컨트롤러 빈 객체를 DispatcherServlet에 전달 4) HandlerAdapter 빈에게 요청 처리를 위임한다. 5) HandlerAdapter는 컨트롤러의 알맞은 메서드를 호출해 요청을 처리하고 결과를 DispatcherServlet에 리턴한다. ..

[Spring] 스프링 mvc 시작하기 (Chapter 9)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 프로젝트 생성 > 스프링을 사용하는 이유는? : 스프링이 지원하는 웹 MVC 프레임워크 때문이다. > 스프링은 자바 기반의 프레임워크로 자바로 작성된 애플리케이션을 효과적으로 개발할 수 있도록 도와주는 도구나 프레임워크이다. 즉 자바로 집을 지을 때 그 집을 좀 더 효율적으로 지을 수 있도록 하는 도구가 바로 스프링! > 이클립스 내에 스프링 프레임워크를 사용하는 과정 1. 프로젝트 생성 2. 스프링 라이브러리 추가 3. 사용자의 요청을 처리하는 컨트롤러 작성 4. 의존성 주입 5. XML 또는 어노테이션 설정 6. 서버에 배포 스프링 프레임워크의 핵심인 의존성 주입, 설정관리, 컨트롤러 등의 기능을 활용하여 웹 애플리케이션을 개발하고 실행..

[Spring] DB 연동 - 2 (Chapter 8)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 트랜잭션 처리란? : 두 개 이상의 쿼리를 한 작업으로 실행해야 할 때 사용하는 것이 바로 트랜잭션이다. 트랜잭션은 여러 쿼리를 논리적으로 하나의 작업으로 묶는 작업이다. 한 트랜잭션으로 묶인 쿼리 중 하나라도 실패할 경우 전체 쿼리를 실패한 것으로 간주하고 DB 상태를 기존 상태로 되돌린다 (롤백) 트랜잭션으로 묶여있는 쿼리가 모두 성공할 경우 commint을 하여 반영한다. Connection conn=null; try { conn= DriverManager.getConnection(jdbcUrl. user, pw); conn.setAutoCommit(false); // 트랜잭션 범위 시작 --- 쿼리 실행 conn.commit(); /..

[Spring] DB 연동 - 1(Chapter 8)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. JDBC란? : Java Database Connectivity, 자바 프로그램이 데이터베이스와 연결되어 데이터를 주고받을 수 있게 해주는 프로그래밍 인터페이스 - 응용프로그램 JDBC DBMS 중간에서 번역해주는 통역자 역할을 진행한다. - JDBC 드라이버는 각 DBMS 회사에서 제공하는 라이브러리 압축파일이다. - JDBC를 사용하면 여러 종류의 데이터베이스에 접속할 수 있으며 데이터베이스에 SQL 쿼리를 실행하고 결과를 처리할 수 있다. JDBC를 사용하여 자바 코드에서 데이터베이스 연결 및 쿼리를 수행할 수 있다. (JDBC를 사용하여 SELECT , DELETE, UPDATE 등의 SQL문을 실행한다) - 스프링의 장점은 트랜잭션..

[Spring] AOP 프로그래밍 (Chapter 7)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 AOP (Aspect Oriented Programming) > 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법이다. 해당 기법은 핵심 기능과 공통 기능의 구현을 분리함으로써 핵심 기능을 구현한 코드의 수정 없이 공통 기능을 적용할 수 있게 만들어준다. (1) 계승을 구하기 위한 클래스 구현 package chap07; public class ImpeCalculator implements Calculator { @Override public long factorial(long num) { long result = 1; for (long i = 1; i

[Spring] 컴포넌트 스캔 + 빈 라이브사이클과 범위 (Chapter 5~6)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 컴포넌트 스캔 : 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능 즉, 설정 클래스에 빈으로 등록하지 않아도 원하는 클래스를 빈으로 등록할 수 있도록 하는 기능이다. @Component는 해당 클래스를 스캔 대상으로 표시하며 클래스에 해당 어노테이션을 붙여줘야만 빈으로 등록해야하는 대상으로 인식된다. // 1 @Component public class MemberListPrinter{ private MemberDao memberDao; private MemberPrinter printer; } // 2 @Component("listPriner") public class MemberListPrinter{ private MemberDao..

[Spring] 의존 자동 주입 (Chapter 4)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 해당 게시글은 초보 개발자를 위한 스프링5 프로그래밍 입문 1. @Autowired , @Resource 의존 자동 주입 기능이 있는 어노테이션 @Autowired : Spring에서 지원하는 어노테이션으로 주입하려고 하는 객체의 타입이 일치하는지 찾고 객체를 자동으로 주입한다. 타입 탐색 일치하는 bean이 없을 경우 @Qualifier 어노테이션을 찾는다. 사용할 수 있는 위치는 멤버변수, setter 메소드 @Resource : Java에서 지원하는 어노테이션이다. name 속성의 이름을 기준으로 탐색 > 없으면 타입 > 타입도 없으면 @Qualifier 어노테이션의 유무를 찾아서 그 어..

[Spring] 스프링 DI (의존, 의존주입, 조립기) - 2

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 해당 게시글은 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 스프링을 이용한 객체 조립과 사용 (1) 스프링 사용 전, 설정 정보 클래스를 작성해야 함 -> 스프링이 어떤 객체를 생성하고 의존을 어떻게 주입할지에 관련하여 정의한 설정 정보들 @Configuration : 스프링 설정 클래스를 의미, 해당 어노테이션을 붙여야 스프링 설정 클래스로 인식함 @Bean : 해당 메서드가 생성한 객체를 스프링 빈이라고 설정함 예를 들어 memberDao() 메서드를 이용해서 생성한 빈 객체는 memberDao라는 이름으로 스프링에 등록된다. @Configuration public class AppCtx{ @Bean public MemberDao mem..

[Spring] 스프링 DI (의존, 의존주입, 조립기) - 1

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 해당 게시글은 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 의존이란? A라는 클래스 내에서 B라는 클래스의 메서드를 실행할 때 A 클래스가 B 클래스에 의존한다고 한다. 즉, 의존이란 변경에 의해 영향을 받는 관계를 의미함 의존 객체 생성하는 방식 (1) 직접 의존 객체를 생성 > A 클래스 내에 B 클래스의 객체를 직접 new 연산자를 통해 생성하는 방식 public class MemberRegisterService { // 의존 객체를 직접 생성 private MemberDao memberDao = new MemberDao(); } // MemberRegisterService 객체를 생성하는 순간에 // MemberDao 객체도 생성된다..

[Spring] 스프링 시작하기 (빌드 관리 도구, 메이븐, 그래들, 빈 객체, 컨테이너)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 해당 게시글은 초보 개발자를 위한 스프링5 프로그래밍 입문 chapter 2 . 스프링 시작하기 내용을 기반으로 작성되었습니다. 1.빌드 관리 도구 : 메이븐과 그래들은 프로젝트 빌드 관리 도구임. 빌드란? > 소스 코드(java 파일)를 실제 실행 가능한 형식으로 만드는 작업임 java 파일을 컴파일해서 class 파일로 변환하고, resource를 class 파일에서 참조할 수 있는 적절한 위치에 옮기는 등의 과정임 Build는 Compile + 그 외 작업 Run은 Build +실행 https://eboong.tistory.com/645 [Java] 자바 프로그램 실행 과정 및 동작 원리 (feat. JVM) 1. 컴파일이란? (Compil..

Spring Boot 소셜 로그인 구현 (3) | feat. kakaoTalk

https://eboong.tistory.com/653 SpringBoot 소셜 로그인 구현 (1) | feat. KakaoTalk https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 1. Kakao De eboong.tistory.com https://eboong.tistory.com/654 Spring Boot 소셜 로그인 구현 (2) | feat. kakaoTalk 1. 개인정보 가져오는 프로세스 진행 kauth.kakao.com/oauth/authorize?client_id={REST_AP..

[SpringBoot] Lombok : Cannot find method 'value'

카카오 소셜 로그인 기능을 구현하면서 코드 리팩토링보다 기능이 돌아가는 게 우선이었기에 중요한 clinet id, secret key 등을 클래스 파일에 하드코딩했다. 이제 기능이 잘 돌아가는 걸 확인하고 중요한 보안 정보들은 application.yml에 옮기고자 클래스 내용을 위처럼 변경했다. 그런데 value 인식을 제대로 진행하지 못하는 에러가 발생했고 서칭해본 결과 import가 잘못 되어 발생한 에러였다. 현재는 Lombok.value로 선언되어 있으나 아래와 같이 선언이 되어있어야 에러문구가 뜨지 않는다. import org.springframework.beans.factory.annotation.Value;; (참고 자료) https://velog.io/@dabeen-jung/cannot-..

[Github] git commit 내역 및 변경사항 기록 github에서 안 나타나도록 하는 법 (feat. rebase, reset, revert)

[git commit 내역 및 변경사항 기록, github에서 안 나타나도록 하기] 1. git log > 내가 돌아가고자 하는 커밋 아이디는 6efc21b~~ > 돌아가기 바로 이전의 아이디를 rebase시 사용할 것이다. 2. git status > 변경사항 있는지 확인 > 충돌난 부분이 있으면 충돌난 부분 제거 후 저장 > git add 파일명 > git commit -m "메세지" 3. git rebase -i 커밋아이디 (git rebase -i (돌아가고자 하는 커밋의 직전 커밋) > i (입력모드) > pick으로 되어있는 커밋들중에 drop 해야하는 커밋은 pick -> drop으로 변경 > esc > :wq 4. git rebase --continue 5. git push -f 6. 깃허..

카테고리 없음 2023.07.09

[Github] 원격 저장소에 잘못 올린 파일 삭제 & 커밋 내역 삭제

1. 잘못 올린 파일 삭제 KakaoTokenJsonData를 삭제하고 싶은데, 로컬 저장소는 그대로 냅두고 원격 저장소에 올라가있는 파일만 삭제하고자 한다. 터미널에서 아래와 같이 입력해주면 삭제된다. git rm --cached -r 경로/파일명.확장자 이때 경로는 Backend/src/main/java/com/dailybaekjoon/dto 으로 입력해줘야한다. 그리고 git commit -am "kakaoTokenJsonData 파일 삭제" 깃에 커밋 및 푸쉬하면 원격저장소에서 파일이 삭제된 걸 확인할 수 있다. Commit 내역 삭제 > git log 명령어 입력 후 되돌리고자 하는 커밋 시점 ID 찾기 (참고 자료) https://gmlwjd9405.github.io/2018/05/17/git..

[인텔리제이] 주석 색상 변경 및 커스텀마이징 (feat. TODO, FIXME, NOTE ... )

주석을 커스텀마이징하여 한 눈에 알아보기 쉽도록 설정하는 방법을 정리하였다. (추후 나중에 참고하기 위해) 이렇게 따로 정리해두지 않으면 또 나중에 똑같이 방법 찾느라 시간을 허비하게 돼서 이를 방지하고자 글을 작성함. TODO, FIXME는 기본으로 설정이 되어있고 NOTE만 따로 더 추가했다. Patterns 부분에서 원하는 주석 항목을 더블크릭하여 Use color scheme ~ 체크를 해제한 후에 Foreground에서 원하는 색상을 설정한다 그리고 Filters에 방금 만든 항목을 추가해준다 사용법은 아래와 같다.