본문 바로가기

TIL

(102)
[TIL 2024. 05. 03] 심화 팀프로젝트 심화 프로젝트인 뉴스 웹 페이지의 기본기능 중에 댓글 조회,생성,수정,삭제를 맡게 되었다.댓글 생성기본적으로 댓글과 관련해서는 Comments라는 model을 작성했고, 직렬화를 위해서 serializer도 작성했다. 하지만 아주 아주 많은 기능을 제공해주는 django의 serializer에만 의존해서 코드를 작성하는 것은 장기적으로 봤을 때 다른 언어를 배워서 사용하고, 그 언어들의 serializer를 쓰게 될 때에 도움이 되지 않을 것 같아서 "직렬화"만 serializer를 쓰고, 기본적인 로직은 모두 view로 차근차근 작성해보기로 했다. 처음 작성한 model, serializer, view는 다음과 같다.      이 문제 해결의 실마리는 user와 article정보가 request로 제공..
[TIL 2024. 05. 02] 웹 서버 | 웹 애플리케이션 서버 모의면접을 준비하면서도 헷갈렸던 웹 서버와 웹 애플리케이션 서버에 대해서 정리해본다. 웹 서버(Web Server)정적 컨텐츠를 제공 -> WAS를 거치지 않고, 바로 요청한 컨텐츠를 제공할 수 있다동적인 컨텐츠의 제공을 위한 요청을 전달하기도 함마치 우리가 주기억장치에서 데이터를 가져오는 것의 비효율성을 극복하기 위해 캐시메모리를 쓰는 것과 유사한 원리이다. 즉, 사용자와의 상호작용이 필요하지 않고, 모든 사용자에게 동일한 데이터를 반환하면 될 때는 굳이 DB까지 hit하지 않고, 앞단에 위치하는 웹 서버 차원에서 바로 요청에 대한 결과를 반환해주는 것이다.  웹 애플리케이션 서버(WAS: Web Application Server)클라이언트의 요청에 따라 동적인 컨텐츠를 제공하는 서버(프로그램)정적 컨..
[TIL 2024. 05. 01] DRF 개인과제 오류수정(2) [TIL 2024. 04. 30] DRF 개인과제 오류수정이번 drf개인과제에서는 simplejwt를 auth에 사용하고 있다. 그런데 로그아웃 코드를 작성했는데, 계속 오류가 발생했다.당시에 작성한 코드는 다음과 같았다.  "logout/" url경로로 들어오면 프로젝oneday180.tistory.com 이 글은 위의 글과 이어진다. 위 글에서는 TokenBlacklistView로 로그아웃을 구현하고, 오류를 해결했다고 작성했었는데 위 TIL을 작성한 이후에 로그아웃 뷰에 대해 코드수정을 진행했다. 추가적으로 코드를 수정한 이유는 다음과 같다.로그아웃이란 로그인을 전제로 하는 것인데, access token을 req header를 통해 전달하지 않아도 로그아웃이 실행되는 점은 오류가 아닌가?로그아웃이..
[TIL 2024. 04. 30] DRF 개인과제 오류수정 이번 drf개인과제에서는 simplejwt를 auth에 사용하고 있다. 그런데 로그아웃 코드를 작성했는데, 계속 오류가 발생했다.당시에 작성한 코드는 다음과 같았다.  "logout/" url경로로 들어오면 프로젝트 폴더의 urls.py를 거쳐("api/accounts") 로그아웃 뷰가 처리된다.즉, "/api/accounts/logout/"경로이다. 가장 이해가 안됐던 것은 LogoutAPIView 클래스도 post()로만 작성한 상태였는데(분기 처리도 없이), 왜 POST요청이 Allow되지 않는다는 오류메시지가 뜨는가였다. 이 문제를 해결하기 위해 내가 시도해본 해결방법은 다음과 같다. 1. postman의 url을 확인 RESTful API를 개발하고 있기 때문에 FE단을 만들지 않으므로, 개발단..
[TIL 2024. 04. 29] 모의면접 회고록 오늘은 지난 금요일에 있었던 개인 모의면접 회고를 작성해볼까 한다. 우선 민준 튜터님은 블로그와 깃허브 주소를 제출해달라고 하셨다..ㅎㅎ [받은 질문들]1. Decorator에 대해 설명해주세요2. Class에 대해 알고 있는 것들을 설명해주세요3. 블로그에 RESTful API에 대해 작성하셨는데, 이에 대해 설명해주세요4. 깃허브에 올린 프로젝트의 CRUD를 어떻게 구현했는지 Method를 기준으로 설명해주세요5. 절차지향 프로그래밍과 객체지향 프로그래밍을 비교해서 설명해주세요6. MTV구조에 대해 설명해주세요7. 장고에서 app을 나누는 기준에 대해 본인 생각을 말씀해주세요 일단 대답 자체를 아예 못하거나 한 경우는 없었다.하지만 말이 다소간 두서 없이 정리되지 않은 느낌이 있어서 이와 관련한 보완..
[TIL 2024. 04. 26] 파이썬이 느린 이유 | 데코레이터 | 파이썬 메모리 관리 파이썬이 느린 기술적 이유 파이썬이 다른 언어에 비해 느리다는 것은 사실이라고 생각한다.비록 아주 짧은 시간의 차이이므로 우리가 체감하기는 어렵지만, 파이썬이라는 언어의 특성을 생각해보면 조금 느린 언어일 수밖에 없기 떄문이다인터프리터 언어 + 동적 타입 언어+PYTHON_GIL(메커니즘)Python의 GIL(Global Interpreter Lock): 한 번에 하나의 스레드만 (Python 바이트)코드를 실행하도록 보장하는 메커니즘 → “파이썬 프로그램은 특정 시점에 오직 하나의 스레드만 실행된다” → 멀티 스레드가 싱글 스레드처럼 기능함(성능병목 현상)하나의 스레드만 파이썬 인터프리터를 제어할 수 있도록 하는 뮤텍스멀티스레딩 환경에서의 동시성 문제(경쟁,데드락, 데이터 일관성)를 해결하는 간단한 방..
[TIL 2024. 04. 25] Python GIL | 메모리 관리 Python의 GIL(Global Interpreter Lock) 파이썬 인터프리터가 한 번에 하나의 스레드만 파이썬 바이트코드를 실행하도록 제어하는 메커니즘멀티스레드 환경에서 동시에 여러 개의 CPU 코어를 활용하는 것을 제한하는데 사용GIL은 다음과 같은 문제를 발생시킬 수 있다성능 제한:GIL로 인해 파이썬 스레드는 하나의 CPU 코어에서만 실행되므로// 멀티코어 시스템에서 CPU 사용률을 최적화할 수 없다(=멀티코어 활용의 제한=멀티코어에서 병렬처리가 제한됨). → (특히)CPU 집약적인 작업을 수행하는 다중 스레드 응용 프로그램의 성능이 크게 저하될 수 있다.스레드 간 경쟁: GIL로 인해 파이썬 스레드는 CPU 자원에 대한 경쟁을 경험하게 된다. 이로 인해 스레드 간의 경쟁이 발생할 수 있고,..
[TIL 2024. 04. 24] 컴파일러와 인터프리터 | 정적타입과 동적타입 컴파일러와 인터프리터컴파일러와 인터프리터 모두 사람의 언어(프로그래밍 언어)를 0과 1로 이루어진 기계어로 변환하기 위한 것단, 컴파일이 한번에 기계어로 변환/인터프리터는 한줄씩 기계어로 변환한다는 차이 있을 뿐두 개의 장단점은 서로 크로스됨 컴파일러: 일반적으로 정적 타입 언어가 사용함 장점일단 스캔을 마치면 실행파일을 만들어 두고 계속 사용 → 실행속도가 인터프리터보다 빠름 (실행 전에 사전에 컴파일(기계어로 변환) 되어 있음)전체 코드를 검사한 후에 오류 메시지를 생성 → 프로그램 실행 전에 오류 발생 가능→상대적으로 디버깅이 어려움대부분의 플랫폼에서 실행 가능, 이식성 높음  단점초기 스캔시간이 오래 걸림 (프로그램 실행에 필요한 모든 파일을 스캔하기 ..