11.18 공부일지

코변·2022년 11월 18일
0

공부일지

목록 보기
1/15
post-thumbnail

GIF via giphy

알고리즘

최소신장트리 - 바킹독

boj-2477

피드백

잘 못 입력한 코드 한 줄 때문에 거의 1시간을 붙잡고 있었다. 좀 더 꼼꼼하게 코드를 작성하자. 백준에서 내가 부족한 기하학과 구현능력 둘 다 필요한 기하학 + 구현 문제를 찾아냈다. 더 효율적으로 둘 다 실력을 높일 수 있지 않을까?

중고등학교 다닐 때의 습관일까? 일단 도형만 나오면 숨이 턱 막힌다. 익숙해질 수 있도록 계속해서 풀어보자.

CS공부

  • 공부량
    • 4 뽀모

책읽기

  • CODE(코드) - 하드웨어와 소프트웨어에 숨어 있는 언어
  • 12 ~ 17챕터 비트 연산을 통한 계산기를 만들 때도 입을 벌리고 놀랐지만 논리게이트의 조합으로 메모리가 될 때는 감탄이 나왔다. 지금 이 글을 쓰면서 내가 쓰고 있는 이 글이 메모리에 저장되고 코드를 칠 때 변수, 배열의 선언 이 모든 것들이 조금은 다르게 다가온다. 다만, 2의 보수를 통해 8비트에서 마이너스를 어떻게 핸들링하는지 덧셈에서 올림, 뺄셈에서 빌림 등등 간신히 따라가던 중 계산기를 만들고 더 나아가 메모리를 만드는 단계에서는 조금 따라가기가 어려웠다. 다 읽고 나면 또 읽어야지.

추가공부

  • 공부량
    • 3 뽀모
  • 공부내용 기존 코드들을 일원화 시켰다. is_mine으로 구분하던 부분을 빼고 django Q객체를 활용해서 query라는 매개변수로 받아와서 각 로직들을 분리 시켰다.
    def get_paginated_board_data(page_num: int, author: UserModel, query: Q) -> Tuple[ReturnList, int]:
        """
        page_num을 통해서 board 데이터를 가져오는 service
        """
    
        my_paginated_board_data = (
            BoardModel.objects.select_related("author")
            .prefetch_related("boardcomment_set__author")
            .prefetch_related("boardlike_set")
    ###
            .filter(query)
    ###
            .order_by("-create_date")[10 * (page_num - 1) : 10 + 10 * (page_num - 1)]
        )
        paginated_boards = BoardSerializer(my_paginated_board_data, many=True, context={"author": author}).data
        total_count = BoardModel.objects.filter(query).count()
    
        return paginated_boards, total_count
    추가로 all()로 모든 익명게시판을 가져오는 부분은 빈 Q객체를 filter 내부에 넣어주면 모든 데이터를 가져온다 이를 통해서 all()도 Q를 통해 간접적으로 구현할 수 있었다.
    client = Elasticsearch(
            f"elasticsearch://{os.environ['MONGLE_ES_HOST']}:9200",
            http_auth=(os.environ["MONGLE_ES_USER"], os.environ["MONGLE_ES_PASSWORD"]),
        )
        headers = {"Content-Type": "application/json"}
        searched_data = client.options(headers=headers).search(
            index="mail_box", from_=page_num, sort=["_score"], size=MAX_PAGE, query={"match": {search_type: search_word}}
        )
    엘라스틱 서치를 가져오는 부분을 이렇게 변경했다. 검색하다보니 http_auth로 더 편하게 구현할 수 있었고 결정적으로 그 전 방식 그러니까 헤더에 authorization을 추가해서 직접 인코딩을 해서 넣었더니 계속 401에러가 나고 다른 requests 라이브러리에서 HTTPBasicAuth 클래스를 가져와서 집어 넣어도 에러가 났다. 아 그리고 어제 로컬 컴퓨터에서는 안되고 도커에서 됐던 이유를 찾았는데 부끄럽게도 환경변수에 오타가 있어서 그런거였고 수정했더니 로컬에서도 테스트가 잘 통과했다.
profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글