전체 글197 [Postman] mock server [1. postman mock server란?]1. mock서버 개념- 포스트맨 목서버는 가상의 api 반환 주소를 만들어 실제 서버 응답처럼 보여주는 것을 말한다- 포스트맨에 저장한 api의 request와 response 예시를 기반으로 응답해준다 2. 사용 이유- 프론트엔드 테스트: 아직 서버가 모두 개발되지 않았을 때 가상의 응답을 만들어 프론트엔드에서 테스트 가능- 네트워크 의존성 제거- 테스트 환경 구축 3. 한계- 미리 정의된 응답만 제공하므로, 동적인 로직을 테스트하기 어려움- 실시간 데이터 동작을 테스트할 수 없음- 가격대별로 요청할 수 있는 횟수가 정해져 있음 (무료는 1,000번, 유료시 최대 100,000번) [2. mock server 실습]1. mock server 만들기1) .. 2024. 12. 18. [JS] truthy, falsy [1. 원시타입과 참조타입]자바스크립트에서의 변수의 종류에 따라 문법이 달라진다.원시변수와 참조변수에 따라 값의 복사 방식이 달라지고 (결국엔 모두 call by value지만) truthy와 falsy가 달라진다 1. 원시변수- 개념 : 실제 데이터값을 저장하는타입- 종류 : ES6 기준 원시형 변수는 아래와 같다string, number, boolean, bigint, undefined, symbol 2. 참조변수- 개념 : 메모리 번지를 통해 객체 값을 참조하는 타입- 종류 : Object [2. truthy, falsy]명시적 형변환을 위해 !!를 사용하여 확인해 보겠다 1. 원시타입의 truthy, falsy- 값에 따라 결과가 달라진다- falseconst a = '';const b = 0;c.. 2024. 12. 18. call by reference, call by value, 자바스크립트에서의 call by 0. call by ~- 함수 사이에서 인자가 전달되고 처리하는 방식을 설명하는 개념 1. call by value- 함수에 값을 전달할 때 값을 복사하는 방식- 장점 : 원본 데이터를 보호할 수 있음- 단점 : 큰 데이터 전달(복사) 시 성능 저하- 예시function callByValue(x) { x = 10; // 함수 내부에서 x 값을 변경 console.log("Inside function:", x); // Inside function: 10}let num = 5;callByValue(num); // x에 num의 값(5)이 복사되어 전달됨console.log("Outside function:", num); // Outside function: 5 (원본 num은 영향을 받지 않음) 2. c.. 2024. 11. 26. [Nest.js] 토큰으로 로그인, 로그아웃 구현하기 목표1. JWT를 사용해서 로그인, 로그아웃을 처리한다.2. 로그인 시 토큰을 발급한다.3.필요시 토큰을 새로 발급한다. 목차0. 기본 설정 (스키마, 회원가입 로직)1. 로그인 시 토큰 발급과 저장2. 로그아웃 시 토큰 삭제3. 로그인 유지를 위한 리프레시 토큰 발급[0. 기본 설정]1. 유저 스키마model User { id Int @id @default(autoincrement()) email String @unique password String refreshToken String?} 2. 회원가입 로직//user.service.ts async createUser(dto: User) { try { const check = await this.prisma.. 2024. 11. 14. [TS] 타입스크립트 개요 1. 타입스크립트란? - 데이터 타입을 부여한 자바스크립트, 자바스크립트의 슈퍼셋(모든 기능을 표함하면서 추가적인 기능도 활용) - 변수의 선언과 동시에 데이터 타입을 지정한다 - 자바스크립트와 달리 브라우저에서 실행하기 위해 컴파일(파일 변환) 과정이 필요//javascript function sum(a, b) { return a+b; } sum(1, 2); //typescript function sum(a: number, b: number):number { return a+b; } sum(1, 2); 2. 자바스크립트와의 차이 - 자바스크립트 = 인터프리터 언어 / 타입스크립트 = 컴파일언어 - 인터프리터 언어: 소스코드를 한 줄씩 읽어가며 바로 실행해 빠른 편 - 컴파일 언어: 언어 변환과 명령 실.. 2024. 11. 9. [Linux] Linux 디렉토리 구조 1. / (루트 디렉토리)/binuser binaries - nano, pwd, chmode 등 실행가능한 명령을 담아둔 디렉토리/sbinsystem binaries - 시스템 관리자가 사용하는 프로그램/etc configuration files - 프로그램의 설정 파일/varvariable files - /tmptemporary files - 임시 파일 저장소/homehome directory - 사용자의 파일이 저장되는 곳/bootb 2024. 11. 8. 쿠키, 세션, JWT 1. HTTP- HTTP의 특징은 비연결성(connectionless), 무상태(stateless)이 있음- 비연결성 : 요청을 받고 응답이 완료되면 연결을 끊어버림 (tcp의 keep-alive는 선택사항으로, 연결비용을 줄이는 것이 장점이기 때문에 비연결성을 지향함)- 무상태 : 사용자의 정보를 기록해두지 않음, 상태정보를 유지하지 않음- 위와 같은 특성으로, 서버는 클라이언트가 누군지 매번 확인해야 한다는 단점이 있음- 이런 단점을 보완하고자 쿠키와 세션을 활용함 2. 쿠키 Cookie- 키-값 쌍의 형태- 세미콜론으로 각 정보를 구분하며 문자열 형식으로 존재- 유효기간이 있음- 웹 브라우저에 저장됨쿠키명=쿠키값기본적인 쿠키 값Expires=날짜쿠키의 만료기한Max-age=초- 쿠키의 만료기한-날짜.. 2024. 11. 5. [Linux] Linux - Mac 패키지 매니저 Homebrew 1. HomeBrew란- 맥OS, Linux용 패키지 관리 애플리케이션- brew 명령어를 사용해 애플리케이션을 쉽게 설치, 삭제할 수 있음 2. 설치- terminal에 아래 설치 명령어 입력/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"- 설치되었는지 확인brew help 3. 기본 명령어brew search 필요한_애플리케이션'필요한_애플리케이션'을 homebrew로 설치할 수 있는지 확인brew install 필요한_애플리케이션'필요한_애플리케이션' 설치brew uninstall 불필요한_애플리케이션'불필요한_애플리케이션' 삭제brew listhomebrew를 통해서 설치.. 2024. 10. 31. [Linux] Linux 기초 명령어 (폴더 및 파일 관련) 1. 기초 명령어ls현재 위치에 있는 파일과 디렉토리(폴더) 확인하기ls -l현재 위치에 있는 파일과 디렉토리(폴더) 상세정보 (파일 및 폴더의 생성일, 권한, 소유자 등) 확인하기ls -al현재 위치에 있는 숨겨진 파일과 디렉토리(폴더) 상세정보 (파일 및 폴더의 생성일, 권한, 소유자 등) 확인하기pwd현재 위치 확인하기clear터미널 지난 명령어 및 결과 지우기명령어 --help명령어 관련 도움말 호출man 명령어명령어 관련 설명 호출 (전용 페이지로 이동 후 더 상세한 정보 제공, wq 입력하여 나올 수 있음) 2. 권한 분류- 하이픈(-)으로 시작하는 경우: 파일형식- 알파벳 d로 시작하는 경우: 폴더 형식 3. 경로 이동 명령어(1) 절대경로- 파일의 root 디렉토리부터 특정 파일 또는 폴.. 2024. 10. 30. [Linux] Linux 기초 1. 리눅스의 개념- UNIX를 토대로 만들어진 오픈소스 운영체제- 운영체제: CPU, 메모리, 스토리지처럼 시스템의 하드웨어와 리소스를 직접 관리하는 소프트웨어, 애플리케이션과 하드웨어 사이에서 모든 소프트웨어와 작업을 수행하는 물리적 리소스를 연결- 서버, 데스크탑, 임베디드 시스템 등 다양한 환경에서 사용 2. 리눅스의 특징- 오픈 소스: 리눅스 커널은 오픈 소스 소프트웨어이므로 누구나 소스코드를 확인, 수정, 배포 가능- 안정성: 서버나 데이터센터와 같은 환경에서 높은 안정성을 발휘해 장시간 구동에도 성능 저하가 적고 안정적- 보안성: 사용자 권한 관리와 다양한 보안도구 및 기능을 갖추고 있어 악성 코드나 해킹에 대응- 커스터마이징: 커널과 파일 시스템 구조, 사용 환경 등에서 높은 유연성을 제공.. 2024. 10. 30. 티스토리 블로그 챌린지 (11월 7일 ~ 11월 27일) https://www.tistory.com/event/write-challenge-2024?t_src=tistory_notice 작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.com 만관부!!! 2024. 10. 29. [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. 이전 1 2 3 4 ··· 9 다음