전체 글

전체 글

    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. 즉, 테이블의 수명 주기를 관리한다라고 한다. 테이..

    djongo를 설치하는 과정에서 발견한 오류들

    Django 프로젝트에서 MongoDB를 사용하기 위해 `djongo` 를 설치하려고 했을 때 발생한 문제와 그 해결방법에 대해 알아보자. 프로젝트의 초기 toml 파일은 다음과 같았다. [tool.poetry.dependencies] python = "^3.10" djangorestframework-simplejwt = "^5.2.2" mysqlclient = "

    나는 과연 개발자인가?

    이 물음에 확실하게 답을 할 수 있는 내가 되도록 하자.

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

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

    [ 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 테스트를 진행하던 도중, 아래와 같은 응답을 받은적이 있었다. { "..

    zsh: command not found: mysql

    엊그제까지만 해도 mysql 명령어가 잘 먹었었는데,, 무슨 원인인인지는 모르겠지만 바로 zsh: command not found: mysql 에러가 났다.. ~/.zshrc의 PATH를 건드리지도 않았는데.. 해결법은 정말 간단 그 자체였다. mysql-client 를 설치하고, 설치 완료 후 아래의 명령어를 입력해주고 > source ~/.zshrc 로 컴파일 하면 끝!

    오늘의 아티클 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. 한 분에에 집중하기 하나의 기술을 잘 다룰 수 있게 되었다면, 그것을 더 깊게 배워 전문가가..

    [ 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으로 변경하지 않고 사용하던 쿼리를 ..