분류 전체보기 159

컨테이너들 나열하기

이미지를 이용해서 컨테이너를 생성하고 실행할 때 실제로 어떠한 것이 실행되고 있는지 보고싶을 때 사용하는 명령어 docker ps현재는 아무것도 실행 중인 컨테이너가 없기 때문에 이렇게 아무것도 없이 나온다.컨테이너를 실행 시키고,다시 docker ps를 해보면, 이렇게 실행 중인 컨테이너를 확인할 수 있다. CONTAINER ID : 컨테이너의 고유한 아이디 해쉬값으로 실제로는 더욱 길지만 일부분만 표출IMAGE : 컨테이너 생성 시 사용한 도커 이미지COMMAND : 컨테이너 시작 시 실행될 명령어로 대부분 이미지에 내장되어 있으므로 별도 설정이 필요 없음CREATED : 컨테이너가 생성된 시간STATUS : 컨테이너의 상태로 실행 중이면 Up, 종료는 Exited, 일시정지 PausePORTS : ..

Docker 2024.05.12

도커 이미지 내부 파일 구조 보기

도커 이미지 ex) docker run hello-world작동 순서도커 클라이언트에 명령어 입력 후 도커 서버로 보냄도커 서버에서 컨테이너를 위한 이미지가 이미 캐시되어 있는지 확인없으면 도커 허브에서 다운 받아오고 있으면 이미 가지고 있는 이미지로 컨테이너 생성이미지로 컨테이너 생성하는 순서먼저 파일 스냅샷 되어있는 것을 컨테이너의 하드 디스크 부분에 올린다.시작 커맨드를 이용하여 어플리케이션을 실행한다.docker run alpine lsAlpine 이미지를 이용해서 컨테이너를 생성생성할 때 Alpine 이미지 안에 들어있던 파일 스냅샷들 ( bin, dev, etc 등등 )이 컨테이너 안에 있는 하드 디스크로 다운로드 됨이미지 이름 뒤에 다른 명령어를 더 붙여서 원래 이미지 안에 들어있는 기본 커..

Docker 2024.05.11

도커와 기존 가상화 기술과의 차이

도커와 기존의 가상화 기술과의 차이를 통해 컨테이너를 이해해보도록 한다.가상화 기술이 나오기 전에는, 한 대의 서버를 하나의 용도로만 사용하고 남는 서버의 공간은 그대로 방치하였다.하나의 서버에 하나의 운영체제, 하나의 프로그램만을 운영하여 안정적이지만 매우 비효율적으로 사용하였다.하이버바이저 기반의 가상화의 등장으로,논리적으로 공간을 분할하여 VM이라는 독립적인 가상 환경의 서버를 이용할 수 있게 되었다.하이퍼바이저는 호스트시스템에서 다수의 게스트 OS를 구동할 수 있게 하는 소프트웨어, 그리고 하드웨어를 가상화하면서 하드 웨어와 각각의 VM을 모니터링하는 중간관리자이다. 따라서 비효율적인 부분을 보완하고, 다수의 게스트 OS도 구동이 가능해졌다.하이퍼 바이저에 대해 살펴보면, 네이티브 하이퍼바이저와 ..

Docker 2024.05.11

도커의 사용 흐름

항상 도커를 사용할 때는,먼저 도커 CLI에 커맨드를 입력한다.도커 서버 ( 도커 Daemon)가 그 커맨드를 받아서 그것에 따라 이미지를 생성하든 컨테이너를 실행하든 모든 작업을 하게 된다.실제로 CLI에서 커맨드를 입력해보기도커 클라이언트에 커맨드를 입력하여 클라이언트에서 도커 서버로 요청을 보낸다.서버에서 hello-world라는 이미지가 이미 로컬에 cache 되어 있는지 확인한다.현재는 없기 대문에 Unabled to find image ‘hello-word: latest ‘ locally라는 문구가 표시된다.그러면 Docker Hub라는 이미지가 저장되어 있는 곳에 가서 그 이미지를 가져와서 로컬에 cache로 보관한다. ( Pulling from ~ )그 후 이제 이미지가 있으니 그 이미지를..

Docker 2024.05.11

도커 이미지와 도커 컨테이너의 정의

컨테이너는 코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위이다.⇒ 현재까지 여러 가지 방향으로 컨테이너를 정의할 때 간단하고 편리하게 프로그램을 실행시켜주는 것으로 정의를 내리고 있다.컨테이너 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 설정과 같은 응용프로그램을 실행하는데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지이다.컨테이너는 이미지의 인스턴스이다. 도커 이미지는 프로그램을 실행하는데 필요한 설정이나 종속성을 가지고 있으며, 도커 이미지를 이용해서 컨테이너를 생성하며 도커 컨테이너를 이용하여 프로그램을 실행한다.또한 컨테이너 이미지는 런타임에 컨테이너가 되고..

Docker 2024.05.11

Docker를 쓰는 이유와 도커란 무엇인지

도커를 쓰는 이유는 어떠한 프로그램을 다운로드하는 과정을 간단하게 만들기 위해서이다. 가지고 있는 서버, 패키지 버전, 운영체제 등 다양한 이유에 따라 프로그램을 설치하는 과정 중에 많은 에러들이 발생하게 된다. 즉, 프로그램을 사용하기 위해 각각의 인스톨러를 다운 받고 설치 후 사용 !인스톨러는 많은 것에 영향을 받게 됨 ( 패키지의 버전, 운영체제 등 )각각에 맞는 인스톨러를 사용해야하는데 하나하나 맞추기 힘들고 설치가 까다로워짐 → 이러한 것을 단순하게 만드는 것이 도커 !도커가 없이도 프로그램을 설치하고 어플리케이션을 만드는데 지장이 없지만 설치할 때 훨씬 간편하다.그래서 wget을 받은 후 다시 Redis를 받아야 함 → 이런 식으로 어떠한 특정 프로그램을 받을 때 거기에 맞는 부수적인 것들도 ..

Docker 2024.05.11

NoSQL

- RDBS  : 새로운 기능을 추가하기 위해 컬럼 추가 => 스키마 변경이 필요기능이 계속 늘어날 때마다 컬럼이 추가되고, 스키마 변경이 필요한데, 사용량이 많아질 경우 컬럼을 계속 추가하는 것은 비효율적이고, 위험한 작업 ( 서버 부담 ) 유연한 확장성이 부족하고, 중복 제거를 위해 정규화를 진행하며 전체 데이터를 조회하고 싶을 때 JOIN을 해야 함 ( 응답시간이 길어짐 )RDB는 기본적으로 한 대의 컴퓨터에 저장 2000년대 초/중반 SNS의 이용 증가로 트래픽 증가, 비정형 데이터의 증가 ( 예상할 수 없는 데이터 )그러면서 NoSQL이 등장하게 됨. Not Only SQLNoSQL의 특징1. flexible schema : application 레벨에서 스키마 관리가 필요db. createCo..

공부할 것 ! 2024.05.08

문자열 포함 여부 확인 ( contains , containsIgnoreCase )

1. contains : 'String' 클래스의 메서드로 대상 문자열에 특정 문자열이 포함되어 있는지를 검사                     대소문자를 구별하여, 정확히 일치하는 문자열만을 찾음2. containsIgnoreCase : 대소문자에 상관 없이 특정 문자열이 포함되어있는지 확인 가능contains를 사용하여 대소문자 구별 없이 문자열을 검사하고 싶다면, 문자열을 모두 소문자나 대문자로 변환한 다음 contains 메서드를 사용한다.

Java 2024.05.01

QueryDSL의 주요 기능 ( BooleanExpression, BooleanBuilder, OrderSpecifier)

1. BooleanExpression 과 BooleanBuilder 위 두 기능은 QueryDSL에서 조건문을 구성할 때 사용한다. 1-1. BooleanExpression BooleanExpression은 불변 객체로 한 번 생성되면 그 상태가 변경되지 않는다. BooleanExpression은 개별 조건을 표현하며, 이러한 조건들을 연결하여 복잡한 쿼리를 구성할 수 있다. 비교, 논리, 연산, 수학적 조건 등 다양한 형태의 조건을 나타낼 수 있고, 새로운 BooleanExpression를 반환한다. 예시 BooleanExpression condition1 = qProduct.price.gt(100); BooleanExpression condition2 = qProduct.category.eq("Boo..

공부할 것 ! 2024.04.21

사용자 정보 저장 및 사용 방법 ( 쿠키, 세션, 스프링시큐리티 )

1. 쿠키 저장 방법 쿠키는 클라이언트측에 저장되는 가장 작은 데이터 조각을 말한다. 서버는 HTTP 헤더를 통해 쿠키를 클라이언트에 전송하고, 이후 클라이언트는 모든 HTTP요청에 이 쿠키 정보를 포함시켜 다시 서버로 전송한다. 이를 통해 서버는 사용자를 식별하고 상태 정보를 유지할 수 있다. 쿠키 생성 및 설정 예시 Cookie cookie = new Cookie("userId", "user123"); cookie.setMaxAge(60*60*24*7); // 1주일 동안 유효 response.addCookie(cookie); // 응답에 쿠키 추가 2. 세션 저장 방법 세션은 서버 측에서 관리되는 저장공간이다. 서버는 각 클라이언트에 대해 세션ID를 생성하여 쿠키를 통해 클라이언트에 전달한다. 클라..

공부할 것 ! 2024.04.21

영화 예매 사이트 (MoVieCinema) - 마이페이지 : 나의 예매 내역 조회 항목 ( 컬렉션과 스트림 )

컨트롤러 - 페이징 처리도 같이 해준다 ! 서비스 public Page getMyTickets(Long memberId, Pageable pageable, Model model) { Page myTicketList = ticketRepository.findAllByMemberId(memberId, pageable); int nowPage = myTicketList.getPageable().getPageNumber(); int totalPages = myTicketList.getTotalPages(); int pageGroupSize = 5; int currentPageGroup = nowPage / pageGroupSize; int startPage = currentPageGroup * pageGroup..

프로젝트 2024.04.14

영화 예매 사이트 (MoVieCinema) - 유효성 검사 코드 리팩토링

회원 가입 시 아이디, 비밀번호, 이름, 이메일, 전화번호에 대한 유효성 검사 코드를 간결하게 하고 싶다. 기존 유효성 검사 코드 $(() => { const $idInput = $("#username"); const getIdCheck = /^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z0-9]{5,10}$/; const $checkIdResult = $("#checkIdResult"); const $enrollFormSubmit = $("#enrollForm :submit"); $idInput.focus(); $idInput.on('blur keyup', function() { const id = $idInput.val(); let isValidId = false; if (event.type ..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 마이페이지 : 나의 리뷰 조회 항목

나의 리뷰 조회는 로그인한 사용자의 아이디를 찾아 리뷰의 작성자와 동일한 리뷰들을 모두 조회해 오도록 했다. 컨트롤러 서비스에 파라미터로 로그인 유저의 아이디와, 페이징 처리를 위한, pageable, model을 넘겨주었다. 서비스 리파지터리 ⇒ 리뷰 테이블의 reviewWriter와 username이 같은 리뷰들을 조회한다. myReviews.jsp 나의 영화 후기 목록 ${myReview.reviewId} ${myReview.reviewWriter} ★ ★ ${myReview.reviewContent} ${fn:substringBefore(myReview.createReviewDate.toString(), 'T')} 이전 ${page + 1} 다음 마이페이지에서 리뷰 보기를 누르면 내가 작성한 리뷰..

프로젝트 2024.04.13