1. 구성 - URI, HTTP METHOD, 표현 2. 클라이언트 - 서버 구조 서버는 API 제공 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보) 등을 직접 관리하는 구조 → 클라이언트와 서버간의 의존성이 줄어든다. 3. HTTP METHOD POST : 해당 URI를 요청하면 리소스를 생성한다. GET : 해당 리소스를 조회, 리소스를 조회하고 해당 도큐먼트의 자세한 정보를 가져온다. PUT : 해당 리소스를 수정한다. DELETE : 리소스를 삭제한다. 4. URI 설계 시 주의할 점 '/' 구분자는 계층 관계를 나타내는데 사용한다. URI 마지막 문자로 '/'를 포함하지 않는다. http://restapi.example.com/houses/apartments/ (X) http://re..
1. Babel 트랜스 컴파일러 자바스크립트 컴파일러 → 자바스크립트로 결과물을 만들어주는 컴파일러 ES6/7 코드를 ES5 코드로 변환해주는 변환기 → 호환되는 버전으로 변환 Arrow function을 지원하지 않는 브라우저에서는 Syntax오류가 발생하기 때문에 자바스크립트가 읽을 수 있는 스크립트로 재작성되어 새로 컴파일 된다. babel은 문법 변환 역할만 한다. ⇒ 구 브라우저에서도 최신 자바스크립트가 작동하도록 변환해주는 컴파일러(트랜스파일러) 2. Polyfill 특정 기능이 지원되지 않는 브라우저를 위해 사용할 수 있는 코드로 바꿔준다. 프로그램이 시작될 때 현재 브라우저에서 지원하지 않는 함수를 검사한다. → 브라우저가 실행되는 시점에 동작 각 객체의 prototype에 붙여준다. 브라..
월간 코드 챌린지 시즌1 programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 programmers.co.kr from itertools import combinations def solution(numbers): answer = [] com = list(combinations(numbers, 2)) for num in com: answer.append(sum(num)) answer = list(set(answer)) answer = sorted(answer) return answer
1. 컴퓨터 구조 3대 요소 메모리, CPU, 입/출력 장치 2. 메모리 프로세서가 동작하기 위한 미리 작성된 '프로그램' 영역과 값을 읽거나 쓰는 '데이터' 영역으로 나뉜다. 롬 - 읽기만 가능한 메모리 램 - 읽고 쓸 수 있는 메모리 3. CPU (Central Processing Unit) 메인 메모리에서 읽어온 데이터를 처리하는 장치 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행하고 처리하는 제어 장치 컴퓨터의 핵심 부품 메모리에 저장된 프로그램을 차례대로 fetch해서 해당 명령어를 분류 (decode)해서 실행(execute)한다. 여러 종류의 레지스터와 연산을 담당하는 ARU(산술 논리 연산 장치), 명령을 처리하는 파이프라인으로 구성 fetch : 프로그램의 메모리에서 명령어를 불러오는 ..
해시 테이블 (Hash Table) hash 함수를 통해 key를 해시 코드로 변환하고, 이 해시코드로 인덱스를 계산해 value에 접근한다. hash function : 해시 코드로 변환하는 함수 Hash Function 1. 나눗셈 법 h(k) = k mod m 입력받은 key의 각 문자를 유니코드로 변환 후 HashMap의 size로 나눈 나머지 값으로 사용한다. m은 HashMap의 크기이며 소수를 사용한다. (2의 제곱수와 거리가 먼 소수) 2. 곱셈 법 h(k) = (kA mod 1) * m k는 숫자로 된 키, 0 < A < 1 m은 중요하지 않으며 보통 2의 제곱 수로 정한다. 나눗셈 법보다는 느리고 2진수 연산에 최적화된 컴퓨터 구조를 고려한 해시함수이다. 3. Universal Hash..
1. 배열 인덱스에 해당하는 원소를 빠르게 접근해야 할 때 데이터를 자주 바꾸거나 확인하는 일 없이 쌓아두고 싶을 때 데이터의 삽입/삭제가 빈번하다면 배열 사용은 비효율적 연산의 시간복잡도 a. i번째 원소 확인 : O(1) - 원소가 연속하게 배치되어 있기 때문 b. 원소를 끝에 추가 : O(1) - 배열의 길이를 알기 때문 c. 마지막 원소 제거 : O(1) - 배열의 길이를 알기 때문 d. 임의의 위치에 원소 추가 : O(N) - 원소 추가 후 전부 한 칸씩 뒤로 밀어야 함 e. 임의의 위치에 원소 제거 : O(N) - 원소 제거 후 전부 한 칸씩 앞으로 밀어야 함 2. 연결리스트 (Linked-list) 각 원소가 자신의 다음 원소의 위치까지 가지고 있는 자료구조 Singly Linked List..
1. Big - O 표기법 f(n) = 2n^2 - 8n + 3 => O(n^2) 단순화된 함수 n^2이 임의의상수 c를 곱한 cn^2이 n이 증가함에 따라 f(n)의 상한이 된다. (단, c > 0) f(n) = O(g(n)) 복잡도의 점근적 상한을 의미 n이 증가함에 따라 O(g(n))이 점근적 상한이라는 것을 보여준다. cg(n)이 n0보다 큰 모든 n에 대해서 항상 f(n)보다 크다. 2. Big - Ω 표기법 f(n) = 2n^2 - 8n + 3 => Ω(n^2) f(n) = Ω(n^2) 은 'n이 증가함에 따라 2n^2 - 8n + 3이 cn^2보다 작을 수 없다'라는 의미 f(n) = Ω(g(n)) 복잡도의 점근적 하한을 의미 n이 증가함에 따라 Ω(g(n))이 점근적 하한이라는 것을 보여준..
Git 온라인으로 소스코드 공유 및 협업, 저장할 수 있는 시스템 흐름도 1. 저장소 a. workspace 실제 소스코드를 작업하는 공간 현재 작업 중인 파일이 있는 내 PC의 directory 일반적인 프로젝트 폴더 $ git add 파일명 // workspace의 내역을 index에 올림, 소스코드의 변경 내역을 저장 b. index (stage) workspace의 코드를 저장하는 공간 수정 내역의 대기 장소 c. local repository 개인 PC에 저장되는 저장소 $ git commit -m “commit message” // index의 저장된 소스코드를 local repository로 올림 d. remote repository 원격 저장소 전용 서버에서 관리됨 공유되는 저장소 gith..