Django TDD (UnitTest)
Unit Test 란?
Unit test란 내가 작성한 코드의 가장 작은 단위인 함수를 테스트 하는 메소드이다.
작성한 로직을 테스트하는 유닛테스트 코드를 작성하여 테스트 하게 된다.
TestCase : Unit Test 프레임 워크의 테스트 조직 기본 단위
Fixture : 테스트 진행 시 필요한 데이터 혹은 설정을 의미
assertion : Unit Test시 검증이 제대로 되었는지 확인 하는 부분
테스트 방법시스템을 테스트 할때 크게 3가지 방법으로 나눌 수 있습니다.
UI Testing / End-To-End Testing
Integration Testing
Unit Testing
이중 UI Testing이 가장 어렵고 까다롭습니다.
Manual Testing은 실행하기 쉽다는 장점이 있지만 비용이 많이 들고 부정확 하며 실행 시간이 오래 걸립니다.
자동화 할 수 있지만 UI Testing은 자동화 하기가 가장 까다랍고 또 실행하기도 까다롭습니다.
I ...
MongoDB
NoSQL??Not Only SQL’이라고 해석하는 게 더 적절하다.그리고 NoSQL은 “관계형 데이터베이스이지 않은” 모든 데이터베이스의 데이터 모델과 제품을 아우른다.
Nosql 특징?
유연성NoSQL 데이터베이스는 일반적으로 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발을 가능하게 해줍니다. 이같은 유연한 데이터 모델은 NoSQL 데이터베이스를 반정형 및 비정형 데이터에 이상적으로 만들어 줍니다.
확장성NoSQL 데이터베이스는 일반적으로 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계되었습니다. 일부 클라우드 제공자들은 완전관리형 서비스로서 이런 운영 작업을 보이지 않게 처리합니다.
고성능NoSQL 데이터베이스는 특정 데이터 모델 및 액세스 패턴에 대해 최적화되어 관계형 데이터베이스를 통해 유사한 기능을 충족하려 할 때보다 뛰어난 성능을 얻게 해줍니다.
고기능성NoSQL 데이터베이스는 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 ...
CodeTest 연습 (Sort)
정렬K번째수1차 답안1234567891011def solution(array, commands): answer = [] tmp = [] for command in commands: tmp = array[command[0]-1:command[1]] tmp.sort() # 정렬된 배열에서 answer 삽입 answer.append(tmp[command[2]-1]) return answer
다른사람 답안 1123456def solution(array, commands): answer = [] for command in commands: i,j,k = command answer.append(list(sorted(array[i-1:j]))[k-1]) return answer
i,j,k = command원소를 3가지 변수로 저장한다는 아이디어 생각하기
다른 ...
CodeTest 연습 (Heap)
힙(HEAP)
자료구조
삭제되는 요소
스택(Stack)
가장 최근에 들어온 데이터
큐(Quene)
가정 먼저들어온 데이터
우선순위 큐(Priority Quene)
가장 우선순위가 높은 데이터
자료구조 ‘힙(heap)’이란?
완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다.
여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다.
힙은 일종의 반정렬 상태(느슨한 정렬 상태) 를 유지한다.
큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있다
간단히 말하면 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰(작은) 이진 트리를 말한다.
힙 트리에서는 중복된 값을 허용한다. (이진 탐색 트리에서는 중복된 값을 허용하지 않는다.)
ex)
더 맵게
1차 답안123456789101112131415161718def solution(scoville, k): total = 0 cnt = 0 w ...
CodeTest 연습 (스택/큐)
Stack & Quene주식가격1차 답안123456789def solution(prices): answer = [] for i in range(len(prices)): cnt = 0 for j in range(i+1, len(prices)): if prices[i] <= prices[j]: cnt= cnt+1 answer.append(cnt) return answer
비 효율성 문제로 통과 x
2차 답안12345678def solution(prices): answer = [0] * len(prices) for i in range(len(prices)): for j in range(i+1, len(prices)): answer[i] += 1 if prices[i] > prices[j]: ...
CodeTest 연습 (Hash)
Hash
데이터를 다루는 기법 중에 하나
검색과 저장이 아주 빠르게 진행
데이터를 검색할 때 사용할 key와 실제 데이터의 값이 (value가) 한 쌍으로 존재하고, key값이 배열의 인덱스로 변환
검색과 저장의 평균적인 시간 복잡도가 O(1)에 수렴
완주하지 못한 선수1차 답안123456def solution(participant, completion): for member in participant: if member in completion: completion.remove(member) else: return member
비효율적인 코드여서 효율성 통과 X
2차 답안sort() : 정렬, 기본값은 오름차순 정렬, reverse옵션 True는 내림차순 정렬
1234567a = [1, 10, 5, 7, 6]a.sort()a# [1, 5, 6, 7, 10]a.sort(reverse=True)a# [10, ...
201012_SQL
SQL 하루 문제2020-10-12SELECT
SUM, MAX, MIN
GROUP BY
2020-10-13IS NULL
JOIN
STRING, DATE
주요 개념LIMITLIKEREGEXP
WAF
AWS Structure (API 서버 구성도)Route53 > WAF > ALB > AutoScalingGroup > EC2 > Nginx > Django
Route53DNS (Domain Name System)
www.도메인.com과 같이 도메인을 통해 컴퓨터 간 연결에 사용되는 숫자 IP 주소와 연결하줍니다.
WAFWAF (Web Application Firewall)방화벽 ELB에 요청을 보내기 전 비상적 요청에 대한 사항을 차단합니다.
ALB(ELB)ALB (Application LoadBalancer)
API 통신만 허용하기 때문에 Load Balancer 중 http/https만 허용하는 ALB를 사용합니다.
AutoScaling GroupALB에서 오는 요청들을 처리하는 EC2의 갯수를 관리합니다.CPU 사용량에 따라 트래픽이 증가하면 AutoScaling 규칙에 따라 EC2를 새로 증설하고 트래픽이 감소하면 규칙에 따라 자동적으로 감 ...
GITLAB CI & CodeDeploy 설정
CICD란?CI - Continuous Integration
개발자를 위한 자동화 프로세스
개발자간의 코드 충돌을 방지하기 위한 목적
정기적인 빌드 및 테스트(유닛테스트 및 통합테스트)를 거쳐 공유 레포지터리에 병합되는 과정
CD(1) - Continuous Delivery
애플리케이션에 적용한 변경사항이 버그 테스트를 거쳐 레포지터리에 자동으로 업로드 되는 것
운영팀은 언제든 실시간으로 이 레포지터리에서 실시간으로 프로덕션 환경으로 배포 가능
CD(2) - Continuous Deployment
애플리케이션을 프로덕션 환경으로 배포하는 작업을 자동화 하는 것
Continuous Delivery로 통칭하여 언급하기도 함
GITLAB CIgitlab-ci.yml 파일을 통해 CI (Continuous Integration) 관리 및 테스트
1234567891011121314151617181920212223242526272829303132333435363738 ...
Docker
Docker도커를 배워야 하는 이유?과거에는 애플리케이션 개발은 프로그래밍과 테스트 스킬을 가진 애플리케이션 엔진니어가환경구축은 네트워크나 하드웨어를 잘아는 인프라 엔진니어가 담당했습니다.
그런데 데이터센터나 서버실을 두고 하는 온프레미스 방식에서 가상의 서버를 여러 대 띄우는 클라우드 방식으로 변화되었습니다.
이런 분산환경에서는 인프라 엔지니어가 수동으로 관리하는 대신 자동화된 툴을 사용해 오케스트레이션 합니다.따라서 인프라 엔지니어도 자동화를 위해 코드를 작성하는 능력이 필요하게되었습니다.
IT Infrastructure?IT 인프라란 애플리케이션을 가동시키기 위한 필요한 하드웨어, OS , 미들웨어, 네트워크 등 시스템의 기반을 말합니다.
STEP 2. Docker서비스 운영 환경을 묶어서 손쉽게 배포하고 실행하는 경량 컨테이너 기술로 인프라 구축을 손쉽게 할 수 있는 도구입니다.
도커설치12345678# 도커 설치$ curl -fsSL https://get.docker.com ...