# 7 진화, 아이템, 프론트, 확장 업데이트
·
프로그래밍/Github Pokemon Collection
이번에 좀 많은 업데이트를 했다. 요즘에 무기력에 빠져있었는데 이 프로젝트를 하면서 뭐라도 하고 많이 위로를 받을 수 있었다.다시 돌아보면 이상하게 파이썬은 좋고 프론트엔드에 그렇게 겁먹지 않아도 될것 같다는 생각이 든다. ## 포켓몬 확장이전 버전에서는 포켓몬은 1세대만을 대상으로 모으는 방식이였다. 총 150여개쯤 되었는데 다 모으려면 대략 15000CP 정도가 필요했다.하지만 나는 정작 1세대 포켓몬 게임들을 해본 경험이 적어서 그리 정감이 가질 않았다. 그래서 이번 업데이트에선 포켓몬을 4세대까지(아르세우스까지) 확장했다. 총 개수로는 대략 500개에 약간 못 미치는 수준이다.굳이 4세대까지로 정한 이유는 포켓몬이 양옆으로 움직이는 스프라이트는 하트골드를 기반으로 구하고 있기 때문에 그렇게 정했다..
# 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초 동안 대기했다가 에러를 내뿜은 것이였다.해결책으로 커넥션을 늘리면 될까? 근데 뭔가 이상하다.  이 서비스는 분명 사용하는 사람이 적은데 커넥션이 부족하다고 하는..
# 2 업데이트 했음
·
프로그래밍/Github Pokemon Collection
요즘 자바만 하고 있는데, 파이썬 마려워서 이 프로젝트에서 불편한 점을 손보았다. ## 포켓몬 우선순위포켓몬이 점점 많아지면 위치가 서로 겹치는 경우가 많다.그러면 최근에 생성된 포켓몬이 더 앞으로 오게 되는데, 이 때문에 이상한 경우가 생긴다. 왠지 포켓몬 게임 상 아래에 있는 포켓몬이 앞으로 와야 할 것 같지만 위 스크린샷에서는 아래에 있는 롱스톤이 뒤로가있다.이점을 해결하기 위해 포켓몬을 랜더링할때 랜덤한 오프셋 리스트를 만들어 두고 나서 작은 순서대로 부여했다. 그랬더니 또 문제가 생기는데 최신의 포켓몬이 가장 아래에 놓이는 것이다.그래서 모든 포켓몬에 대해 랜더링 정보를 랜덤하게 생성한 뒤 위치로 정렬 하고 랜더링했다. ## 커스텀 화면 크기화면 크기가 고정되어 있다는게 처음부터 굉장히 거슬렸다..
# 1 깃허브에서 포켓몬을 수집하자!
·
프로그래밍/Github Pokemon Collection
이 글에는 svg가 들어있다. 기본모드로 수정하면 바로 삭제되니 왠만하면 그대로 두자. 이번 프로젝트는 어떤 개발자의 멋진 작품을 보고 영감을 얻었다.[멋진 작품은 이거: https://github.com/devxb/gitanimals] svg로 화면을 구성하는 것을 보고 신기했는데, 보통 깃허브 마크다운은 자바스크립트를 허용하지 않아서 제대로 된 뭔가를 해볼 수 없기 때문에 이를 우회한 것을 보고 감탄을 했었다.그리고 보통 프로젝트를 만들다보면 나도 모르게 프론트엔드에 시간을 많이 쏟게 되는데, 이는 물론 그 자체로 재밌었던 프로젝트(순무모드) 들도 있었지만 꽤 스트레스다. svg로 간단하게 화면을 구성할 수 있다면 더할 나위없이 좋다고 판단했다. 나도 바로 svg를 이용해서 뭔가를 만들고 싶었고 곧바..
2jun0
'프로그래밍/Github Pokemon Collection' 카테고리의 글 목록