분류 전체보기 158

CH3. 좋은 코드의 일반적인 특징

내용은 "유지보수가 쉬운 파이썬 코드를 만드는 비결" 이라는 책을 보고 요약 정리한 내용입니다. 목표 견고한 소프트웨어의 개념 작업 중 잘못된 데이터를 다루는 방법 새로운 요구사항을 쉽게 수용하고 확장할 수 있는 유지보수가 쉬운 SW 설계 재사용 가능한 SW 설계 생산성을 높이는 효율적인 코드 작성 계약에 의한 디자인 디자인 바이 컨튜렉 컴포넌트는 기능을 숨겨 캡슐화하고 이를 사용할 수 있도록 API(인터페이스)를 노출해야 한다. API를 디자인할 때에는 예상되는 입출력과 부작용을 문서화해야 한다. 이때 계약 이라는 개념이 생긴다. 💡 계약에 의한 디자인이란? 양측이 동의하는 계약을 먼저 한 다음, 계약을 어겼을 경우 명시적으로 왜 계속할 수 없는지 예외를 발생시키라는 것이다. def divide(a: ..

unmanaged table에 대한 django test 하는 방법

장고의 모델 클래스에는 Meta 옵션 중 하나로 managed라는 값이 존재한다. 이는 True 또는 False이고 기본값은 True로 설정된다. True로 설정된다면 그 뜻은 다음과 같다. 쉽게 말해 장고가 해당 모델 클래스를 관리한다는 뜻이다. 이를 공식문서에서는 어떻게 표현하고 있냐면, https://docs.djangoproject.com/en/4.2/ref/models/options/#managed Django The web framework for perfectionists with deadlines. docs.djangoproject.com That is, Django manages the database tables’ lifecycles. 즉, 테이블의 수명 주기를 관리한다라고 한다. 테이..

[ C. S. ] 인증 방식 개념 정리

조만간 필요할 것 같기도 하고, 계속해서 다시 상기시켜야 할 주요 개념 중 하나인 인증 방식과 관련한 내용들을 정리해보려고 한다. 한창 면접때 공부했던 기억이 있는데 벌써 가물가물해진 것 같다. 애매하게 알고 있는 것은 정말 "내 것"이 아니다. Cookies 쿠키를 이용해서 서버는 브라우저에 데이터를 넣을 수 있다. 사용자에 대한 내용을 기억하기 위함 어떤 사이트에 방문하면 브라우저는 서버에 요청을 보낸다. 서버는 이에 응답할텐데, 응답으로는 모든 데이터와 요청한 정보들이 있다. 응답에 추가로 브라우저에 저장하고자 하는 쿠키가 있을 수 있다. 사용자가 브라우저에 쿠키를 저장한 후, 해당 웹사이트를 방문할 때마다 쿠키와 함께 요청을 서버에 보내게 된다. 참고로 쿠키는 도메인에 따라 제한된다. 또한 쿠키는..

Computer Science 2023.02.20

[ Django ] select_related()와 prefetch_related()

Django를 좀 한다 그러면 이 둘의 개념은 필수적으로 알아야 한다. (그래야 밥벌어 먹고 살 수 있엉..) 기본 개념을 숙지하고 반복해서 실무에 적용할 수 있도록 하여 내 것으로 만들어야겠다! 사용하는 이유? - QuerySet은 기본적으로 Lazy Loading(지연 로딩) 방식을 선택한다. - 하지만 SQL로 한번에 많은 양의 데이터를 가지고오고 싶을 때가 있으며 그럴때 위의 메소드들를 사용한다. - 즉, 관계가 있는 object를 Eager Loading(즉시 로딩) 하기 위해서 사용한다. 이 둘의 차이점? - 1:1, 1:N, N:M의 관계중에 따라 달리 사용되어진다. - 우선 가장 큰 차이점으로는 추가 쿼리가 발생하는지 안하는지이다. 1. select_related - select의 경우 1..

Django Session Cookie Age 알아보고 커스텀하기

Django 프로젝트의 루트 경로에 있는 settings.py에 정의되어 있는 세션 관련 내용이 다음과 같았다. REST_FRAMEWORK REST_FRAMEWORK = { "DEFAULT_AUTHENTICATION_CLASSES": [ "rest_framework.authentication.SessionAuthentication", ], } INSTALLED_APPS INSTALLED_APPS = [ ... "django.contrib.sessions", ... ] MIDDLEWARE MIDDLEWARE = [ ... "django.contrib.sessions.middleware.SessionMiddleware", ... ] API 테스트를 진행하던 도중, 아래와 같은 응답을 받은적이 있었다. { "..

오늘의 아티클 3문장

[ 1 / 16 ] 오늘의 아티클 - 주니어 개발자를 위한 5가지 충고 5 Advises to all Junior Developers Being new is scary! This is how I work through my journey and get the work done anyway medium.com 1. FOMO - Fear Of Missing Out 다른 사람들이 하는 경험에서 나만 소외되었다는 불안감에 휩싸일 수 있다. 항상 개발자는 많은 것을 배워야하고, 여러 언어나 프레임워크를 배워야한다는 생각 때문이다. 대신에 하나의 기술 스택에 집중해라! 그 기술이 새롭던, 오래되었던 관계없이 집중해라. 2. 한 분에에 집중하기 하나의 기술을 잘 다룰 수 있게 되었다면, 그것을 더 깊게 배워 전문가가..

🤙 일상 2022.11.30

[ django ] AWS lambda raw sql 에서 django raw sql로 TypeError: not enough arguments for format string 에러

AWS 정상 동작 쿼리문 SELECT -- 생략 DATE_FORMAT(DATE_ADD(m.schedule, INTERVAL 9 HOUR), '%Y.%m.%d %H:%i') schedule, -- 생략 FROM Match WHERE -- 생략 AND DATE_FORMAT(DATE_ADD(m.schedule, INTERVAL 9 HOUR), '%T') between '08:00:00' and '11:00:00' 위의 쿼리의 의미 1. 데이터를 가져오는데 시간 값을 해당 포맷으로 지정하고 가져와! 2. 시간 데이터를 가져오는데 시간값만 가져오고, 해당 시간이 08시부터 11시 사이인 데이터만 가져와! 해당 쿼리를 서버쪽 @shared_task로 이전해야 했기에, 굳이 ORM으로 변경하지 않고 사용하던 쿼리를 ..