학습 TIL
도커를 이용해서 배포를 해볼 것인데, 2가지를 배포해볼 것이다. 첫번째는 React와 Nginx를 묶어서 이미지화 하고 컨테이너화 해서 클라이언트를 배포할 것이고, 두번째는 node 서버를 배포해볼 것이다. 그리고 환경은 우분투이다. 1. Docker를 이용해 React와 Nginx를 묶어서 이미지화 하고 컨테이너화 하기 내가 만든 React 프로젝트에 dockerfile을 생성해야 한다. package.json과 같은 경로에 Dockerfile-prod라고 파일을 하나 생성해주자. 여기서 파일명은 무엇으로 해도 상관없는데, prod라고 표시해두면, Dockerfile, Dockerfile-prod, Dockerfile-dev 등 배포 환경에 따라서 관리하기가 편하다. 그리고 해당 파일을 아래처럼 채워주..
Proxy? 다른 서버에서 리소스를 찾는 클라이언트의 요청에 대한 중개자 역할을 하는 서버이다. 따라서 프록시 서버는 클라이언트와 클라이언트가 찾고 있는 데이터를 호스팅하는 실제 서버 사이에 위치한다. 클라이언트에게 프록시 서버는 실제 백엔드 서버로 나타나고, 백엔드 서버에는 프록시 서버가 클라이언트처럼 보인다. Reverse Proxy? 하나 이상의 백엔드 서버 앞에 위치하여 각 요청에 사용할 백엔드 서버를 결정하는 것이다. Why Reverse Proxy? 동시성 : 다중 연결을 더 잘 처리할 수 있는 역방향 프록시를 추가하면 백엔드 서버 성능이 크게 향상될 수 있다. 복원력 : 백엔드 서버의 상태를 모니터링하고 서비스가 재개될 때까지 실패한 서버에 대한 요청 전송을 중지할 수 있다. 역방향 프록시가..
Nginx ? 웹 서버 소프트웨어로, 가벼움과 높은 성능을 목표로 한다. Nginx는 요청에 응답하기 위해 비동기 이벤트 기반 구조를 가진다. 이러한 구조는 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해준다. nginx의 핵심은 가벼움과 높은 성능이다. Apache에 비하여 스레드를 많이 사용하지 않기 때문에 CPU 소모도가 상대적으로 낮다. 적은 수의 스레드로 효율적인 일처리가 가능하기에 많은 접속자들이 와도 대응을 할 수 있다. 웹 서버 : 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램이다. 웹 서버의 주된 기능은 웹 페이지를 클라이언트로 전달하는 것이다. 주로 그림, CSS, 자바스크립트를 포함한 HTML 문서가..
Vercel의 특징 중 하나는, GitHub와 같은 코드베이스(저장소)를 연결하여, 즉시 빌드를 실행하고, 배포까지 원클릭으로 할 수 있다는 점이 특징이다. 실제로 배포는 Vercel 서비스 내에서 이루어진다. 그럼 시작해보자. 우선 vercel에 로그인을 한다.(vercel 로그인 바로가기) 나는 github으로 로그인 했다. 로그인을 하면 아래와 같이 Import Git Repository 화면을 볼 수 있을 것이다. Add GitHub Org or Account 를 클릭해서 내 GitHub 계정을 연결해준다. 내 계정과 연동이 끝나면 내 레포지토리 목록이 뜰 것이다. 그럼 배포하고 싶은 레포지토리에 Import를 클릭한다. 나는 다음 메인페이지를 카피해본 프로젝트를 배포하려고 한다. PROJECT ..
문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P가 될 수 없습니다. 정수 n과 k가 매개변수로 주어집니다. n을 k진수로 바꿨을 때, 변환된 수 안에서 찾을 수 있는 위 조건에 맞는 소수의 개수를 return 하도록 solution 함수를 완성해 주세요. 예시) 437674을 3진수로 바꾸면 2110201..
2022. 01. 20 목요일 1. Today's Key Points!🔑 react native 날씨 앱 만들기 CS50 프로그래밍 응용 [프로그래머스] k진수에서 소수 개수 구하기 2. 정리해보자!🧹 1. React Native 노마드 코더가 무료로 제공하는 강의를 통해서 react native로 날씨 앱을 만들어보았다. 나의 미래를 생각했을 때 앱까지 만들줄 알면 더 좋은 개발자가 될 수 있을 거라 생각이 들어서 react native를 경험해 보고 싶었다. 이 강의에서 두 가지 앱을 만드는데 오늘은 날씨앱을 만들었다. 사실 앱을 만들었다기 보다는, 만들어진 앱에 나의 코드만 작성해서 만든 것이다. 실제로 내가 앱을 만드려면 Java, Xcode 를 설치해야하는 등 앱을 만들기 위해서 필요한 인프라들..
문제만 언급하고 제한사항이나 입출력 예시는 생략할 것이다. 문제 어피치가 화살 n발을 다 쏜 후에 라이언이 화살 n발을 쏩니다. 점수를 계산합니다. 만약, k점을 어피치가 a발을 맞혔고 라이언이 b발을 맞혔을 경우 더 많은 화살을 k점에 맞힌 선수가 k점을 가져갑니다. 단, a = b일 경우는 어피치가 k점을 가져갑니다. 또한 a = b = 0인 경우, 즉, 라이언과 어피치 모두 k점에 단 하나의 화살도 맞히지 못한 경우는 어느 누구도 k점을 가져가지 않습니다. ex) 어치피가 10점을 2발 맞혔고 라이언도 10점을 2발 맞혔을 경우 어피치가 10점을 가져갑니다. ex) 어피치가 10점을 1발 맞혔고 라이언은 10점을 2발 맞혔을 경우 라이언이 10점을 가져갑니다. 모든 과녁 점수에 대해 각 선수의 최종..
2022. 01. 18 화요일 1. Today's Key Points🔑 CS50 프로그래밍 기초 프로그래머스 양궁대회 2. 정리해보자🧹 CS50 프로그래밍 기초 오늘은 프로그래밍 기초에 대한 강의를 들었다. C, C++을 어떻게 사용하는지 가장 기본적인 것들을 배웠다. 이 부분에서는 기술면접을 준비할만한 것이 없다고 판단해서 정리하지 않기로 했다. 내가 사용하는 언어는 Javascript인데 쓰는 언어만 다르지 다 같은 맥락인 것 같다. 똑같이 문법, 변수, 자료형, 연산자, 조건문, 반복문을 가르쳐준다. 다 아는 내용이라 편하게 들을 수 있었다. 프로그래머스 양궁대회 3일 동안 고민해서 풀었다.😭 알고리즘 카테고리에 정리해서 올릴 것이다. 내가 푼 프로그래머스 양궁대회 바로가기
2021. 01. 14 금요일 여기에서 무료로 CS 강의를 들을 수 있고, 여기서 들은 것을 바탕으로 정리해보고자 한다. CS50 강의 4일차이다. 어제에 이어서 알고리즘 파트를 마무리 했다. 전체 정리 본 오늘은 삽입 정렬, 시간 복잡도, 합병 정렬, 이진 탐색 강의를 들었다. 아래는 강의 자료를 기반으로 다시 정리해본 것이다. 생각해보기 부분은 나의 생각이므로 정답이라고 할 수는 없다. 5. 삽입 정렬 삽입 정렬이란? 정렬되지 않은 부분의 자료가 정렬된 부분의 자리로 삽입되는 형태의 정렬 방법이다. 따라서 자료를 여러 번 비교하거나 교환할 필요가 없다. 실행 삽입 정렬은 배열을 정렬된 부분과 정렬되지 않은 부분, 두 개의 부분으로 나누면서 동작한다. [5, 1, 6, 2, 4, 3]이라는 배열을 삽입..