분류 전체보기 803

2022년 44주차 '틈틈이 사색하고 글로 옮기자'

할로윈 파티 이번 주 금요일에 할로윈 파티를 진행했다. 처음에는 조촐하게 식사를 하고 함께 공포영화를 볼 생각이었는데 초대장을 만들다 보니 뭔가 더 있었으면 좋겠다는 생각이 들었다. 그래서 생각한 것이 '마피아' 게임을 변형시킨 '살인마' 게임! 스토리는 대강 이렇다. 살인마들이 한데모여 만찬을 즐기던 중, 이 중에 일반인이 섞여있다는 얘기를 듣는다. 일반인은 살인마들에게 복수하기 위해서 이 만찬을 참여했다. 살인마들은 투표를 통해 일반인을 찾아 없애야 한다. 그렇지 않으면 밤마다 살인마들이 죽는다! 마피아 게임과 달리, 각자마다 사연이 있고 사연에 맞게 목표와 능력도 추가했는데 그래서인지 다들 몰입해서 게임을 즐긴 것 같다. 할로윈을 챙겨본 건 이번이 처음이었는데 다들 재밌게 즐겨주셔서 너무 뿌듯하고 ..

1030. How many stairs will Suzuki climb in 20 years?

Suzuki is a monk who climbs a large staircase to the monastery as part of a ritual. Some days he climbs more stairs than others depending on the number of students he must train in the morning. He is curious how many stairs might be climbed over the next 20 years and has spent a year marking down his daily progress. The sum of all the stairs logged in a year will be used for estimating the numbe..

면접관도 나무에서 떨어질 때가 있을까?

문득 취업을 위해 면접을 보던 때가 떠오른다. 배달대행 서비스 회사에 지원한 적이 있었는데 운이 좋게도 1차 기술면접을 보게 되었다. 면접은 개발자 채용에서는 보기드문 다대다 면접이었는데 내게 주어지는 시간은 10분에서 15분 안팎이었다. 할당된 시간이 적다 보니 질문 수가 많지 않았는데 그중에 한 질문이 'API문서 최신화'에 대한 질문이었다. "API문서를 어떻게 최신화를 할 수 있는가?" 라는 질문에 나는 스웨거라는 툴을 사용하면 자동으로 API문서를 최신화할 수 있다고 답했다. 그러자 면접관 분들이 스웨거도 수동 작업이 필요하다고 말하면서 바로 다음 질문으로 넘어갔다. (*스웨거 - API문서를 생성해주는 도구) 당시의 나는 면접관 분들의 말에 토를 달수가 없었다. 내 지식에 자신도 없었고 오랫동..

Python _ zoneinfo 사용법, ZoneInfo 와 pytz 차이

ZoneInfo 을 사용하면 기존 pytz를 사용하지 않고도 타임존을 사용할 수 있다! (*ZoneInfo 는 Python3.9 버전 이상부터 사용가능) 'ZoneInfo' vs 'pytz' 그렇다면 ZoneInfo 와 pytz 는 어떤 차이가 있을까? 우선 ZoneInfo 는 따로 설치할 필요가 없는 빌트인 클래스이므로 다음처럼 간단하게 불러올 수 있다. from zoneinfo import ZoneInfo ZoneInfo 와 pytz 를 각각 사용해 현재시간을 가져와보자. pytztz = timezone("Asia/Seoul") zonetz = ZoneInfo("Asia/Seoul") print(datetime.datetime.now(tz=pytztz).tzname()) print(datetime.d..

FastAPI _ BaseSettings 을 lru_cache 할 때, unhashable type 에러 해결방법

BaseSettings을 사용한 객체를 lru_cache 할 때, TypeError: unhashable type: 에러가 발생할 때가 있다. 정리하면 다음과 같은 상황이다. given FastAPI 에서 lru_cache로 반환하는 BaseSettings 객체를, when 다시 lru_cache를 사용하는 함수가 인수로 받을 때, then TypeError: unhashable type: 에러가 발생함. e.g class Config(BaseSettings): URL: str = Field(..., env="URL") class Config: env_file = "secrets/.env" env_file_encoding = "utf-8" @lru_cache def get_config() -> Confi..

pytest _ 비동기 테스트 실행하기 (feat. auto 모드)

pytest 에서 async 테스트 함수를 실행하는 방법에는 'strict 모드' 와 'auto 모드' 가 있다. 오늘은 손쉽게 비동기 테스트를 할 수 있는 'auto 모드' 에 대해 알아보자. 먼저 pytest-asyncio 를 설치한다. pip install pytest-asyncio 아래 1번과 2번 중에 하나를 선택하여 파일과 코드를 추가한다. 1번 # pytest.ini [pytest] asyncio_mode = auto 2번 # pyproject.toml [tool.pytest.ini_options] asyncio_mode = "auto" 이것으로 'auto 모드' 설정이 끝났다. auto 모드는 pytest.ini 혹은 pyproject.toml 파일에 옵션 코드를 추가하여 async 테스트..