비즈니스 관점에서의 개발 프로젝트 이해 모든 프로젝트가 같은 흐름을 따르는 것은 아니나 큰 틀은 유지함 - 프로젝트의 특성과 사업자 간의 이해 관계에 따라 형태가 조금씩 변할 수 있음 - 기술의 발전과 시대의 흐름에 따라 절차나 형태, 인식이 변화할 수 있음 1. 과업 발생 기존 시스템이 현 상황과 맞지 않아 '고도화'(시스템 개선)해야 하는 경우 과업(프로젝트)은 발주처(집단)의 니즈에 맞게 발생하게 됨 2. 사업자 선정 및 계약 발주처가 RFP를 작성하면 수주 사업자들이 그에 맞는 제안서를 제공하고 입찰을 통해 계약을 진행하게 됨 RFP(Request For Proposal. 제안 요청서) - 개요, 구축 컨셉, 제안 요청사항 정의, 제안서 작성가이드 등 명확한 요구사항, 일정, 사업 비용 등 제안서..
필수 Node.js Node.js 패키지 매니저 버전 관리 시스템/ 형상 관리 시스템 + 원격 리포지토리 서비스 프론트엔드 프레임워크(라이브러리) CSS CSS 프레임워크(라이브러리) CSS 네이밍 컨벤션 Create React App 린터 Node.js 브라우저에서 벗어나 다양한 운영체제에서 실행할 수 있는 JavaScript 런타임 JS로 백엔드 개발도 가능해짐 배포 전 개발 단계에서 JS로 번들링이나 최적화 등 많은 개발 작업을 할 수 있게 됨 호환성 보장을 위해 Node.js LTS 버전 사용 권장 패키지 매니저 여러 소프트웨어들을 한꺼번에 설치, 업그레이드, 설정, 삭제 등을 할 수 있는 소프트웨어 툴 npm, yarn 버전 관리 시스템 + 원격 리포지토리 서비스 Git + Github 프론트엔..
Github 리포지토리 완성된 개발 프로젝트에 대한 코드와 주요 정보를 공유하는 수단 Github 리포지토리에 꼭 필요한 파일 1. README.md 간단한 소개 페이지(마크다운) 오픈소스를 활용할 수 있도록 상세한 정보 기재 - 프로젝트 이름 - 프로젝트 핵심 기능 소개 - 팀원 소개 - Wiki 링크(프로젝트 상세 정보) # 리포지토리 내려받기 git clone cd # README.md 추가 touch README.md README.md 예시 더보기 # My Todo App Todo 관리를 위한 웹 애플리케이션입니다. ## Features - 편리한 UI로 Todo를 쉽게 생성하고 삭제할 수 있습니다. - Todo에 기한과 카테고리를 설정할 수 있습니다. - create-react-app으로 간편한..
정규표현식 Regular Exprssion 정규식, 표현식 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 유효성 검사, 데이터 스크래핑 문자열 파싱 등 다양한 상황에서 사용(RegExr) 정규표현식 사용 방법 1. 리터럴 패턴 /찾고자하는 문자열을 슬래시로 감싸기/ 2. 생성자 함수 호출 패턴 RegExp 객체의 생성자 함수를 호출하여 사용 정규표현식 내장 메서드 1. RegExp 객체 ① regexp.exec(문자열) execution 원하는 정보 찾기 찾고자하는 정보를 문자열이 가지고 있다면 배열로 반환, 없다면 null 반환 ② regexp.test(문자열) 찾고자하는 정보를 문자열이 가지고 있는지 여부를 boolean으로 리턴 2. String 객체 ① str.match(정규표현식..
수학적 사고를 통해 컴퓨팅 사고를 할 수 있어야 함 순열 Permutation n개의 요소 중 r개를 순서에 상관 있게 뽑는 경우의 수 중복을 허용하지 않기 때문에 r 나머지가 0이 되었을 때 나눈 수가 a와 b의 최대공약수 // 유클리드 호제법(최대공약수 구하기) function gcd(a, b){ while(b !== 0){ let r = a % b; a = b; b = r; } return a; } // 유클리드 호제법을 이용해 최소공배수 구하기 function lcm(a, b){ return a * (b / gcd(a, b)); } 최소공배수(LCM. Lowest Common Multiple) 공배수 중 최소인 수 - 공배수: 둘 이상의 수의 공통된 배수 - 배수: 하나의 수에 정수를 곱한 수 배..
코딩 테스트 기업에서는 알고리즘 풀이로 지원자의 역량을 가늠하고, 개발자다운 사고방식을 봄 알고리즘 문제풀이에 중요한 것은 해답을 효율적인 방법으로 찾는 것 새로운 문제에 봉착했을 때 전략과 알고리즘을 구상하여 실제 코드로 구현해 보는 경험은 매우 중요함 알고리즘 문제를 해결하는 최선의 선택 문제를 해결하기 위해 절차를 정의하고 공식화한 형태로 표현한 문제 풀이 방법 프로그래밍에서 알고리즘: input을 통해 output을 얻기 위한 계산 과정 절차가 명확하게 표현되어 있고, 다양한 문제 해결 과정에서 나타나는 불필요한 작업들을 효율적으로 줄여주는 알고리즘이 좋은 알고리즘임 문제 해결이 정확하고 빠를수록 구현 능력이 좋다고 말함 (구현 능력을 보는 대표적 사례: 완전 탐색, 시뮬레이션) 구현 문제, 구현..
CORS(Cross-Origin Resource Sharing) 1. React 앱: 브라우저에 요청 보냄 2. 브라우저: 서버에 리소스 요청 3. 서버: 접근 권한(출처 동일 여부, 요청 헤더) 확인 후 응답 4. 브라우저: 출처가 같다면 React 앱으로 응답 보냄, 다르면 CORS 에러 교차 출처 리소스 공유. 기본적으로는 브라우저의 현재 주소와 API의 도메인이 일치해야 데이터에 접근할 수 있음 HTTP 헤더를 사용하여 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처(서버)의 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제 만약 서비스 및 프로젝트가 모든 출처의 접근을 허락한다면 보안성이 낮아지고 해킹의 위험에 노출될 수 있음 프론트엔드 개발자는 백엔드 개발자에게 프론트엔드 ..
레퍼런스 정리 1. EC2 인스턴스 생성 AWS - EC2 - 인스턴스 시작 ① AMI 선택 - 과금 방지를 위해 프리티어 AMI 선택(프리티어: 일부 무료) - ubuntu 인스턴스 20버전의 경우 이슈 발생할 수 있으니 18버전 권장 ② 인스턴스 유형 선택 - 생성하는 인스턴스의 CPU, RAM, 용량 선택 가능 ③ 키 페어 생성, 다운로드 인스턴스를 원격으로 제어하기 위해 SSH 연결 필요 - 키 페어의 이름을 정하고 다운로드 - EC2 인스턴스에 연결할 때 사용하는 암호가 담김(관리 유의) -> AWS에 퍼블릭 키가 저장되고 사용자는 프라이빗 키를 저장함 SSH: Secure Shell Protocol. 보안 .pem파일 PC와 PC가 인터넷과 같은 Public Network를 통해 통신할 때 안..
개발 프로세스 소프트웨어 시스템/ 애플리케이션 개발 및 유지보수를 목적으로 수행되는 활동들의 절차 개발에 대한 전체적인 가이드라인 제공을 목적으로 함 소프트웨어 개발 생명주기를 기반으로 만들어진 다양한 모델이 있는데 앱의 규모와 종류에 따라 선택하여 사용됨 소프트웨어 개발 생명주기(SDLC. Software Development Life Cycle) 아래 7단계를 기준으로 순환하기도, 더 세부적으로 나눠지기도, 각 단계가 반복되기도 함 1. 요구 분석 문제 분석 단계 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 사용자와 함께 정의하는 단계 2. 시스템 명세 1을 토대로 개발 방법과 필요한 자원 및 예산을 예측하여 요구 명세를 작성 3. 설계 1에서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으..
BE 서버 배포(EC2) 실습 1. 리전 설정 가까운 지역 설정 2. EC2 생성 3. EC2 연결- Session Manager 연결 터미널 기본 설정 ① 터미널 접속 bash 환경으로 변경 bash cd ~ ② 패키지 정보를 최신 상태로 업데이트하기 위해 아래 명령어 입력 sudo apt update ③ 필요한 소프트웨어 설치 - nvm 설치 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash # 혹은 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash # 터미널에 아래 소스 코드 추가(두 줄로 나눠져도 상관없음 -> ..
