분류 전체보기
-
[Project] 아키텍처 결정프로젝트/Movie-Ticketing 2024. 1. 9. 02:14
프로젝트를 진행하기 전 프로젝트에 적합한 소프트웨어 아키텍처를 선택하기 위한 고민을 해봤다. 애플리케이션의 아키텍처 스타일에 대한 선택은 애플리케이션의 목표와 비즈니스 요구 사항에 따라 달라진다. 모놀리식 아키텍처 전체 애플리케이션을 단일 코드로 작성해서 단일 데이터베이스에 연결한다. 장점 모든 코드가 단일 코드 베이스에 있기 때문에 애플리케이션을 로컬에서 실행할 경우 단일 애플리케이션만 실행하면 된다. 단일 프로젝트로 배포하면 되므로 간편하다. 모든 코드가 단일 애플리케이션에 있기 때문에 디버깅하기가 쉽다. 단점 애플리케이션이 크고 복잡해지만 유지 보수하기가 어렵다. 서비스를 확장하기 위해서는 전체 애플리케이션을 확장해야 한다. 모든 팀이 동일한 프로젝트에서 작업하므로 코드 병합에 대한 충돌 가능성이 ..
-
[Project] 일정 수립프로젝트/Movie-Ticketing 2024. 1. 9. 02:09
0주차: 프로젝트 일정 수립 및 요구 사항 분석 (1/5 ~ 1/11) 프로젝트 일정 수립 프로젝트 요구사항 정리 및 요구 사항에 따른 초기 API 스펙 정리 필요한 DB 스키마 설계 프로젝트 아키텍처 결정 1개월 -프로젝트 설계 및 개발환경 구축 (1/5 ~ 2/1) 1주차: 프로젝트 개발 환경 구축 (1/12 ~ 1/18) API 문서화 진행 FastAPI 내장 Swagger, Redoc을 활용해서 API 스펙 설계 개발 환경과 도구 구축 진행 백엔드 : FastAPI 패키지 버전 관리 : Poetry DB : MySQL 로컬 개발 환경 : Docker 배포 환경 구축 naver cloud platform을 활용해서 배포 환경 구축 2주차: 사용자 인증 및 보안 (1/19 ~ 1/25) 사용자 인증(..
-
-
리트코드 - 443. String Compression코딩테스트 2024. 1. 7. 16:08
https://leetcode.com/problems/string-compression/description/ String Compression - LeetCode Can you solve this real interview question? String Compression - Given an array of characters chars, compress it using the following algorithm: Begin with an empty string s. For each group of consecutive repeating characters in chars: * If the group's leng leetcode.com 문자 배열이 주어지면 다음 알고리즘을 사용하여 압축한다: 빈 문자..
-
리트코드 - 334. Increasing Triplet Subsequence코딩테스트 2024. 1. 6. 21:33
https://leetcode.com/problems/increasing-triplet-subsequence/description/ Increasing Triplet Subsequence - LeetCode Can you solve this real interview question? Increasing Triplet Subsequence - Given an integer array nums, return true if there exists a triple of indices (i, j, k) such that i < j < k and nums[i] < nums[j] < nums[k]. If no such indices exists, return false leetcode.com 정수 배열 nums가 ..
-
리트코드 - 238. Product of Array Except Self코딩테스트 2024. 1. 3. 01:12
정수 배열 nums가 주어졌을 때, answer[i]가 nums[i]를 제외한 nums의 모든 요소의 곱과 같도록 배열의 답을 반환한다. nums의 접두사 또는 접미사의 곱은 32비트 정수에 맞도록 보장된다. 나누기 연산을 사용하지 않고 O(n) 시간 내에 실행되는 알고리즘을 작성해야 한다. 풀이 1. 이 문제를 해결하기 위한 접근법은 두 개의 패스를 사용하는 것이다. 첫 번째 패스에서는 각 인덱스의 왼쪽에 있는 모든 숫자들의 곱을 계산하고, 두 번째 패스에서는 각 인덱스의 오른쪽에 있는 모든 숫자들의 곱을 계산한다. 마지막으로, 각 인덱스에 대해 이 두 개의 값(왼쪽 곱과 오른쪽 곱)을 곱한다. class Solution: def productExceptSelf(self, nums: List[int])..
-
Python GILTIL 2024. 1. 3. 00:59
파이썬의 표준 구현체로 C언어로 작성된 Cpython이 있다. Cpython은 두 단계를 거쳐서 파이썬 프로그램을 실행한다. 소스 코드 구문 분석과 바이트 코드 변환: 파이썬 소스 코드는 먼저 구문 분석 과정을 거쳐 추상 구문 트리(Abstract Syntax Tree, AST)로 변환된다. 그 후, 이 AST는 파이썬의 중간 표현인 '바이트 코드'로 변환된다. 바이트 코드는 기계어가 아닌, 파이썬 가상 머신이 이해할 수 있는 형태의 코드다. 스택 기반 인터프리터 실행: 변환된 바이트 코드는 스택 기반의 인터프리터를 통해 실행된다. 스택 기반 인터프리터는 명령어를 수행하기 위해 데이터를 스택에 저장하고, 이를 순차적으로 처리한다. 바이트 코드 인터프리터에는 파이썬 프로그램이 실행되는 동안 일관성 있게 유..
-
스레드를 많이 사용할 수록 성능이 증가할까?TIL 2024. 1. 2. 23:58
스레드를 많이 쓸수록 성능이 높아질까? 스레드는 프로세스 내에 존재하는 실행 단위이고, 멀티 스레드를 통해 음악을 들으면서 웹서핑을 하는 동시 작업이 가능하다. 스레드가 많을수록 동시에 처리할 수 있는 작업의 개수가 증가하는 것이기 때문에 멀티 스레드가 무조건 성능이 더 좋다고 생각하게 된다. 그러나 모든 상황에서 무조건 멀티 스레드가 싱글 스레드보다 좋다고 할 수는 없다. 1. 임계 영역에 대한 동기화 비용 멀티 스레드는 자원(전역 변수, heap 메모리 영역)을 공유하기 때문에 프로세스 생성에 비해 적은 메모리와 자원을 소모하고, 컨텍스트 스위칭도 프로세스보다 빠르다. 하지만 여러 개의 스레드가 임계 영역의 공유 자원에 접근할 수 있기 때문에, 데이터의 일관성과 정확성을 유지하기 위해 동기화 기법을 ..