전체 글 315

[Web 기본] HTTP 메소드 (+ PRG 패턴)

HTTP 메소드 종류 📁 GET 서버로부터 데이터를 요청(GET)하는 메소드 GET은 요청을 전송시 필요 데이터를 Body 대신, 쿼리스트링을 통해 전송함 📁 POST 데이터를 생성(등록)하는 요청에 주로 사용되는 메소드 📁 PUT 데이터 리소스를 대체, 해당 리소스 없으면 생성. 쉽게 말해 데이터를 덮어씀 📁 PATCH PUT 과 유사하게 리소스 수정시 사용. 다른점은 PATCH는 데이터 리소스 일부분만 변경 가능 📁 DELETE 삭제 요청을 보낼 때 사용되는 메소드 📁 기타 메소드 4가지 HEAD: GET과 유사, 메시지 부분을 제외하고 상태 줄과 헤더만 반환 OPTIONS: 대상 리소스에 대한 통신 가능 옵션 설명 (주로 CORS에서 사용) CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을..

[Web 기본] HTTP 상태 코드 정리

HTTP 응답 코드 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다. 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다. 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다. 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다. 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다. 1XX : Information responses 상태코드 요약 의미 100 Continue 진행중임을 의미 101 Switching Protocol 서버에서 프로토콜 변경할 것임을 알려줌 102 Processing 서버가 요청을 수신 후 처리 중 이란 뜻 2XX : Successful responses 상태코드 요약 의미 ..

[Cron] 작업 스케쥴러 (Cron, CronTab, CronJob)

Cron & CronTab 이란? Cron이란 유닉스 계열에서 시간 기반 Job Scheduler로 주기적인 시간 or 날짜 마다 실행 하는 것 윈도우에서는 작업 스케쥴러라는 명칭을 많이 씀 🎈 Cron 주어진 스케줄 마다 쉘 명령어를 실행하는 주체 cron : the name of the tool 🎈 CronTab cron 데몬들에 대한 명령어들이 보관된 작업 목록(+Cron 작업에 대한 설정)을 의미 crontab is generally the file that lists the jobs 🎈 CronJob 크론이 실행되어 크론 탭에 쌓이면, 그러한 행위들을 크론잡 cron will be executing, and those jobs are cronjobs. 실행 방법 1. Linux 자체 Cron 이..

[Python Utils] Python 제너레이터 사용

제너레이터 동작 방식 Generator yield 문은 메모리 절약을 위한 기법으로, generator는 iterator를 생성해주고 함수 안에 yield 키워드를 이용해서 데이터를 순차적으로 반환한다. 제너레이터의 이점으로는 메모리 절약 뿐만 아니라, 자연스러운 데이터 흐름 파이프라인으로 구성이 가능하다. (ex. 긴 스트림에 대한 주기적인 처리를 할 때, 특정 단위로 반복이 가능하다.) 제너레이터의 동작방식은 아래와 같다. 예제 코드 #제네레이터 생성 def ex_func1(nums): for i in nums: yield i * i if __name__ =="__main__": generator_ex = ex_func1([1,2,3]) print(next(generator_ex)) # 1 print..

Python/Utils 2022.08.25

[SW 개발] 테스트 중심의 개발 TDD (with. Unit, E2E, Integration)

"의도하지 않은 결함 수가 많아지면 개발자는 변경을 주저한다" 테스트 주도 개발 (TDD) 란? Test Driven Development 의 약자로 테스트 주도 개발이란는 뜻을 가지는 소프트웨어 개발 방법론 중 하나이다. 작성한 코드의 검증이나 수정(리팩토링)시 기능이 의도한대로 동작하는지 체크할 때 사용 검증 절차를 통한 안정성을 높여 준다. 테스트 종류 구현한 코드가 정상적으로 작동하는지 확인하기 위해선 테스트가 필요한데, 테스트를 하고자 하는 범위(상황)에 따라 다양한 테스트 방법이 등장했다. UnitTest (단위테스트) EndtoEnd Test (종단 테스트) Integration Test (통합 테스트) Unit Test 함수 or Class 등 코드의 작은 부분을 테스트 하는 방식 ex. ..

[Python Utils] Python Decorator 활용

Python Decorator란? 파이썬 데코레이터란 함수를 수정하지 않고 추가 적인 기능을 더하고 싶을 때 주로 사용 아래 예제 코드를 수행하면 함수 호출 전이나 후에 기능이 동작하게 할 수 있다. def trace(func): # 호출할 함수를 매개변수로 받음 def wrapper(): print(func.__name__, '함수 시작') # __name__으로 함수 이름 출력 func() # 매개변수로 받은 함수를 호출 print(func.__name__, '함수 끝') return wrapper # wrapper 함수 반환 @trace # @데코레이터 def hello(): print('hello') hello() # 함수를 그대로 호출 ##출력 결과 hello 함수 시작 hello hello 함..

Python/Utils 2022.08.25

[Python 심화] Python의 GIL과 느린 이유

Python이 느린 이유 🎈 1. 파이썬은 C, Java와 달리 동적 타입 언어이다. 정적 타입 언어는 사전에 자료형을 명시하는 경우이고, 동적 타입 언어란 자료형을 명시하지 않는 경우의 언어이다. 아래 덧셈 연산으로 비교해보면 파이썬이 훨씬 더 절차가 복잡한 것을 알 수 있다. C언어 파이썬 int a=1; int b=2; int c = a+b; a=1 b=2 c=a+b 컴파일(자료형 판단 완료) => a에 1할당 => b에 2할당 => 덧셈 연산 호출 => 결과 c에 할당 a에 1할당 => a타입판단 => a 값 정수 1 설정 => b에 1할당 => b타입판단 => b 값 정수 2 설정 => 덧셈 연산 호출 => 객체 c 생성 => c자료형 정수 설정 => c 값 정수 3 설정 🎈 2. 파이썬은 인터..

Python/Advanced 2022.08.24

[Python Utils] Python Type 어노테이션/힌트 (Typing, mypy)

Python Type 어노테이션/힌트가 필요한 이유는? Python은 동적 타입 언어(Dynamic language)로 실행하는 시점에 변수의 타입(Type)을 고려하며 체크하기 때문에 타입 힌팅을 통해 좀 더 방어적인 코드를 작성 할 수 있다. mypy mypy는 정적 타입의 검사기로 실행시 함수에 정상적으로 Type이 맞게 들어오는지 검사 해주는 역할을 한다. # 라이브러리 설치 pip install mypy # 실행 명령어 mypy test.py # test.py def add(a: int, b: int) -> int: # int형 변수 a와 b를 입력받아서 int형 값을 반환 return a + b if __name__ == "__main__": add(1, 2) # 성공 add('h', 3) #..

Python/Utils 2022.08.24

[Python Utils] 코드 컨벤션 (pylint, flake8, pre-commit, mypy)

Pylint 파이썬 코드의 오류를 확인 및 코딩 표준 (PEP8) 을 검사 아래 처럼 Score와 문제가 있는 Line을 출력 해준다. # 라이브러리 설치 pip install pylint # pylint 실행 pylint pre-commit hook git 로컬에서 커밋시마다 주어진 조건에 따라 TEST 해주는 도구 black, isort, pylint, flake8 등... 다양한 code formatter와 style checker들을 차례대로 진행되게 할 수 있다. 설정은 pre-commit-config.yaml 파일로 관리 아래는 pre-commit으로 간단히 black이란 code formatter를 hook으로 거는 것 명령어 $ pip install pre-commit $ pre-commi..

Python/Utils 2022.08.24

[SW 개발] MSA vs 모놀리식

Monolithic Architecture (모놀리식 아키텍쳐) 👉 장점 서비스의 개발 환경이 동일해 복잡하지 않다. End-to-End 테스트와 개발 및 관리가 용이 👉 단점 프로젝트의 규모가 커지면 작은 부분을 수정하더라도 전체를 다시 빌드 & 배포 해야 한다. 특정 부분의 오류로 인해 전체 서비스에 문제가 생길 수 있다. 시스템이 거대해질 수록 코드를 이해하기 어려워지고, 유지보수하기가 어려워진다. MSA (Micro Service Architecture) 👉 장점 서비스별로 독립적으로 모듈을 나눠 구현함으로서, 개발이 용이 (빌드 및 테스트 시간 단축)하다. 특정 서비스가 버그가 생겨 중단되더라도, 전체 서비스에는 영향을 미치지 않는다. 폴리그랏 아키텍쳐 구성이 가능하여 (폴리그랏 : 여러 언어(..