1. 그리디(Greedy) 알고리즘 이란?그리디 알고리즘이란 문제를 해결하는 과정에서 매 순간 가장 최선인 선택을 하는 알고리즘이다.그리디는 우리말로 탐욕이라는 뜻으로 국내에서는 "탐욕 알고리즘"이라고 칭하기도 한다.그리디 유형의 문제는 타 알고리즘과 비교했을 때 사전에 외우고 있지 않아도 풀 수 있는 가능성이 가장 높은 유형이라는 특징이 있다. 해당 알고리즘을 이용하면 매 순간 가장 좋아 보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다.그렇기 때문에 항상 최적의 값을 보장하는 것이 아니라 최적의 값의 '근사한 값'을 목표로 한다. 2. 그리디 알고리즘의 2가지 조건그리디 알고리즘은 두 가지 조건이 성립해야 적용할 수 있다. 1) 탐욕 선택 속성매 단계에서 가장 최적의..
실제 서비스를 운영하다보면 사업자등록정보에 대한 진위여부 혹은 상태조회를 해야할 때가 있다.이번에는 국세청에서 제공하는 사업자등록정보 진위확인 및 사업자등록 상태조회 API 서비스 사용법에 대해 알아보겠다. 1. 국세청 사업자등록정보 진위확인 및 상태조회 API란?국세청 사업자등록정보 진위확인 및 상태조회 API는 한국 국세청이 제공하는 서비스로, 특정 사업자등록번호의 유효성과 상태를 확인할 수 있는 API이다. 이 API는 주로 온라인 서비스 제공자나 플랫폼 운영자가 사업자의 등록 정보를 검증하거나, 해당 사업자가 정상적으로 영업 중인지 확인하기 위해 사용된다. 주요 기능은 아래와 같다. 1) 사업자등록번호 진위확인 • 입력된 사업자등록번호가 실제로 국세청에 등록된 번호인지 확인 • 올바른 사업자등록..
이번에 새로운 프로젝트를 진행하게 되었다.프로젝트 기획 회의 중 이번에는 테스트코드를 제대로 활용하는 방안으로 가는 것으로 이야기가 나왔다.테스트코드에 대해서 깊게 알지 못했던 나는 이번 기회를 통해 테스트코드 즉 TDD에 대해 살펴보고 연습해보기로 했다.1. TDD란 ?테스트 주도 개발(TDD, Test-Driven Development)테스트를 먼저 작성한 후 그 테스트를 통과하기 위한 최소한의 코드를 작성하고, 이후에 리팩토링을 통해 코드를 개선하는 개발 방법론이다. * TDD의 세 가지 주요 단계 1) Red (실패하는 테스트 작성)• 원하는 기능에 대한 테스트를 작성하지만, 아직 기능이 구현되지 않았기 때문에 테스트가 실패 • 예: 특정 URL로 요청하면 “Hello, world!“를 반환해..
요즘 개발자들한테 Github는 본인 SNS와 비슷한 역할을 하곤 한다.단순히 협업만을 위한 도구가 아니라 자신의 개발 역량을 표출하는 도구가 된다.그래서 오늘은 GitHub README를 꾸미는 방법에 대해 알아보겠다.1. GitHub README 생성우선 Github로 이동해 레포지토리를 만들어야한다.여기서 중요한 점은 두가지이다. 1. 본인의 Github 닉네임과 동일한 레포 생성2.Add a README file 체크 본인은 이미 레포를 생성한 상태라 중복이라 뜨지만 이대로 진행하면 된다. 이제 생성된 레포지토리의 README 파일을 수정해줌으로써 꾸밀 수 있다.README 파일은 마크다운으로 작성할 수 있고, HTML으로도 작성할 수 있다.참고로 마크다운 사용법은 아래를 참고 마크다운(Mar..
***해당 글은 CORS에 대한 기본적인 배경과 개념도 다루고 있습니다.시간이 없어서 바로 해결 방법을 확인하실 분은 3번으로 바로 가주세요! 1. CORS 배경 이해하기웹개발을 하면서 누구나 마주하게 되는 악명높은 CORS 오류에 대한 모든 것을 이야기 해보겠다.모든 오류는 구조를 알아야 올바르게 해결할 수 있다.우선 CORS를 이해하기 위해서 선행으로 알아야 하는 개념이 있다. * SOP (Same-origin policy) SOP (Same-origin policy), 동일 출처 정책이라고 부른다.이는 브라우저가 다른 출처에서 로드된 자원과 상호작용 하지 못하도록 요청 발생을 제하하고,동일 출처 (Same Origin)에서만 접근이 가능한 정책이다. 동일 출처, 다른 출처? 대체 출처가 뭔데? * ..
간단한 기능 테스트를 위해 React 프로젝트를 생성하는데 오류가 발생했다. 오류 내용을 간단히 살펴보니 React의 버전 충돌로 인한 의존성 문제로 확인된다.현재 프로젝트에서는 19.0.0 버전이 사용중인데 특정 라이브러리가 18.0.0을 요구하고 있다는 내용이다. 해결 방법 1 npm이 의존성 충돌을 자체적으로 해결할 수 있도록 --legacy-peer-deps 플래그를 사용해 설치npx create-react-app --legacy-peer-deps 해결 방법 2 생성된 프로젝트로 이동 후 React 버전을 다운그레이드npm install react@18 react-dom@18
오늘은 Python Framework 3대장인 Django, Flask, Fast-API의 각 장,단점을 알아보도록 하겠다. 사전에 앞서 모놀리식 아키텍처와 마이크로 서비스 아키텍처에 대해 이해하고 있다면 각 프레임워크의 차이점을 이해하는데 큰 도움이 될 것이라고 생각한다. ⏬ 게시물 링크 더보기2023.02.26 - [Back-End] - 마이크로 서비스 아키텍처 (MSA) 그리고 모놀리식 아키텍처 파이썬 프레임워크 추이2021년 기준 Django와 Flask가 압도적인 점유율을 보인다. 그러나 2022년 기준 약 1년안에 Fast-API가 빠르게 치고 올라온 상황을 알 수 있다. DjangoDjango 장점풀스택 프레임워크MTV 아키텍처를 활용한 비즈니스 로직 용이성자체적인 ORM 제공반복적으로..
Fast-API 공식문서를 보며 스터디를 하는데 서버를 구동시키는 부분에서 문제가 생겼다. 분명 공식문서 절차대로 실행했음에도 불구하고 uvicorn이 실행되지 않는것을 볼 수 있다. 반면 mac을 통해 진행해보면 공식문서 절차대로 따라하면 서버가 구동되는 것을 볼 수 있다.window 환경에서만 일어나는 문제같다. 해결방법은 2가지가 있다. 첫 번째, 해결 방법1. main.py 하단에 해당 코드 작성 if __name__ == '__main__': uvicorn.run('main:app', reload=True) 2. main.py를 직접 실행>> python main.py정상적으로 실행됨을 확인할 수 있다. 두 번째, 해결 방법1. python -m uvicorn main:..