no image
KMP 문자열 탐색
KMP : 크누스 - 모리스 - 프랫 어쩌구. 이전 단계에서 검사했던 결과를 버리지 않고 효율적으로 활용하는 알고리즘 검사했던 결과를 버리지 않고 효율적으로 활용하는 알고리즘 불일치가 발생하기 직전까지 같았던 부분은 다시 비교하지 않고 패턴 매칭을 진행 비교 횟수를 줄여, 검색 알고리즘의 효율성을 높임 검사 부분 내에 패턴의 일부와 동일한 부분이 있는지 판단 그 위치만큼 밀기 텍스트와 패턴 안에서 겹치는 문자열을 찾아내 검사를 다시 시작할 위치를 구해, 패턴의 이동을 최대한 크게 한다. KMP 테이블 생성 패턴과 패턴을 서로 겹치도록 맞추고 검사를 시작할 곳을 테이블에 작성한다. 미리 나온 패턴에 대해 겹치는 부분이 있는 지 검사한다. KMP 법에서 사용하는 패턴 문자열 만들기 접두사 배열과 접미사 배열..
2024.04.04
no image
[AWS/DynamoDB] Backup / Modeling & Migration
PITR 특정 시점 복구 실수로 인한 쓰기 또는 삭제 작업으로 부터의 테이블 보호 디폴트 값은 false로 유지 최근 35일에 대한 백업본 저장 동일한 리전 또는 백업본을 위한 다른 리전으로 복원도 가능 On - Demand Backup DynamoDB 백업 삭제 지시까지 영원히 유지 특정 시점에 대한 직접적인 백업본 생성 가능 Schedule Backup AWS Bakcup 에서 Backup vault 생성 필요 생성한 Backup vault에 따라 dbBackupPlan 세우기 DynamoDB에는 현재 Cold Storage 지원 ❌ 예약된 작업에 대한 확인 Amazon DynamoDB Workshop & Labs 백업 제한에 대한 IAM 권한 설정 가능 { "Version": "2012-10-17"..
2024.02.01
no image
[모던 자바 인 액션] 2. 동작 파라미터화 코드 전달하기
우리가 어떤 상황에서 일을 하든 소비자 요구사항은 항상 바뀐다. ⇒ 변화하는 요구사항은 불가피한 문제 ❓변화하는 요구사항의 대처 엔지니어링적인 비용 최소화 새로 추가한 기능 → 쉽게 구현 장기적인 관점 → 유지보수 용이 동작 파라미터화(behavior parameterization) 자주 바뀌는 요구사항에 효과적으로 대응 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록⇒ 코드 블록의 실행은 나중으로 미뤄진다. ⇒ 나중에 프로그램에서 호출 e.g. 나중에 실행될 메서드의 인수로 “코드 블록”을 전달 ⭐ 메서드의 동작이 파라미터화된다. - 리스트의 모든 요소에 대해서 ‘어떤 동작’을 수행 - 리스트의 관련 작업을 끝낸 다음에 ‘어떤 다른 동작’을 수행할 수 있음 - 에러가 발생하면 ‘정해진 어떤 다른 ..
2024.01.29
no image
[AWS/EFS, API Gateway, Lambda] 비디오 서버 서버리스로 마이그레이션 하기
- 2023년 8월 인턴 업무를 진행하며 IaaS 아키텍처를 FaaS 아키텍처로 바꾸면서 개발팀 내부에 공유했었던 문서를 각색하여 작성하였습니다. - Fast API 프로젝트에서 서버리스로 마이그레이션하기 위한 방식을 적은 포스팅으로, 본 포스팅은 FastAPI + AWS 환경에서 배포를 진행하는 프로젝트에 최적화되어 있습니다. 🧍🏻Intro 현재 상황 서버 측에 비디오 처리 요청 시, 한번에 하나의 작업만을 처리하여 워크로드가 많이 듦 문제 상황 재현 클라이언트가 Merge 작업을 요청하고 해당 작업을 취소 coroutine_tasks 를 통한 Moviepy 작업 수행 🚨 문제 상황 발생 코루틴의 작업 처리 대기 중 연결 취소 → 큐에 쌓인 채 작업 처리 대기 이미 취소된 작업임에도 큐에 남아있어서 다..
2024.01.28
no image
[모던 자바 인 액션] 1. 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가?
자바 역사를 통틀어 가장 큰 변화가 자바 8에서 일어났다. 1.1 역사의 흐름은 무엇인가? 자바 8을 이용하면 자연어에 더 가깝게 간단한 방식으로 코드를 구현할 수 있다. 지금까지의 대부분의 자바 프로그램은 코어 중 하나만을 사용했다. 나머지 코어는 유휴 idle 상태로 두거나, 운영체제나 바이러스 검사 프로그램과 프로세스 파워를 나눠서 사용 자바 8 등장 이전 : 나머지 코어 활용 → 스레드 스레드 사용은 관리가 어렵고 많은 문제가 발생할 수 있음 자바 1.0 : 스레드, 락, 메모리 모델 지원 자바 5 : 스레드 풀(thread pool), 병렬 실행 컬렉션(concurrent collection) 자바 7 : 포크/조인 프레임워크 자바 8 : 스트림 API, 동작 파라미터화, 인터페이스의 디폴트 메..
2024.01.25
no image
[AWS/DynamoDB] Explore DynamoDB with the CLI
READ Sample DATA Scan API 전체 테이블 스캔 1MB 청크로 항목 리턴 DynamoDB JSON 형식 사용 aws dynamodb scan --table-name ProductCatalog GetItem API 단일 항목만 읽기 전체 기본키를 지정해야함 Dynamo DB의 읽기 : 최종 일관성 사용 💡 Read Consistency - 읽기 일관성(읽기 정합성) 읽기를 진행하는 데이터 : 테이블 / LSI / GSI / 스트림 데이터 테이블, LSI 모두 eventual consistency(최종 일관성), strongly consistent(강한 일관성) 지원 다양한 옵션 -consistent-read : Specifying that you want a strongly consiste..
2024.01.21
[AWS/DynamoDB] Overview
완전관리형 NoSQL DB서비스 하드웨어 프로비저닝, 구성 및 설정, 복제, 패치, 클러스터 스케일링 등을 신경쓸 필요가 없다. KMS를 이용한 Key관리 지원을 통한 보안 강화도 도모함 DB 테이블 DynamoDB 자동으로 AWS 리전별로 데이터를 AZ 3곳에 복제하여 저장 하나 장애가 발생하여 정지해도 DB 정상 사용 가능 → ⭐ 고가용성 높은 가용성 및 지속성 제공 따로 데이터 백업 필요 ❌ AWS S3와 같이 저장 용량은 무제한 데이터 형식 Scalar Data types : Number, String, Binary Multi-valued types : Number Set, String Set, Binary Set Primary Key 해시키 : 고유값 해키키 + 범위키 :정렬 / 범위 값 / 모..
2024.01.17
no image
중고나라 솔루션개발팀 인턴 회고
지난 2023.09.01. ~ 2023.12.31. 네 달간 ICT 학점 연계 인턴십으로 중고나라 솔루션개발팀에서 인턴으로 근무한 경험을 정리해봤습니다. ‘말하는 감자’의 인턴 지원기 중고나라 인턴을 하기 전 저는 막학기를 남겨둔 흔한 컴퓨터 공학도.. 아니 말하는 감자.. 였습니다. 지난 여름.. 실무에 대한 갈망이 가장 컸던 시기로, 이미 인턴을 하고 있었지만 다시 학교로 돌아가야했고 얼른 졸업을 하고 싶다는 마음 뿐이었습니다. 그러던 중 전공 학점을 받으면서 실무 경험을 할 수 있다는 ‘ICT 학점연계 프로젝트 인턴십’을 알게되었고 이 점이 매력적으로 다가와 바로 지원서를 쓰기 시작했습니다. 그 중 유저 보이스를 직접적으로 들을 수 있다는 점과 C2C 이커머스에 대한 궁금증과 관심으로 중고나라에 지..
2024.01.15
[NestJS] TypeORM
TypeORM node.js 기반 TypeScript로 작성된 객체 관계형 매퍼 라이브러리 TypeORM 특징 & 이점 모델을 기반으로 데이터베이스 체계 자동 생성 가능 데이터베이스에서 개체 쉽게 삽입, 업데이트 및 삭제 가능 테이블 간의 매핑 간단한 CLI 명령 제공 ORM(Object Relational Mapping) 객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결하는 작업 객체와 데이터베이스의 변형에 유연하게 사용 가능 Entity? 데이터베이스 테이블로 변환되는 Class이므로 클래스를 생성한 뒤 그 안에 컬럼들을 정의한다. @Entity() : Board 클래스가 엔티티임을 나타냄 @PrimaryGeneratedColumn() : id 컬럼이 Board 엔티티의 기본키 임을 나타냄..
2024.01.15