일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 트랜잭샨
- spring event
- 검색어 추천
- jwt 표준
- 카카오
- 알람 시스템
- JPA
- 결제서비스
- docker
- 백준
- 누적합
- 깊게 생각해보기
- 숫자 블록
- branch 전략
- 프로그래머스
- gRPC
- 구현
- 레디스 동시성
- 이분탐색
- 주식
- 디버깅
- piplining
- prg 패턴
- 셀러리
- BFS
- 객체지향패러다임
- 쿠키
- 완전탐색
- AWS
- 좋은 코드 나쁜 코드
- Today
- Total
목록분류 전체보기 (167)
코딩관계론
EBS(Elastic Block Store) 개요 EBS(Elastic Block Store)는 네트워크 기반의 블록 스토리지 서비스로, EC2 인스턴스와 같은 가상 머신과 연결하여 사용할 수 있습니다. EBS에 저장된 데이터는 인스턴스가 삭제되어도 유지되므로, 데이터의 백업 및 복구를 쉽게 수행할 수 있습니다. EBS는 스냅샷 기능을 제공하여 EBS 볼륨의 현재 상태를 백업할 수 있으며, 스냅샷은 S3 버킷에 저장됩니다. 특징 EBS는 특정 EC2 인스턴스와 연결되어 사용되는 것이 일반적입니다. 그림 1과 같이 하나의 EC2 인스턴스에 여러 개의 EBS 볼륨을 연결할 수 있지만, 하나의 EBS 볼륨을 여러 EC2 인스턴스에 연결할 수는 없습니다. 이러한 제한 사항은 EBS가 블록 수준의 스토리지를 제공..
EC2 (Elastic Compute Cloud)란? EC2 (Elastic Compute Cloud)은 아마존 웹 서비스(Amazon Web Services)에서 제공하는 Infrastructure입니다.. EC2는 가상 서버 인스턴스를 제공하며, 사용자는 이를 사용하여 필요에 따라 가상 컴퓨터를 생성하고 실행할 수 있습니다. 이를 통해 사용자는 필요한 컴퓨팅 파워를 더 빠르게 확보할 수 있으며, 더 유연하게 서버 자원을 관리할 수 있습니다. EC2의 구성요소 1. 인스턴스 EC2 (Elastic Compute Cloud)은 AWS의 클라우드 컴퓨팅 서비스 중 하나로, 가상 서버 인스턴스를 제공합니다. 사용자는 EC2를 사용하여 필요에 따라 가상 컴퓨터를 생성하고 실행할 수 있으며, 선택한 운영 체제와..
IAM 사용 이유 AWS IAM은 AWS 계정에 대한 사용자, 그룹 및 역할을 관리하고, 각각의 역할에 대한 최소한의 권한만 부여하여 AWS 리소스에 대한 보안성을 유지하고 보호하는 데 사용됩니다. IAM Group 사용 이유 AWS IAM에서는 그룹을 사용하여 여러 유저에게 동일한 권한을 부여하거나, 한 유저에게 여러 권한을 할당하는 대신에 여러 그룹에 권한을 부여할 수 있습니다. 또한, 최소한의 권한을 부여하는 것이 보안에 더욱 안전한 방법이기 때문에 IAM 권한을 부여할 때 최소한의 권한 원칙을 따르는 것이 좋습니다. 특징 AWS IAM 그룹에는 다른 그룹도 포함될 수 있습니다. 그리고 유저는 여러 그룹에 속할 수 있지만, 하나의 그룹에 대해 중복으로 속할 수는 없습니다. IAM Policy 존재 ..
Region 개요 및 특징 Region은 AWS의 데이터 센터들의 집합이며, 전 세계적으로 분포하고 있습니다. 각 Region은 여러 개의 Availability Zone (AZ)으로 구성되어 있습니다. AWS의 서비스는 각 Region에 국한되어 제공됩니다. 예를 들어, 한국에서 AWS의 서비스를 사용한 후 도쿄 리전으로 이동하여 해당 서비스를 사용하게 되면 처음 사용하는 것과 같습니다. Region 선택 방법 Region 선택 방법은 상황에 따라 다르지만, 크게 네 가지로 요약할 수 있습니다. 지연 시간: 사용자의 위치와 Region의 지리적 위치 사이의 거리에 따라 지연 시간이 달라질 수 있습니다. 사용자와 가까운 Region을 선택하는 것이 좋습니다. 서비스 사용 가능 여부: 각 Region은 이..
[문제 설명] 주어진 작업을 처리하기 위한 여러 개의 코어가 있는 CPU가 있습니다. 각 코어는 작업을 처리하는 시간이 다르고, 작업이 끝나면 작업이 없는 코어가 다음 작업을 수행합니다. 처리해야 할 작업의 개수와 각 코어의 처리 시간이 주어질 때, 마지막 작업을 처리하는 코어의 번호를 반환하는 함수를 작성해야 합니다. [해결 방법] 우선 이 문제를 풀기 위해선 모든 작업들이 코어에 할당되는 최소 시간을 찾아야 합니다. 이를 빠르게 찾기 위해 이분탐색을 사용했습니다. 구체적인 해결 방법은 아래와 같습니다. 이분 탐색을 통해 최소 시간을 구합니다. (최소 시간 - 1)을 하여 해당 시간에 코어가 처리하고 있는 작업의 수를 파악합니다. (코어 시간 % 최소시간 == 0)이면 해당 시간에 코어에 작업을 할당할..
[문제 설명] 출발지에서 목적지까지 최단거리로 이동하는 경우를 구하는 문제입니다. [해결 방법] 해당 문제는 BFS를 사용해 풀이하는 문제입니다. BFS를 이용한 빠른 길 찾기는 출발점으로부터 인접 노드들의 최단거리를 갱신하는 구조입니다. 이 때, 출발점이 하나이고 목적지는 x개일 수 있습니다. 주어진 예시를 보면 출발점은 x개인 반면에 도착점은 하나로 고정되어 있습니다. 즉, 도착점을 출발점으로 생각하여 인접 노드들의 최단거리 노드를 갱신하면 도착점에서부터 출발점까지의 최단거리를 구할 수 있습니다. 결과적으로 도착점을 출발점으로 탐색을 진행한다면 도착점에서 출발할 수 있는 모든 노드들의 최단거리를 구할 수 있습니다. sources 배열에 있는 노드들의 최단거리를 return하여 정답을 받을 수 있습니다..
람다는 람다(lambda) 함수는 파이썬에서 익명 함수(anonymous function)를 만들기 위해 사용됩니다. 익명 함수란 이름이 없는 함수로, 일회성으로 사용될 때 유용합니다. 장점 람다 함수의 장점은 메모리 절약에 있다. 함수를 생성자를 통해 생성하는 방법은 간단하게 다음과 같이 표현될 수 있습니다. my_func = function(code, globals[, name[, argdefs[, closure]]]) 코드와 이름을 담아서 함수클래스를 통해서 객체를 생성하고, 그 객체를 함수이름과 동일한 변수에 담는 과정을def키워드가 대신해 줍니다. 함수객체를 변수에 담은 시점에서, 함수객체는 메모리에 올라가서 변수를 통해 자신이 호출되기를 기다리게 되기에 단 한 번만 사용할 함수라면 불필요한 메..
[문제 설명] 인센티브를 받는 사람 중 완화가 몇 등인지 구하는 문제였다. 인센티브를 받을 수 있는 조건은 다음과 같다. 사원.근무태도 >= 사원들.근무태도 or 사원.동료평가 >= 사원들.동료평가 둘 중에 하나라도 높은 것이 있다면 인센티브를 받을 수 있다 [해결 방법] 주어진 예시(sources = [[x, y], [x,y]...])를 도식화 시키면 아래와 같은 모습이 나타나게 된다. 여기서 빨간색 부분은 인센티브를 받을 수 없는 사람들의 영역을 나타낸다. 아래의 사진을 보면 두 가지의 특징을 획득할 수 있다 x의 크기 순서 및 만약 x의 크기가 같으면 y 값이 작은 사람부터 인센티브의 여부를 우선적으로 판별할 수 있다. x가 0으로 가까워 질 수록 y 값이 커지는 특징을 확인할 수 있다. 왜냐하면 ..
머리말 이 글은 프로그램의 품질을 높이기 위해 도입한 테스트 자동화 환경과 그 경험을 공유하는 글입니다. 아래에서는 도입 과정에서 사용한 도구와 기술적인 내용들을 자세히 설명합니다. 또한, 발생한 문제들과 해결 방법도 함께 언급합니다. [Test code 자동 실행 결과] 프로그램의 품질을 높이기 위해 django의 test code를 자동으로 실행할 수 있는 환경을 구축하였습니다. 이를 위해서는 프로그램을 실행시켜주는 서버가 필요합니다. 전 git action을 선택했는데, 왜냐하면 이미 git action을 통하면 제가 생각했던 기능들을 쉽게 구현할 수 있으며, 다양한 예제들이 존재하기 때문입니다. 아래의 사진은 테스트 코드가 성공했을 때 or 실패했을 때 사용자에게 잔디로 알려주는 최종 결과물입니다..
데이터 모델링 유의할 사항은 중복성, 비유연성, 비일관성이다. 중복성: 여러 저장소에 같은 데이터를 중복하여 저장하지 않아야 함 비일관성: 데이터간의 상호 연관관계를 확실히 해 일관성 있는 데이터가 유지되도록 합니다. 비유연성: 데이터 정의를 데이터 사용 프로세스와 분리하여 유연성을 높인다. 데이터 모델링 개념적: 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링 진행 논리적: 업무에 대해 key, 속성, 관계를 정확하게 기술 물리적: 실제 물리 db 데이터베이스 3단계 구조 스키마란 무엇일까: 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것 외부스키마: 여러 개의 사용자 관점으로 구성, 각 사용자가 보는 개인적 DB스키마 개념스키마: 모든 사용자 관점을 통합한 조직 전체 DB와 그들간..
DML(Data Manipulation Language) 데이터베이스 내의 데이터를 조작하는 데 사용되는 명령어입니다 대표적인 명령어로는 select, update, delete, merge가 존재한다. select * from A update TABLE set COLUME = 값 where [조건] delete from TABLE where [조건] #ms-sql에서만 존재함 merege DDL(Data Definition Language) DDL 문은데이터베이스 개체를 생성, 변경 및 삭제하는 데 사용됩니다. 특이한 점은 DDL 수행한 후 Auto commit이 발생한다는 점입니다. 대표적인 명령어로는 create, alert, drop, truncat, rename가 존재한다. CREATE TABL..
SET이 빠른 이유 set은 데이터를 해싱하여 내부적으로 해시 테이블에 저장합니다. 해시 테이블의 경우 해시 함수를 주어진 입력에 대해서 해시 키 값이 존재하기에 인덱싱이 매우 빠르다. 또한 파이썬의 set은 내부적으로 c언어로 구현되어 있어 파이썬 인터프리터보다 빠르다. 또한 set은 중복을 허용하지 않기에 데이터의 크기가 작아져서 해시테이블의 충돌을 방지하며 연산 속도를 향상시킨다 따라서 set은 대용량 데이터를 다룰 때에도 빠른 속도를 보장할 수 있다. 하지만, set은 해시 함수의 충돌(Collision) 문제를 고려해야 한다. 충돌은 서로 다른 두 개의 키가 동일한 해시값을 가질 때 발생합니다. 충돌이 발생하면 set은 해시 테이블에서 다른 곳에 해당 요소를 저장합니다. Set에서 사용되는 해시..