본문 바로가기

전체 글186

[java] [PCCP 기출문제] 1번 / 동영상 재생기 풀이1. 모든 시간 값들을 숫자로 변환한다- 분 단위는 * 60, 초 단위는 그대로 정수값으로 변환해 더한다2. next, prev, skip 함수를 만들어준다- int 형은 void를 사용해서 값을 바꿀 수 없으므로 int 형으로 반환하는 함수를 만들어 현재 시간을 수정한다- next는 10초 후에 영상 밖으로 넘어가면 비디오 시간을, 아니면 +10 을 반환- prev는 10초 전에 영상 밖으로 넘어가면 0을, 아니면 -10을 반환3. 오프닝 시간 안에 있을 경우에는 무조건 skip하므로, 초기에 skip을 적용해준다- skip을 한 번 적용한 다음 명령어를 순회해야 한다4. 명령어를 순회한다- next, prev에 따라 현재 시간을 조정하고- 다음 명령어로 넘어가기 전 skip을 한 번 확인한다5. .. 2024. 9. 25.
[java] [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 풀이1. level의 최댓값과 최솟값을 설정한다- max_level = Array.stream(diffs).max().getAsInt();- min_level = 1;   2. 퍼즐을 풀이하며 누적된 시간을 cum_time에 저장한다. 초기값은 0 3.이진탐색을 사용해 범위를 반씩 좁혀가며 해결한다- binarySearch(난이도, 소요시간, 레벨)- cum_time > limit 이면 min_level을 중위값으로 높인다- cum_time 회고result의 범위가 너무 넓은 경우에는 이진탐색을 해야 엄청난 양의 계산을 피할 수 있다코드 (접은 글)더보기import java.util.*;class Solution { public int solution(int[] diffs, int[] times, .. 2024. 9. 16.
[java] 프로그래머스스쿨 혼자서 하는 틱택토 풀이1. O의 개수를 O_num, X의 개수를 X_num으로 선언한다. 초기값은 02. 이중 배열 map에 틱택토를 그린다- 그려가며 각 문자의 수를 기록한다3. 존재할 수 없는 경우의 수를 기록한다 - O가 X보다 적은 경우 (O가 선공이므로, O가 더 적은 경우는 존재할 수 없다)- O가 X보다 2개 이상 많은 경우 (번갈아가면서 해야하므로 최대 1만 차이날 수 있다)- O와 X가 동일하면서, O가 세 개 연속 존재하는 경우 (O가 이미 이겼음에도 이미 경기를 이어갔다는 것을 의미)- O와 X보다 한 개 더 많으면서, X가 세 개 연속 존재하는 경우 (X가 이미 이겼음에도 이미 경기를 이어갔다는 것을 의미)4. 위의 경우 중 하나에 걸리면 return 0, 아니면 return 1회고이런 문제는 머리를.. 2024. 9. 16.
[github] work-flow 작성, github actions cicd 배포시 겪은 오류들과 해결 💣 도커 이미지 생성 오류- 문제 상황도커 이미지를 생성하는 과정에서 자꾸 오류가 발생했다.생성하는 도커 이미지의 이름을 'ghcr.io/${{github.actor}}/github-actions-auto'로 설정했었다 - 문제 원인 / 해결${{github.actor}}를 사용한다는 것은 깃허브 사용자 이름을 넣는다는 것인데, 내 닉네임이 'Sangddong'이었다도커 이미지 이름에 대문자는 사용이 불가능했다...결국 도커 이미지 이름을 'ghcr.io/sangddong/github-actions-auto'으로 수정하며 해결했다💣 끝 없는 Waiting for a runner to pick up this job...- 문제 상황deploy 단계에서 로컬에서 ec2 인스턴스에 접근해 ./run.sh .. 2024. 8. 21.
[AWS EC2, Github Action, Docker, Node] CICD 구축하기(마지막) workflow 작성하기 차근차근 따라하면 할 수 있습니다 화이팅● 단계 링크CICD 구축하기(1) -  Dockerfile 만들기CICD 구축하기(2) - EC2 인스턴스 생성하기, 세팅하기CICD 구축하기(3) - github repository 세팅▶ CICD 구축하기(4) - workflow 작성하기목표- workflow 이해하고 작성하기- 배포 확인하기 목차1. workflow를 위한 yml 파일 만들기2. workflow 작성하기- test 부분 작성하기- docker 부분 작성하기- deploy 부분 작성하기[1. workflow를 위한 yml 파일 만들기]1. yml 파일 만들기- 리포지토리 → Actions에 들어간다- 리포지토리에 따라 적절한 환경을 추천해주기도 하고 필요한 환경을 검색해서 갖다 쓸 수도 있다-.. 2024. 8. 7.
[AWS EC2, Github Action, Docker, Node] CICD 구축하기(3) - github repository 세팅 차근차근 따라하면 할 수 있습니다 화이팅● 단계 링크 CICD 구축하기(1) - Dockerfile 만들기 CICD 구축하기(2) - EC2 인스턴스 생성하기, 세팅하기 ▶ CICD 구축하기(3) - github repository 세팅 CICD 구축하기(4) - workflow 작성하기목표 - 깃허브와 EC2 인스턴스를 연결한다 - 깃허브 시크릿에 환경변수를 설정한다 목차 1. 깃허브와 EC2 인스턴스 연결하기 2. 깃허브 시크릿에 환경변수 추가하기[1. 깃허브와 EC2 인스턴스 연결하기]1. 로컬에서 인스턴스에 접속한 터미널 준비- 로컬 접속 시 필요한 정보 : 퍼블릭 IPv4 주소, 키 페어 위치와 이름 - 퍼블릭 IPv4 주소 : 인스턴스 ID를 눌러 세부 정보를 확인하면 바로 볼 수 있다- 키 .. 2024. 8. 7.
[AWS EC2, Github Action, Docker, Node] CICD 배포하기(2) - EC2 인스턴스 생성하기, 세팅하기 차근차근 따라하면 할 수 있습니다 화이팅● 단계 링크 CICD 구축하기(1) - Dockerfile 만들기 ▶ CICD 구축하기(2) - EC2 인스턴스 생성하기, 세팅하기 CICD 구축하기(3) - github repository 세팅 CICD 구축하기(4) - workflow 작성하기목표 - EC2 인스턴스를 생성한다 - EC2 인스턴스에 도커를 설치한다 목차 1. EC2 인스턴스 생성하기 2. 로컬에서 EC2 인스턴스 관리하기[1. EC2 인스턴스 생성하기]1. EC2 인스턴스 시작하기- AWS 사이트 접속 → 검색창에 EC2 검색해 이동 → 인스턴스 시작 클릭- 이름 설정 (자유) 필자는 my-web으로 했다 - 애플리케이션 및 OS이미지 : ubuntu 선택 (linux보다 ubuntu가 더 레.. 2024. 8. 7.
[AWS EC2, Github Action, Docker, Node] CICD 배포하기(1) - Dockerfile 만들기 차근차근 따라하면 할 수 있습니다 화이팅● 단계 링크▶ CICD 구축하기(1) -  Dockerfile 만들기CICD 구축하기(2) - EC2 인스턴스 생성하기, 세팅하기CICD 구축하기(3) - github repository 세팅CICD 구축하기(4) - workflow 작성하기목표- Dockerfile을 작성한다- 이미지와 컨테이너를 생성한다 목차1. Dockerfile 작성2. 이미지, 컨테이너 만들기3. 리포지토리에 푸시하기[1. Dockerfile 작성]1. Dockerfile, .dockerignore- 도커파일의 기본 문법은 https://sangddongvoid.tistory.com/214 에서 확인 가능하다- .dockerignore파일에 node_modules 기재- 아래 사진과 같이.. 2024. 8. 6.
[Docker] 도커파일 작성법 (Node.js) [1. Dockerfile]1. 도커파일이란- 도커에서 이미지를 생성하기 위해 작성하는 문서- 'Dockerfile'이라는 이름으로 도커파일을 작성하고 명령어를 실행하면 이미지가 빌드된다- 다른 이름으로 파일을 생성할 경우 파일명을 명령어에 직접 입력해줘야 함docker build [옵션] [도커파일 경로] 2. 도커파일 주요 문법1) FROM- 애플리케이션을 빌드하는 단계- 베이스 이미지 지정, 필수적인 요소- 하나의 단계, 레이어를 생성하는 요소- AS를 통해 참조 이름을 설정할 수 있음2) WORKDIR- 작업 디렉토리 지정, 파일 위치를 명확히 함3) RUN- 새로운 이미지 레이어를 생성 후 실행, 커밋함4) COPY- 필요한 파일을 컨테이너로 복사6) EXPOSE- 애플리케이션이 실행될 포트 입.. 2024. 8. 2.
[Docker] 도커의 기본적인 사용법, 실습 [1. 컨테이너의 기본 명령어]1. 명령어와 대상docker 커맨드 대상- 컨테이너를 다루는 모든 명령은 'docker'로 시작한다- 커맨드는 상위커맨드와 하위커맨드로 나뉜다- 상위커맨드 : '무엇을'- 하위커맨드 : '어떻게'- 대상 : 구체적인 이미지나 컨테이너의 이름이 들어감- Ex) 이름이 penguin인 이미지를 컨테이너로 실행하기 위한 명령어docker container run penguin 2. 옵션과 인자docker 상위커맨드 하위커맨드 (옵션) 대상 (인자)- 옵션 : 커맨드에 세세한 설정을 지정하는 용도로 쓰임- 인자 : 대상에 전달할 값을 지정 [2. 대표적인 명령어]1. 주요 옵션 옵션 형식내용--name 컨테이너_이름컨테이너 이름을 지정함-p 호스트_포트번호:컨테이너_포트번호포트번.. 2024. 7. 25.
[Docker] 도커의 동작 원리 [1. 도커의 구조] 1. 운영체제- 소프트웨어나 프로그램의 명령을 하드웨어에 전달하는 역할- kernel과 그 외의 부분으로 이루어짐- kernel : 하드웨어를 다룸- 그 외의 부분 : 프로그램의 명령 내용을 kernel에 전달 2. 컨테이너 속 리눅스 비슷한 무언가- 컨테이너는 완전히 독립된 공간이므로, 컨테이너 속 프로그램의 명령을 전달받을 수 없음- 컨테이너 속 명령을 전달받기 위해 kernel을 제외한 운영체제의 '그 외 부분'을 컨테이너 안에 넣고, kernel은 빌려 사용- 이로 인해 컨테이너의 가벼움을 유지할 수 있음 → 컨테이너의 정보를 내보내기가 쉬워짐 → 컨테이너를 다른 곳에서 복원하기가 쉬워짐 [2. 도커 허브와 이미지, 컨테이너]1. 이미지- 이미지는 컨테이너의 설계도 역할이다-.. 2024. 7. 25.
[Docker] 도커 기초 [1. Docker] 1. 도커란?- 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼- 도커는 데이터 또는 프로그램을 격리시키는 기능을 제공한다- 도커를 통해 애플리케이션을 관리하는 방식과 동일한 방법으로 인프라를 관리할 수 있다- 리눅스 운영체제에서만 동작 (리눅스 운영체제가 동작하는 것을 전제로 함) ※ 프로그램을 독립된 환경에 격리시키는 이유 : 하나의 프로그램은 여러개의 프로그램으로 이루어진 경우가 많다. 어떤 프로그램C기 여러개의 프로그램(A, B)에 연동되어 있는 경우, 하나의 프로그램B만을 위해 수정된다면 다른 프로그램A가 작동하지 않을 가능성이 크다. 이런 문제를 방지하기 위해 [프로그램A + 프로그램], [프로그램B + 수정된 프로그램]과 같이 나누어 독립적으로.. 2024. 7. 24.
[AWS] 인스턴스 생성하기 및 배포하기 * 차근차근 따라하면 배포할 수 있습니다 화이팅* 1. aws 홈에 접속 후 좌측 상단 메뉴에서 서비스 탭 클릭, EC2 선택 / 또는 검색창에 EC2 입력 2. 인스턴스 시작 선택 3. 인스턴스 설정 시작(1) 이름 설정 (원하는 이름으로) (2) 애플리케이션 선택 - 필자는 Amazon Linux 썼음 - 프리티어 사용 가능한지 꼭!!! 확인 (3) 인스턴스 유형 확인 - 프리티어 사용 가능인지 꼭!! 확인 (4) 키 페어 선택 또는 생성- 키 페어 생성 시 ↓ - '새 키페어 생성' 선택 후 - 이름 입력 - 키페어 유형 : RSA 선택 - 프라이빗 키 형식 : .pem 선택 - 키페어 생성 누르기 → 바로 다운로드됨, Downloads 폴더에서 확인 가능 (5)네트워크 설정 - 퍼블릭 IP 자동 .. 2024. 5. 28.
네트워크 기본 지식 전산 기본▶ OSI 7계층에 대해 설명해주세요.더보기OSI 7계층이란 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다. 단계별로 나눔으로써 통신이 일어나는 과정을 단계별로 파악할 수 있고 이상이 생기면 이상이 생긴 특정 단계만 고칠 수 있습니다. 물리 계층, 데이터링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층 그리고 응용 계층으로 나뉩니다. 1계층은 물리 계층(Phsical Layer)으로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송합니다. 통신 단위는 bit이며 1과 0으로 나타납니다. 대표적인 장비로는 통신 케이블, 리피터, 허브 등이 있습니다. 2계층은 데이터 링크 계층(DataLink Layer)으로 물리계층을 총해 송수신되는 정보의 오.. 2024. 5. 8.
[TIL] 유데미X사람인 취업 부트캠프 1기 9주차 [2월 5일] 1. 타입스크립트 - 자바스크립트의 모든 기능을 포함하는 상위 집합 - 코드에 명시적으로 타입을 지정할 수 있게 해줌 - 정적 타입 검사 : 타입스크립트는 컴파일 시점에 타입 검사를 받아 실행 전에 오류를 발견하고 수정 가능 - 객체 지향 프로그래밍과 인터페이스 제공 - 예시코드 function greet(name: string): string { return `hello, ${name}!`; } const name = "World"; console.log(greet(name)); 2. 타이스크립트 예시 코드 (1) Counter - 배열은 타입[]으로 설정할 수 있고 Array으로 설정할 수 있다 - useState를 사용할 때 value의 값을 0으로 설정하나, undefined일 수 .. 2024. 2. 25.
[TIL] 유데미X사람인 취업 부트캠프 36일차 / redux [1. 오늘 배운 것] 1. contexts (1) Header - export좀 잊지 말자 제발 흑흑 import React from "react"; function Header() { return ( ); } export default Header; (2) Footer import React from "react"; function Footer() { return ( ); } export default Footer; (3) Layout import React from "react"; import Header fron "./Header"; import Footer from "./Footer"; function Layout({ children }) { console.log("리렌더 Layout"); re.. 2024. 2. 19.
[TIL] 유데미X사람인 취업 부트캠프 1기 10주차 [2월 14일] 1. node.ts 환경 세팅 (1) .gitignore 파일 만들기 - 터미널에 입력 git init touch .gitignore - .gitignore에 작성 (2) npm 환경 세팅 npm init -y//package.json 파일 생성 npm i//package-lock.json 파일 생성 npm i -D typescript ts-node @types/node//node_modules 폴더 생성 (3) 실행할 파일을 대충 만들어주기 : root에 src폴더 생성 & src폴더에 main.ts 생성, 콘솔로그로 숫자 암거나 찍어주기 ㅋ (4) tsconfig.json 파일 만들기 - 터미널에 입력 npx tsc --init//tsconfig.json 생성 - tsconfig.ts.. 2024. 2. 14.
[TIL] 유데미X사람인 취업 부트캠프 35일차 / netflex 만들기 [1. 오늘 배운 것] 1. profile.context.js - intialValue로 nickname과 likedMovies배열의 초기값 설정, updateNickname과 setLikedMovies를 빈 함수로 설정 - createContext로 ProfileContext를 생성하여 전역적으로 관리 - useContext를 활용해 다른 컴포넌트에서 접근할 수 있도록 함 const initialValue = { nickname: "", updateNickname: () => {}, likedMovies: [], setLikedMovies: () => {}, }; const ProfileContext = createContext(initialValue); export const useProfile = .. 2024. 2. 11.
[TIL] 유데미X사람인 취업 부트캠프 1기 34일차 / netflex만들기 [1. 오늘 배운 것] 1. movies.api.js - .env.template에서 엑세스 토큰을 받아온다 토큰은 비밀이다 - options객체로 method, headers를 정의한다 - accept : 응답받을 데이터 형식을 json으로 지정 - Authorization : API요청에 대한 인증 정보 제공 const TMDB_ACCESS_TOKEN = process.env.REACT_APP_TMDB_ACCESS_TOKEN; const options = { method: "GET", headers: { accept: "application/json", Authorization: `Bearer ${TMDB_ACCESS_TOKEN}`, }, }; - API받아오기 - 비동기 처리를 위해 async 함수.. 2024. 2. 11.
[TIL] 유데미X사람인 취업 부트캠프 1기 33일차 / 다양한 스타일링, useEffect, netflex [1. 오늘 배운 것] 1. styled - React 애플리케이션에서 컴포넌트와 스타일을 함께 정의하고 사용할 수 있게 해주는 라이브러리 - Styled Components를 사용하면 CSS 스타일을 작성할 때 일반적인 CSS 클래스 이름을 사용하는 대신에 React 컴포넌트를 확장하여 스타일을 지정할 수 있음 - 1 : styled 객체를 사용하여 스타일이 적용된 컴포넌트를 생성 - 2 : 템플릿 리터럴 문법을 사용하여 CSS를 작성하고, 필요한 경우에는 동적으로 속성을 전달 - 3 : 생성된 스타일이 적용된 컴포넌트를 JSX에서 사용 import React from "react"; import styled from "styled-components"; const fruits = [ {name: "사.. 2024. 2. 9.
[TIL] 유데미X사람인 취업 부트캠프 1기 32일차 / react 기초 [1. 오늘 배운 것] 1, 터미널(CLI)환경 - 컴퓨터와 대화하는 텍스트 기반 인터페이스 2. 터미널 명령어 - pwd : 현재 작업중인 디렉토리 경로 표현, 예시) pwd - cd : 현재 작업 디렉토리를 변경할 때 사용, 예시) cd Documents - mkdir : 새 디렉토리 생성, 예시) mkdir Project - ls : 현재 디렉토리의 파일과 폴더를 보여줌, 예시 ) ls - touch : 새로운 파일 생성, 예시) rm hello.js - mv : .파일/디렉터리 이동 또는 이름 바꾸기 3. Node.js와 npm - Node.js : Javascript를 브라우저 밖에서 실행할 수 있도록 해주는 환경, 서버사이드 개발, 빌드 도구, 스크립트 실행 등 다양한 곳에서 사용 - npm .. 2024. 2. 1.
[TIL] 유데미 X 사람인 부트캠프 31일차 / html, css, js [1. 오늘 배운 것] 오늘은 강사님께서 처음 오셔서, html css 그리고 javascript를 복습하는 시간을 가졌다. 1. 웹 개발 - 프로토콜 : 일종의 통신 규약, 웹이라는 정보 공유 체계 내에서 정보를 주고 받으려면 웹이 정한 통신 규약을 따라야 함 - http : 웹에서 정보를 주고 받을 때 사용하는 프로토콜, 클라이언트와 서버 사이에 이루어지는 요청과 응답에 대한 프로토콜 2. html - 여는 태그와 닫는 태그로 구성 - 콘텐츠: 텍스트 또는 요소 콘텐츠 예시) 이건 문단이에요 - 속성명과 속성값 : 태그 내에 필요 - heading : h1, h2, h3,,, 숫자가 커질수록 글자 작아짐 - ul, ol 등 목록 태그 (내부: li) - a : 링크 태그 - input 태그 : typ.. 2024. 1. 30.
[DB] 트랜잭션, ACID [1. 트랜잭션] 1. 트랜잭션 (Transaction) - 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 - 여러 개의 쿼리를 하나로 묶는 작업을 뜻함 (데이터베이스에 접근하는 방식이 쿼리이므로) 2. 트랜잭션의 특징 - 원자성, 일관성, 독립성, 지속성 - 특징을 한 번에 ACID라고 부름 - 하나의 트랜잭션은 커밋(commit, 저장)되거나 롤백(rolll-back, 철회)될 수 있음 3. 커밋과 롤백 - 커밋 : 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어, 트랜잭션 단위로 수행되며 영구적으로 저장됨 - 롤백 : 트랜잭션으로 처리한 하나의 과정을 발생 전으로 돌리는 것, 즉 취소 - 커밋과 롤백으로 데이터의 무결성을 지킬 수 있음 더보기 무결성 : 데이터의 정확성, 일관성.. 2024. 1. 29.
[DB] KEY [기본 용어] 1. 튜플 - 테이블을 구성하는 각각의 행을 의미 - 속성의 집합 - 파일 구조에서 레코드와 같은 의미로 사용된다 2. 키 - 테이블간의 관계를 좀 더 명확히 하고, 테이블 자체의 인덱스 역할을 하기 위해 설정된 장치 - 조건에 맞는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준 3. 유일성 - 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질 - 튜플을 구분할 수 있어야 한다는 의미 - Ex) 회원들 사이에서 이름이나 생일은 중복될 수 있지만, ID는 중복될 수 없으므로 유일성을 만족함 4. 최소성 - 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질 - 최소한의 속성을 사용하여 튜플을 구분하는 것 - Ex) 이름과 생일 그리고 .. 2024. 1. 29.