# 7 진화, 아이템, 프론트, 확장 업데이트
·
프로그래밍/Github Pokemon Collection
이번에 좀 많은 업데이트를 했다. 요즘에 무기력에 빠져있었는데 이 프로젝트를 하면서 뭐라도 하고 많이 위로를 받을 수 있었다.다시 돌아보면 이상하게 파이썬은 좋고 프론트엔드에 그렇게 겁먹지 않아도 될것 같다는 생각이 든다. ## 포켓몬 확장이전 버전에서는 포켓몬은 1세대만을 대상으로 모으는 방식이였다. 총 150여개쯤 되었는데 다 모으려면 대략 15000CP 정도가 필요했다.하지만 나는 정작 1세대 포켓몬 게임들을 해본 경험이 적어서 그리 정감이 가질 않았다. 그래서 이번 업데이트에선 포켓몬을 4세대까지(아르세우스까지) 확장했다. 총 개수로는 대략 500개에 약간 못 미치는 수준이다.굳이 4세대까지로 정한 이유는 포켓몬이 양옆으로 움직이는 스프라이트는 하트골드를 기반으로 구하고 있기 때문에 그렇게 정했다..
# 16 음악, 색깔, 기록, 알림
·
프로그래밍/A music in a balloon
## 음악 조회 기능 구현풍선을 생성할때 음악을 보여줘야 겠다고 생각했다. 이 링크가 잘못된 링크면 풍선 생성이 실패했다는 토스트가 떠오를텐데 사용자 입장에선 처음부터 다시 입력하기 귀찮다.때문에 생성할때 첫번째 화면에서 음악 주소를 입력하면서 조회도 하고, 검증하는 기능을 넣었다.백엔드에 /music?streamingUrl= 으로 GET 요청을 보내는 방식이다. ## 알록달록 풍선풍선의 색깔을 좀 다양하게 만들어봤다. 색은 풍선 엔티티에 직접 저장되며 아래와 같이 풍선 추가 모달의 두번째 페이지에서 고를 수 있다. 이런식으로 다양한 색깔을 제공한다.위의 헤더의 레이아웃도 손을 봤다. 로고를 중앙에서 왼쪽으로, 기록 과 알림(아래 설명)은 왼쪽으로 배치했다. 사실 색깔 팔레트를 제공하고 있지만 사실 직접..
# 6 유저이름에 대한 문제
·
프로그래밍/Github Pokemon Collection
왜인지 유저가 중복되는 일이 생겼다.예시를 들면 Username, username, uSername, USerNaME 모두 같은 유저로 구분되는데, 데이터는 별개로 저장되고 있었다. 그래서 유저 이름은 항상 lowercase로 저장하게 하려고 했고 이런 로직은 도메인 영역인 모델에서 관리하는게 맞다고 판단했다.SQLModel은 Pydantic 기반으로 동작하니 그냥 @field_validator를 사용했는데 이게 먹히지 않았다. 여기서 이런 글을 찾았는데, 모델을 table=True로 설정하면 validator가 안먹힌다는 것이였다.https://github.com/tiangolo/sqlmodel/discussions/787#discussioncomment-9303157 그래서 모델부분을 담당하는 부분 ..
# 5 봇들아 가라~ 재미없다~
·
프로그래밍/Github Pokemon Collection
백엔드 서버가 또 맛이 갔던 것 같다. 근데 로그를 보고 있자니 도대체 뭐가 문제인지 모르겠다.악성 트래픽이 너무나 많기 때문이다.대부분의 요청이 봇인게 분명하다. 1할? 정도만 정상적인 요청 같이 보인다. 이친구들 때문에 서버가 맛이가는 이유는 아니겠지만 치워버리고 싶었다.그래서 킹왕짱 갓 진짜 개멋진 cloudflare에서 /pokemons 로 시작하지 않는 모든 요청을 차단했다. 이런 옵션 설정은 보안 -> WAF에서 할 수 있다.WAF가 뭘까? Web Application Firewall 의 약자로 웹 애플리케이션 앞단에서 HTTP 요청을 검사하는 역할을 한다. 이는 역방향 프록시의 한 유형이기도 하다.(정방향 역방향 차이는 프록시가 어디에 붙어있는지; 클라이언트 앞에 붙었는지 서버 앞에 붙었는지..
# 4 이제는 배경을 넣을때
·
프로그래밍/Github Pokemon Collection
원래 배경을 흰색으로 두는게 좀 마음에 걸렸다.하지만 포켓몬스러운 배경을 찾기가 어려웠기 때문에 흰색을 제공해주었다.  GitHub - 2jun0/github-pokemon-collection: Collect Pokémon on GitHub!Collect Pokémon on GitHub! Contribute to 2jun0/github-pokemon-collection development by creating an account on GitHub.github.com  ## 포켓로그의 배경요즘 포켓로그가 인기다. 치지직만 틀면 많은 스트리머들이 포켓로그에 빠져있는 듯하다.포켓몬의 IP 힘이 역시 대단하다는 것을 직감하고 내 프로젝트의 사용자는 왜 없을까 고민했다.다시 돌아보면 역시 배경이 문제라는 생각이..
# 3 서버를 고치다
·
프로그래밍/Github Pokemon Collection
이놈의 서버가 자꾸 터진다. 사실 메모리 이슈인줄 알았다. 오늘 열어보니 그렇지 않았다.3달동안 서버 재실행으로 돌려막기를 했는데 이번에 고쳐야겠다고 맘먹었다. ## sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00 (Background on this error at: https://sqlalche.me/e/20/3o7r)원인은 커넥션 풀에서 커넥션을 다 끌어다 쓰고 있으며 대기중인 요쳥이 30초 동안 대기했다가 에러를 내뿜은 것이였다.해결책으로 커넥션을 늘리면 될까? 근데 뭔가 이상하다.  이 서비스는 분명 사용하는 사람이 적은데 커넥션이 부족하다고 하는..
# 15 com.fasterxml.jackson.databind.exc.InvalidDefinitionException를 만나다.
·
프로그래밍/A music in a balloon
음악 응답 스키마에 공통 필드가 있는 MusicResponse를 추상 클래스로 만들고  YoutubeMusicResponse, SpotifyMusicResponse를 만들던 중,com.fasterxml.jackson.databind.exc.InvalidDefinitionException 라는 오류를 만났다. 오류는 대략 다음과 같다.Cannot construct instance of `com.musicinaballoon.music.application.response.YoutubeMusicResponse` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-b..
# 14 지도, 풍선, 반응, 음악
·
프로그래밍/A music in a balloon
그동안 글 쓰기가 귀찮고 어려워져 일기에 소홀해지고 있다.그래도 어디까지 업데이트 되었는지 적고자 한다. ## 맵 화면과 풍선/map 으로 이어지는 맵 화면은 오른쪽과 같이 변했다.원래는 어떤 컨테이너 안에서 보여주는 형태였는데 굳이 테두리를 보여줄 필요가 없으니 이렇게 변한 것이다.그리고 #12 게시글에서 말했듯 구글 맵은 진작에 Leaflet으로 바꿨다. 잘 작동한다. 풍선의 색은 아직까지는 풍선 id % 3 해서 구하는 방식이다. (추후 바꿀지도 모름)풍선의 아이콘도 좀 손을 봤다. 광원?을 추가했다 더 생동감이 있어 보인다:) 풍선들은 최대 만개가 맵 위를 떠다니는데 이는 canvas에 그리는게 아닌 만개의 svg element 가 html에 있는 것이라서 버벅임이 심했다.때문에 현재 화면에 보이..
2jun0
'분류 전체보기' 카테고리의 글 목록