# 5 게스트 구현
·
프로그래밍/A music in a balloon
게스트는 저번에도 구현한 적이 있다. 그것과 완전 동일한 이유로 게스트를 추가하려고 한다.이전 프로젝트의 글을 모르는 사람들을 위해 다시 설명한다. ## 게스트의 필요성 - 누가 쓴 병이고 누가 받은거지?음악이 담긴 병(이하 병)을 생성한 유저를 식별할 필요성이 있다.일단 자신이 만든 병을 자신이 받게 되는 불상사를 방지하기 위함이기도 하고, 유저 이름을 담게되면 저 인터넷 너머 누군가 정말 보냈다는 것을 알 수 있고,내 병을 다른 사람이 듣고 평가를 받을 수도 있기 때문이다. (너 음악 센스 좋다~ 거나 으엑 씹덕 음악 저리가 등등) 그래서 유저를 식별하기 위해선 로그인 인증을 구현하면 좋은데..문제는 사람들은 이상한 서비스에 로그인 하기를 꺼려한다. 그것도 개인정보라고 취급하기도 하고, 일단은 귀찮기..
# 2 스프링과 재회
·
프로그래밍/A music in a balloon
이번 프로젝트는 스프링 프레임워크를 사용한다. 파이썬쟁이가 무슨 자프링인가 싶겠지만, 이번에 이 프레임워크를 고른 건 여러 복잡한 이유가 있다.그중에도 가장 중요한걸 뽑자면 취업 문제와 더 깊이있는 커뮤니티 때문이다.첫째로 취업문제는 아무래도 코로나부터 경기불황까지 겹쳐 파이썬 백엔드는 설 자리가 부족한것 같아서 자바를 해야한다고 생각했다. (나중에 어찌될지 모르지만 신입은 이게 맞는것 같기도..)둘째는 나는 프로젝트 구조를 작성하는 방법, 다른 프레임워크에서 코딩하는 방법, 다른 개발자들이 어떻게 생각하는지가 궁금했고 여러 언어 중에서 가장 큰 커뮤니티는 당연히 자프링이기 때문이다. 이번에 자프링을 처음 하는것이 아니다. 물론 자프링으로 내세울 프로젝트를 해본건 없지만 그래도 인프런의 영한쌤의 강의를 ..
# 1 깃허브에서 포켓몬을 수집하자!
·
프로그래밍/Github Pokemon Collection
이 글에는 svg가 들어있다. 기본모드로 수정하면 바로 삭제되니 왠만하면 그대로 두자. 이번 프로젝트는 어떤 개발자의 멋진 작품을 보고 영감을 얻었다.[멋진 작품은 이거: https://github.com/devxb/gitanimals] svg로 화면을 구성하는 것을 보고 신기했는데, 보통 깃허브 마크다운은 자바스크립트를 허용하지 않아서 제대로 된 뭔가를 해볼 수 없기 때문에 이를 우회한 것을 보고 감탄을 했었다.그리고 보통 프로젝트를 만들다보면 나도 모르게 프론트엔드에 시간을 많이 쏟게 되는데, 이는 물론 그 자체로 재밌었던 프로젝트(순무모드) 들도 있었지만 꽤 스트레스다. svg로 간단하게 화면을 구성할 수 있다면 더할 나위없이 좋다고 판단했다. 나도 바로 svg를 이용해서 뭔가를 만들고 싶었고 곧바..
[Async-SQLModel] SQLModel서 비동기 프로그래밍시 발생하는 문제의 대안
·
프로그래밍/파이썬
## SQLModel서 발생하는 비동기 이슈: MissingGreenlet 파이썬 비동기 프로그램을 작성할때 SQLAlchemy 혹은 SQLModel를 사용하다보면 MissingGreenlet을 자주 접하게 된다. Model 객체의 필드를 접근할때 데이터베이스에서 값을 갱신해야 하는 경우가 있다. 이 작업은 기본적으로 암시적인 IO를 발생시키는데, 비동기 프로그램 안에서는 이때 MissingGreenlet에러를 터뜨린다. 아래 두개의 예제에서 자세한 경우를 설명하겠다. 첫번째 경우는 만료(expired)된 필드를 가져올때 값을 갱신하는 상황이다. from typing import Optional from sqlmodel import Field, SQLModel from sqlmodel.ext.asynci..
#25 서비스 개선 기획
·
프로그래밍/스팀 게임 퀴즈
이번 글은 그저 생각을 정리한 글입니다. 주변인들의 의견을 모아모아서 이 서비스의 문제점을 고쳐보겠다. 일단 이 서비스의 큰 문제는 다음과 같다. 설명이 부족함: 뭘 하는 사이트인지 직관적으로 이해하기 어려움. 보상이 없음: 퀴즈를 맞춰보고 난 후 어떠한 보상이 있어야 함. 킥이 없다: 대단히 놀랄만한 기능이 부족하다. ## 설명이 부족함 나는 개발하면서 이런 문제를 잘 몰랐다. 이 서비스를 개발하고 난 뒤 okky에 공유 했었는데 어떤 분은 “UX에 대해 더 이해했으면 좋겠다”라는 코멘트를 달아주셨다. 또 다른 인터넷 친구는 “서비스에 설명이 부족한것 같다”라는 말을 덧붙였다. 역시 아무래도 디자인적으로는 영~ 소질이 없는 걸지도 모르겠다. 그래서 설명을 좀 더 넣어봐야 한다. 적어도 입력창 위의 시도..
#24 게임 이름 별칭을 구현함
·
프로그래밍/스팀 게임 퀴즈
비록 이 서비스가 그리 대단한 것은 아니지만 새로운 업데이트를 굳이 들고왔다. 게임 이름 자동완성에서 게임 이름만 가지고 검색하는건 좀 힘들 수 있다. 특히 우리가 영어를 잘 모를때 더 그렇다. 가령, “천수의 사쿠나히메” 라는 게임은 영문으로 “Sakuna: Of Rice and Ruin”고 “영걸전”은 “Sangokushi_Eiketsuden”로 팔리고 있는데 보통 영문은 잘 모르기 마련이다. 게임은 뭔지 알지만, 영문을 몰라, 그것도 스팀 상품에 등록된 게임 이름을 몰라 검색을 못하는 건 많이 섭하다. 때문에 게임에 별칭을 추가했다. 별칭은 당연히 여러개 일 수 있고, “카운터 스트라이크”와 같은 게임을 “카스”라고 부르거나 현지화된 이름으로 부르는 경우를 포함한다. # 별칭은 어디서 구하나? 사실..
#23 게임 이름 검색에 대해서..
·
프로그래밍/스팀 게임 퀴즈
대부분의 글이 그렇지만, 이번 글은 구성이 좀 이상해 보일 수 있다. 게임 이름 검색에 대해서는 개발 초기부터 생각했었고, 그 조각난 기록들을 모으다보니 이렇게 된것 같다. # GuessTheGame의 게임 이름 자동완성 원래 내가 따라하려고 했던 GuessTheGame 서비스에서는 자동완성 기능을 제공했다. 나도 이런 기능을 꼭 만들어 보고 싶었고, 이 서비스에 꼭 필요한 기능이라고 생각했었다. 그래서 처음에는 개발자 도구로 GuessTheGame에서 제공하는 기능이 어떻게 제공되는건지 알고 싶었다. 아래를 보면 /autocomplete에 쿼리 파라미터로 유저에 입력을 넣어 보내서 관련 결과를 받아온다. 이렇게 되어있는데, q만 알아도 괜찮은것 같다. # LIKE 쿼리를 이용해 구현 이제 내부 구현에 ..
#22 백엔드와 프론트엔드를 배포했다!
·
프로그래밍/스팀 게임 퀴즈
https://app.steamgamequiz.com 로 가서 트라이 해보세요~ 이전 프로젝트인 이미지니는 GCP에서 백엔드와 프론트엔드를 배포했었지만, 이번에는 AWS에서 배포해보려고 했음. 이번에는 배포할때 겪었던 어려움과 결국 어떻게 구성했는지 다룰것임. 도커 활용 GCP에서 도커를 사용해 배포했었는데, 아주 좋았던 기억이 있다. 굳이 컨테이너에 ssh로 접속하지 않아도 GCP CLI 명령어를 이용하면 알아서 새로운 도커 컨테이너를 올려줬었다. 실무에서 AWS를 더 많이 쓰는것으로 알고 있는데, 당연히 AWS도 그런 기능이 “당연히” 있는 줄 알았다. 하지만 그런것은 없었다. AWS의 EC2에서 도커를 띄울려면 직접 ssh연결해서 이미지를 pull한 후, 컨테이너를 돌려야 한다. 물론, GCP 처럼..
2jun0
2jun0의 블로그