전체 215

[자료구조] 배열과 리스트

Do it! 알고리즘 코딩 테스트 - 파이썬 편 (김종관) 책을 이용하여 알고리즘 공부 중입니다 😃 https://youtu.be/_hP21RzyqHA?si=oMV1mj34PsWyGqXD 배열과 리스트는 자료구조와 파이썬에서 다른 의미로 사용된다. 우선 자료구조의 측면에서 살펴보자. 배열 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 인덱스를 사용하여 값에 바로 접근할 수 있다. 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다. 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요하다. 배열의 크기는 선언할 때 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없다. 구조가 간단하므로 코딩 테스트에서 많이 사용한다. 리스트 값과 포인터를 묶은..

Code/Algorithm 2023.09.21

[알고리즘] 논리 오류 탐색 방법, 디버깅

Do it! 알고리즘 코딩 테스트 - 파이썬 편 (김종관) 책을 이용하여 알고리즘 공부 중입니다 😃 https://youtu.be/zX76zhUL7ks?si=yzqvIKobAd-XJRSL 코드에서 디버깅하고자 하는 줄에 중단점을 설정하고, IDE의 기능을 실행하면 된다. PyCharm에서는 Variables 기능을 활용하면 변숫값 추적도 가능하다. 실수하기 쉬운 4가지 오류 변수 초기화 오류 변수 초기화를 제대로 하지 않아 다른 값이 저장되어 있는 경우이다. 이전 테스트 케이스의 결과값이 저장되어 있기도 하다. 모든 변수가 정상적으로 초기화 되고 있는지 디버깅을 이용해 확인하면 문제 해결에 도움이 된다. 반복문에서 인덱스 범위 지정 오류 배열은 0 ~ 10,000까지 생성했는데 반복문에서 범위를 0 ~ ..

Code/Algorithm 2023.09.21

[알고리즘] 알고리즘 선택의 기준이 되는 시간 복잡도

Do it! 알고리즘 코딩 테스트 - 파이썬 편 (김종관) 책을 이용하여 알고리즘 공부 중입니다 😃 https://youtu.be/DYA2q0oX5CA?si=jHYk_9XMkehcbeIm 코딩 테스트의 핵심 중 하나는 주어진 시간 내에 문제를 해결하는 것 이를 위해선 시간 복잡도를 고려해야 한다. 파이썬은 일반적으로 초당 2,000만 번 ~ 1억 번의 연산을 수행한다. 시간 복잡도 유형 빅-오메가(Ω(n)): 최선일 때의 연산 횟수를 나타낸 표기법 빅-세타(θ(n)): 평균일 때의 연산 횟수를 나타낸 표기법 빅-오(O(n)): 최악일 때의 연산 횟수를 나타낸 표기법 코딩 테스트에선 최악인 경우를 기준으로 시간 복잡도를 계산하는 것이 좋다. 시간 복잡도는 데이터의 크기(N)에 따라 성능이 달라진다. 최악인..

Code/Algorithm 2023.09.21

[CI/CD] Github Action을 이용한 ECS 배포 자동화

AWS Access key와 Secret key는 깃허브 레포지토리 환경설정의 액션 환경변수에 저장 name: Publish Docker Image and Deploy to Amazon ECS on: release: workflow_dispatch: env: AWS_REGION: ap-northeast-2 # set this to your preferred AWS region, e.g. us-west-1 ECR_REPOSITORY: your_repository # set this to your Amazon ECR repository name ECS_SERVICE: your_service # set this to your Amazon ECS service name ECS_CLUSTER: your_clust..

DevOps/CI CD 2023.09.11

[IaC] Terraform을 이용한 AWS 서비스 구축 (ECS, DynamoDB, VPC, Security Group 등)

개발자가 새로운 버전을 릴리즈하면 Git Action을 통해 자동화되어 진행됩니다. ECR 이미지 Push, 새 태스크 정의 생성, ECS 서비스 업데이트가 포함됩니다. Route 53을 통해 지정한 도메인으로 사용자가 api 요청을 보냅니다. DynamoDB에 접근하여 CRUD 요청을 처리합니다. 전체 파일 구성은 다음과 같다. 관리를 위해 서비스 별로 파일을 나누어 구성하는 것을 선호한다. main.tf provider "aws" { region = "ap-northeast-2" } vpc.tf # vpc 생성 resource "aws_vpc" "mb_vpc" { cidr_block = "10.0.0.0/16" enable_dns_hostnames = true tags = { Name = "mb_vp..

DevOps/IaC 2023.09.11

[AWS] Terraform을 이용한 ECS Task 생성 중 ResourceInitializationError: unable to pull secrets or registry auth 에러

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: ... 에러가 발생하며 태스크가 정상적으로 생성되지 않는 상황이 발생했다. 시도한 방법 1. IAM 정책 추가: AmazonEC2ContainerServiceforEC2Role 정책을 추가하면 된다는 의견이 많았다. 시도해보았으나 같은 결과가 발생했다. 2. vpc 엔드포인트 추가: ecr.dkr과 ecr.api 엔드포인트를 추가하라는 글을 몇 개 발견했다. 추가하였으나 같은 결과가 발생하였다. 3. 퍼블릭 ip 할당 활성화: 해당 방법으로 성공하였..

DevOps/AWS 2023.07.25

[AWS] ECR 이미지 push Retrying in... EOF 에러

ECR의 푸시 명령으로 이미지를 올릴 때 retrying in seconds가 계속 반복된 뒤 EOF가 나오며 실패하는 에러가 발생했다. ECR의 권한을 추가하여 해결할 수 있다. { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPushPull", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:CompleteLayerUpload", "ecr:GetDownloadUrlForLayer", "ecr:InitiateLayerUpload", "ecr:PutImage", "ecr:UploadLa..

DevOps/AWS 2023.07.21

[Docker] 컨테이너 포트와 호스트 포트는 무엇일까?

지금까지 도커를 사용하면서 컨테이너를 실행시킬 때 -p 옵션으로 포트를 지정했다. 하라고 해서 했는데 왜하는 건지, 무슨 의미인지 모른 체로 나중에 찾아봐야지..라고만 생각했다. AWS ECS에서 태스크 정의를 생성할 때 컨테이너 포트를 설정하는 파트가 있었는데 이게 뭔지 도대체 무슨 역할인지 몰라서 찾아보기를 실행에 옮겼다. AWS 공식 문서에서 태스크 정의 포트 매핑에 대해 찾아봤다. Container port와 Host port 두 종류가 있다고 한다. 두 포트의 차이점이 뭔지 몰랐는데, 도커 컨테이너를 실행할 때 -p 옵션으로 줬던 포트 옵션이 호스트포트:컨테이너포트였던 기억이 있어서 도커 포트에 대해 찾아봤다. 호스트 포트의 경우 외부에서 접속하게 되는 호스트(로컬)의 포트를 의미하고, 컨테이너..

DevOps/Docker 2023.06.29

Final Project - 마라톤 대회 결과 기록 시스템, 마라마라톤!

프로젝트 개요 개인 사용자와 대회 주최자를 위한 마라톤 대회 결과 기록 시스템 유저 데이터를 저장하고 있는 데이터베이스는 다른 데이터베이스와 분리되어 있음 기록 데이터를 기반으로 사용자별 점수를 기록하는 시스템은 데이터 유실을 막기 위해 SQS를 사용하여 느슨하게 결합됨 각 유저는 로그인 기능을 통해 유저 타입에 따른 토큰을 발급받으며, 해당 토큰을 기반으로 메인 서버에 대한 CRUD 요청이 동작함 요구사항 분석 인프라 요구사항 시스템 전반에 가용성, 내결함성, 확장성, 보안성이 고려된 서비스들이 포함되어야 합니다. 하나 이상의 컴퓨팅 유닛에 대한 CI/CD 파이프라인이 구성되어야합니다. Github Action을 이용하여 CI/CD 파이프라인 구성 유저 데이터를 저장하고 있는 유저 데이터베이스는 다른 ..

Code States/회고 2023.06.28

[0623] jwt 토큰을 이용한 유저 타입에 따른 crud api 분리

사용한 함수 트러블슈팅 if문 조건에 사용시 변수가 undefined로 인식되는 현상 발생 jwt 토큰 값을 decode해서 나온 값이 console.log로 출력했을 때는 정상적으로 나오나, if(user_type == 1)처럼 if문 안에 조건으로 사용했을 시에는 undefined로 인식되는 현상이 발생했다 변수 앞에 decoded.을 붙여서 해결 유저 타입에 따라 작동되는 예시

Code States/TIL 2023.06.23