1. 개요 데이크스트라 알고리즘은 네덜란드의 컴퓨터 과학자인 에츠허르 데이크스트라가 1956년에 고안했으며 3년 뒤에 발표한 알고리즘입니다. 데이크스트라가 언론에서 밝힌 인터뷰에 의하면 해당 알고리즘은 ‘20분짜리 발명품’으로 약혼녀와 쇼핑 후 지친 상태에서 고안해냈다고 합니다. 이러한 20분짜리 발명품으로 데이스크라는 1972년 프로그래밍 언어 분야로 튜링상을 받기도 했습니다. 데이크스트라 알고리즘은 꼭짓점과 각 꼭짓점을 연결하는 변이 있는 그래프에서 두 꼭짓점간의 가장 짧은 경로를 찾는 알고리즘으로 우선순위 큐(Priority Queue)를 사용하지 않았기 때문에 시간복잡도는 𝑶(𝑉²) 입니다. 현재까지 다양한 변형을 통해 이용되고 있으며, 일반적으로는 그래프의 꼭짓점 중 특정 꼭짓점를 기준으로 다른..
오늘은 이전 '결제 프로세스 및 사업자별 역할' 포스팅한 학습내용을 바탕으로 간단한 결제 서비스를 구현을 해보기 이전에 구현 과정에서 필요한 결제 API 분석과 요구사항 정의 및 엔티티 구성 내용을 정리해보았습니다. 1. 결제 API 분석 이번 결제 서비스를 구축하기 위해 선정한 외부 API는 '포트원' 입니다. 포트원을 선정한 이유는 레퍼런스가 많고, 구현을 위해 제공되는 공식문서가 잘 정리되어 있다는 점이 가장 큰 메리트로 판단되었기 때문입니다. (참고로 포트원은 기존 import에서 변경된 명칭입니다.) 포트원은 GitBook을 활용하여 개발가이드를 제공해 주고 있으며, 대표적인 결제방식으로는 인증 결제 방식과 비 인증 결제 방식을 지원하고있습니다. 인증 결제 인증 결제란 고객이 신용카드 결제를 요..
오늘은 백엔드 개발자 지망생으로 웹 서비스 프로젝트에서 '결제' 기능 구현을 맡았으나 정작 '결제'가 무엇인지 몰라 면접에서 커다란 패배감을 얻고 이를 반성하기 위해 학습한 내용을 정리해 보았습니다. 저는 국비 교육 과정의 프로젝트를 통해 영화 예매 및 결제 기능을 구현해본 경험이 있습니다. 프로젝트 진행 과정에서 프로그래밍 언어와 CS 학습에만 급급한 나머지 실제 서비스에 대한 배경 지식이 갖추지 못한 상태로 개발을 진행했으며, 최근에서야 회고를 통해 무지한 상태로 개발했다는 사실을 깨달았습니다. 늦었지만 지금이라도 개선하기 위해 결제 기능을 개발하기 위해 알아야할 기본 지식을 알아보고자 합니다. 1. 결제 프로세스 우리가 평소에 자주 경험하는 결제의 프로세스는 위와 같습니다. 오프라인 결제는 단순한..
AWS EC2/Linux 를 이용하여 프로젝트를 배포하는 과정에서 발생한 문제들과 그 문제들을 해결하는 과정들을 정리해보았습니다. 개요 AWS EC2를 프리티어로 이용할 경우 몇가지 큰 장벽이 있습니다. 이 글에서 중점적으로 다룰 내용 메모리 문제와 관련된 내용입니다. 디테일한 배포 절차에 대해 제가 참고한 글들은 제일 하단 '참고자료'에 링크로 첨부해두겠습니다. 기본 사항 프로젝트의 fron-end에 사용된 대표적인 기술은 React와 Nginx이며, 배포할 프로젝트는 비즈니스가 아닌 학습용으로 EC2 프리티어를 사용했습니다. 문제 발생 1. EC2/Linux 터미널을 통해 git clone 하여 프로젝트를 저장했습니다. 2. 웹 서버를 Nginx로 사용하여 배포하기 위해 React app을 build..
안녕하세요. 백엔드 개발자를 목표로 학습하는 주니어개발자입니다. 오늘은 JPA의 엔티티와 영속성컨텍스트를 학습한 내용을 간략하게 정리해보았습니다. 코드 예제보다는 이론 위주로 정리한 내용이라 JPA에 대한 기본 지식이 없을 경우 다소 어려울 수 있다고 있을 것 같습니다. 1. 엔티티(entity) 엔티티는 DB 테이블과 매핑하기 위한 객체입니다. @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String userName; @Embedded private Address homeAddress; ... } 위 예제는 엔티티를 ..
안녕하세요. 현재 백엔드 개발자를 목표로 취업을 준비중인 주니어 개발자입니다. 기존에 사용 중인 Object Mapping 기술인 Mybatis를 대신하여 Object Relational Mapping 기술인 JPA를 사용하고자 학습하게 되었으며, 학습 과정에서 알게된 내용을 바탕으로 JPA가 무엇인지, 그리고 왜 사용해야 하는지에 대한 내용을 정리해 보았습니다. What is JPA? 1. Java Persistence API. 즉, 자바 영속성 API를 뜻합니다. '영속성' 이란? 지속성이라고도 하며, 데이터를 생성한 프로그램이 종료되어도 사라지지지 않는 데이터의 특성을 말합니다. 저의 경우 처음 학습을 시작했을 때 위의 영속성의 정의를 JPA의 동작 방식과 연관하여 이해하기 쉽지 않았습니다. 하여 ..
- Total
- Today
- Yesterday