Chris940915 / geo_benchmark

0 stars 0 forks source link

12_31 job #7

Open Chris940915 opened 3 years ago

Chris940915 commented 3 years ago

select_related

셀렉트할 객체가 역참조하는 single object(one-to-one or many-to-one)이거나, 또는 정참조 foreign key 일 때 사용.

selected_related를 사용했을 때와 사용하지 않았을 때의 query 방식의 예제를 살펴보자.

from django.db import models

class SubCaegory(models.Model):
    name = models.CharField(max_length = 50)
    category = models.ForeignKey(Category, on_delete=models.SET_NULL, null = True)

    def __str__(self):
        return self.name

    def Meta:
        db_table = 'sub_categories'

class Drink(models.model):
    name_en = models.CharField(max_length = 100)
    name_kr = models.CharField(max_length  = 100)
    description = models.TextField(max_length = 3000)
    sub_category = models.ForeignKey(SubCategory, on_delete=models.SET_NULL, null = True)

위와 같이 Database와 객체가 매핑되어 있을때,

from drink.models import *

drink = Drink.object.get(id=1) #[1]
name = SubCategory.objects.filter(id=drink.sub_cateogry_id)[0].name #[2]
# cold brew

[1] drink 변수에 id = 1 인 Drink 객체를 지정. [2] SubCategory 객체 중에 drink객체가 가진 sub_category_id 만을 필터링하여 name 객체로 지정.

drink_sr = Drink.objects.select_related('sub_category').get(id=1).name
# cold brew

이제 select_related 를 사용한 코드를 봐보자. 위와 같이 Drink에 sub_category 필드을 통해, SubCateogry에 바로 접근하여 id = 1 인 Drink를 가져온다.

prefetch_related

구하려는 객체가 정참조 multiple objects(many-to-many or one-to-many)이거나, 또는 역참조 Foreign Key일때 사용. selected_related와 달리, prefetch_related는 SQL의 JOIN을 실행하지 않고, python에서 joining을 실행.

drink2 = SubCategory.objets.filter(id=1).prefetch_related("drink_set") #[1]
name = drink2[0].drink_set.filter(id=1).name_en #[2]
# cold brew

[1] : SubCategory 중에서 id=1 인 SubCategory의 drink_set을 불러오면 해당 id를 가진 Drink들이 리턴. [2] : 객체에 다시 필터를 적용하여 id = 1인 Drink를 가져옴.

Chris940915 commented 3 years ago

한개의 Pochade는 여러개의 Trial을 이루고 (채색하려고 하는 흑백 sketch 하나가 한개의 Pochade로 한개의 Pochade는parent로 hint 하나 추가할때마다 Trial이 한개씩 추가) 이 Trial을 이루고있는 Hint들이 존재하고 있다. 여러 개의 Hint들이 모여서 Hintset이 된다. Hintset들은 동일한 Hintset이여도 ckpt에 따라 여러 개의 colorized_result가 된다.

Chris940915 commented 3 years ago

link

https://medium.com/little-big-programming/react%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-92c923011818

useEffect

https://ko.reactjs.org/docs/hooks-reference.html#usestate

useEffect(didUpdate);

명령형 또는 어떤 effect를 발생하는 함수를 인자로 받음. 변형, 구독, 타이머, 로깅 또는 다른 부작용(side effects)은 함수 컴포넌트에서 허용안됌. -> Hooks의 목적인 함수형 컴포넌트 상태 변화.

기본적인 동작은 모든 렌더링이 완료된 후에 수행하고, 조건을 줘서 어떤 값이 변경되었을 때만 실행되게 할 수도 있다.

useEffect(() =>{
    const subscription = props.source.subscribe();
    return () => {
        subscription.unsubscribe();
    };
}, [props.source]};
Chris940915 commented 3 years ago

URL.createObjectURL()

const objectURL = URL.createObjectURL(object)

Parameter : 객체 URL을 생성할 File, Blob, MediaSource 객체 return : 지정한 object의 참조 URL을 담은 DOMString

Chris940915 commented 3 years ago

axios.create()

import axios from "axios";

export const HttpClient = axios.create({
  baseURL: process.env.API_URL
});

export const NSSHttpClient = axios.create({
  baseURL: {URL}
});
/* HttpClient.ts  */
import { HttpClient } from "@utils/HttpClient";

export const updateSampleName = (id, name): AppThunk => {
  return async (dispatch) => {
    await HttpClient.patch(`/samples/${id}/`, { name });
  }
}
/* sampleSlice.ts */

patch API 구현.