Python

    [Python Framework] 파이썬 프레임워크와 웹서버 연동 - CGI, WSGI, ASGI 차이

    [Python Framework] 파이썬 프레임워크와 웹서버 연동 - CGI, WSGI, ASGI 차이

    Django 프로젝트를 AWS에 3-Tier로 구축하는데, 어떤 미들웨어를 어떻게 써야할지 잘 모르겠어서 관련 공부를 해보았다. 일반적으로 웹서버는 Python으로 작성되지 않기 때문에 Python을 쓰는 Django 웹 프레임워크를 사용하는 경우 웹서버와 소통을 가능하게 해줄 중간개체가 필요하다. 이 중간 매개체역할을 해주는 것들이 CGI, WSGI, ASGI이다. 1. CGI (Common Gateway Interface) CGI는 Common Gateway Interface의 약자로 웹서버에서 사용자 요청이 들어왔을 때 이를 프로세스로 생성하여 실행해주는 역할을 한다. 요청에 따라 프로세스를 fork*하거나 spawn*하기 때문에 메모리가 많이 차지될 수 있어 성능저하가 발생할 수 있다. 실제 처리..

    [Python] Mutable, Immutable 차이

    [Python] Mutable, Immutable 차이

    Python의 Dictionary타입은 Key, Value값을 가지는데, 이때 Key는 Immutable, Value는 Mutable 한 값을 가진다. 전에 Immutable과 Mutable의 차이에 대해 공부한 적 있었는데, 오랜만에 보니 어렴풋이 '바꿀 수 없는 값 / 바꿀 수 있는 값' 정도로만 기억이 나서 다시 공부하고 기록을 남겨보려고 한다. 먼저 Mutable한 객체와 Immutable한 객체엔 어떤 것이 있는지 표로 살펴보자. 구분 Type Immutable int, float, string, tuple, bool Mutable list, dict, set Immutable Python에서 Immutable한 객체는 '수정이 불가능 한 타입'을 의미한다. 코드로 바로 살펴보도록 하자. a =..

    [Django] 테스트 코드 작성해보기

    [Django] 테스트 코드 작성해보기

    Django 튜토리얼의 챕터 5가 테스트 작성에 대한 내용이다. '테스트 코드'에 대해 들어는 봤지만 실제로 작성해보기는 처음이기 때문에 왜 필요한지, 어떻게 작성하는지 기록해두고자 한다. https://docs.djangoproject.com/ko/4.2/intro/tutorial05/ Django The web framework for perfectionists with deadlines. docs.djangoproject.com 테스트 코드란? 말 그대로 내가 개발한 것에 대한 테스트를 수행하는 코드이다. 내가 개발한 코드가 원하는 대로 동작을 하더라도, 비정상 상황에 대해 정상인것 처럼 작동한다면 문제가 있는 코드이다. 특히 코드를 수정할 때 기존 코드와 꼬여 예상치 못한 동작을 하게 될 수 있는..

    [Flask] MVC pattern

    [Flask] MVC pattern

    MVC 패턴이란? Model-View-Controller 패턴으로 소프트웨어 코드를 작성하는 것이다. MVC 패턴을 사용하여 코드를 작성하면 유지보수가 쉬워진다는 주장이있는데, 꼭 그렇지만은 않다고 한다. 왜냐하면 하나의 기능에 대해 M V C 각각이 파일로 쪼개져있어서 코드 이해와 디버깅이 어려울 수 있다. Model - DB와 소통하며 데이터를 가지고 오거나 데이터를 가지고 있다. - 컨트롤러에게 데이터를 전달한다. - Database 영역 View - 유저가 보는 화면을 나타낸다 - 컨트롤러에게 데이터를 전달받아 유저에게 보여주거나, 유저 액션을 전달한다. Controller - Model과 View 사이를 중간에서 제어하는 역할을 한다. - 뷰로부터 사용자 액션과 인풋 값아 모델에게 전달하고, 모..

    [Python] Set과 List의 시간 복잡도 차이

    코딩테스트 공부를 하는데, List를 사용하면 시간 초과가 나왔던 문제가 Set을 사용하자 통과가 됐었다. 관련 포스팅: https://jjung0326.tistory.com/65 [Python] 백준 1987번 - 알파벳 문제: https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 jjung0326.tistory.com 이유는 List에서 x in s 연산을 하면 O(n)시간이 걸리는 반면 Set에서 x in s 연산을 하면 O(1)시간이 걸리기 때문이다. 이러한 차이가 생기는 이유가 뭘까? 이유는 Python에서 Se..