2021.10 TIL

donguk im·2021년 10월 5일
1
post-thumbnail
post-custom-banner

TODO

  • drf-spectacular 통해서 동적폼 schema 개발
  • 화물,퀵 서비스 단가 자동 계산 및 경로 추적 프로젝트 모델 설계
  • clean code 매일 20페이지씩

기록

10.5(화)

10.7(목)

  • python의 Lazy Evaluation?
    generator 처럼 값이 실제 호출되는 시점에 값을 전달하는 방식, 메모리 관리를 효율 적으로 할 수 있고, 호출되는 시점에 값을 반환하기때문에 반환하는 값에 직접적으로 연관된 함수또는 필드가 evaluate 되지 않아서 발생하는 에러를 피할 수 있다!


출처 : 제대로 파이썬, lazy evaluate

TODO

  • drf-spectacular 통해서 동적폼 schema 개발 (휴식기)
  • 화물,퀵 서비스 단가 자동 계산 및 경로 추적 프로젝트 API 연동
  • 에잇퍼센트 CTO님과 대화!

기록

10.13(수)

  • python의 Enum
    사용방법과 개요는 워낙 많은 블로그에서 다루지만, 실제로 어떻게 활용하고 부족한 구조를 어떻게 매꿀지에대해서 이야기하는 곳이 없음...
    java 개발 당시에 처음 접했던 enum은 Java Enum 활용법 : 인프런 이동욱님의 글을 통해서였고, 너무나 매력적으로 느껴져서 그 이후로 진행하는 프로젝트에서 자주 바뀌지 않으며며, 행위와 값이 연관 되는 형태, 그룹핑 되어야하는 내용은 여지 없이 enum을 활용했다. 조만간 파이썬에서 enum 을 사용하는 방법과 사례를 간단하게 적어봐야겠다.

    적을 내용들 잊지 않기위해 기록
    -callable 객체를 활용해서 enum의 분류 값을 행위와 연관시키기
    -enum으로 model의 분류형태의 필드 컨트롤하기
    -enum metaclass에 대해서 (아직 공부가 필요)

10.14(목)

  • djnago-template | date 필터 사용시 유의점
    LANGUAGE_CODE 설정에 따라 django template 의 date 필터도 다른 출력이 나온다.
# settings.py

#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ko-kr'
# test.html

<h1>Post Archives for {{ year|date:"Y" }}</h1>

<ul>
    {% for date in date_list %}
    <li style="display: inline;">
        <a href="{% url 'blog:post_month_archive' year|date:'Y' date|date:'b' %}">{{ date|date:"F" }}</a></li>
    {% endfor %}
</ul>
<br>

예상한 문자열 (LANGUAGE_CODE = 'en-us' )

예상한 문자열 (LANGUAGE_CODE = 'ko-kr' )

TODO

  • drf-spectacular 통해서 동적폼 schema 개발 (휴식기)
  • 화물,퀵 서비스 단가 자동 계산폼 완성!!💪
  • 객.사.오 하루잡고 다읽기

기록

10.19(화)

  • Django 커스텀 태그 사용법
    @register.assignment_tag (django 2.0 🔼 Deprecated, 커스텀 태그의 결과값을 변수 바인딩 하게해줌텍스트)
    @register.simple_tag (자동으로 커스텀 템플릿 태그를 사용하기 위한 조건을 갖춰둔 태그를 만듦, 이스케이프 등...)
    @register.inclusion_tag (특정 html 파일을 포함해서 랜더링해줌, takes_context 옵션을 통해 서버에서 전달 받은 context 사용가능)
    @register.tag(기본 태그를 등록해줌, 사실 simple_tag와의 차이점을 완벽하게 파악하지 못했다...)

10.19(화)

  • Django QuerySet

    1. select_related
      :외래키로 인한 정참조 관계 , 또는 1:1 매핑되는 상황에서 join을 통해 한번의 쿼리로 대상을 조회해옴

    2. prefetch_related
      :정참조 역참조 모든 관계에서 사용가능 1:N , N:M, N:1, 1:1 본 쿼리 + 추가 쿼리를 별도로 생성해서 조회해옴

      select_related & prefetch_related 로 불러온 쿼리는 result_cache에 저장되어 동일한 내용을 불러올 때 쿼리가 발생하지 않는다!

    3. bulk_update(objects, update_fields: list)
      : 벌크 업데이트 가능, But QueryManager를 통해 재정의한 save() 메소드의 내용이 적용되지 않는다ㅠㅠ

  • PostgresSQL json type (매번 까먹음...🥵)
    👆json_type(array형태) 컨트롤 방법
    -> : json 형태에서 값을 찾을때
    ->> : json array 형태에서 값을 찾을 때, array 내부를 돌면서 해당 이름을 찾는다.

    -- 테이블 생성
      CREATE TABLE company (
          id INTEGER PRIMARY KEY,
          name CHARACTER VARYING NOT NULL,
          employees JSONB NOT NULL,
          info JSONB NOT NULL
      );

      -- 데이터 입력
      INSERT INTO company VALUES(1, '삼성', '[{"name":"홍길동1", "age": "20"}, {"name":"홍길동2", "age": "21"}, {"name":"홍길동3", "age": "22"}]','{"create": "2020-06-09", "created_by" : '이건희'}');
      INSERT INTO company VALUES(2, '카카오', '[{"name":"장동건1", "age": "30"}, {"name":"장동건2", "age": "31"}, {"name":"장동건3", "age": "32"}]','{"create": "2018-08-19", "created_by" : '누구지'}');
      INSERT INTO company VALUES(3, '네이버', '[{"name":"스티브1", "age": "40"}, {"name":"스티브2", "age": "41"}, {"name":"스티브3", "age": "42"}]','{"create": "2013-02-12", "created_by" : '스티브 잡스'}');

      -- info의 created_by가 '스티브 잡스'인 행을 찾는 쿼리
      SELECT * FROM COMPANY WHERE employees -> 'created_by' = '스티브 잡스'
      
      -- employees중에 name이 '홍길동'인 행을 찾는 쿼리	
      SELECT * FROM COMPANY WHERE employees ->> 'name' = '홍길동'
      
profile
고양이를 좋아하는 개발자 성장기 (Java, Python) 🐈...❗️
post-custom-banner

0개의 댓글