Light Blue Pointer
본문 바로가기

Developing/Journal18

한 시간 후 만료되는 초대 링크 개발기 : DB 구성에 대한 고민 디스코드 클론코딩 서비스를 개발하면서채팅방 입장 링크를 발급해준 후 한시간 후 만료시키고만료되지 않은 코드라면 참여가 가능하게 해야하는 기능을 개발해야했다 Key:Value 형태로 간단하게 저장할 수 있을 것 같고 만료되는 기능도 TTL로 하기 쉬운 Redis를 쓰기로 했는데, 코드 발급 시에는 채팅방id, userId -> 코드 이렇게 접근해야 했고코드로 참여 시에는 코드 -> 채팅방 id 이렇게 접근해야 했다 그러나 Redis는 Key로 Value를 찾는 것은 효율적인 반면, Value로 Key를 찾는 것은 효율적이지 않아서처음에는 채팅방id, userId -> 코드, 코드 -> 채팅방 id 이렇게 DB를 두개로 나눠서 저장했다  @Serviceclass ChatRoomService( private.. 2024. 6. 20.
✨Repository가 다르다고 Model도 다를 필요는 없다👍 ✨Repository를 나눠서 model도 나눴던 것 통합서버 채팅을 조회할 때는 채팅방 채팅을 조회할 필요가 없고채팅방 채팅을 조회할때는 서버 채팅을 조회할 필요가 없는데둘 다 ChatRepository에 저장하게 되면 조회 성능이 안 좋아질 것 같아서Repository를 RoomChatRepository , ServerChatRepository로 분리했었다@NoArg@Document(collection = "chats")class RoomChat( val userId: String, val roomId: String, val content: String,) : BaseTime() { @Id var id: String? = null fun isEdited(): Boolean { retu.. 2024. 6. 20.
Service에서 다른 Service 를 의존하게 하기 채팅방 기능을 개발할 때 ChatRoomService에서 좀 동떨어진 Invitation 관련 기능들을 많이 이용하게 되었는데그게 ChatRoomService에 있으면 좀 의미가 맞지 않는 것 같아서 모두 InvitationRepository로 분리해서 코드를 구축했다@Serviceclass ChatRoomService( private val chatRoomRepository: ChatRoomRepository, private val invitationRepository: InvitationRepository,) {fun getChatRoomInvitation( chatRoomId: String, userId: String, ): InvitationResponse { verifyCh.. 2024. 6. 20.
깃허브 프로필 꾸며보기!! 내 이름이랑 동일한 이름의 repository를 만들면 내 깃허브 Overview에서 확인할 수 있다! README file을 추가해준다! https://shields.io/ Shields.io | Shields.io Concise, consistent, and legible badges shields.io 이걸 이용해서 뱃지를 달아봄! Static Badge에 들어가서 오른쪽에다 입력해주면 자동 생성해준다! https://simpleicons.org/ Simple Icons 2988 Free SVG icons for popular brands simpleicons.org 여기 가서 아이콘 찾아옴 ![{Name}](https://img.shields.io/badge/{Name}-{HexCode}?styl.. 2024. 2. 9.
[팀프로젝트][모아요이츠] Post domain 개발일지 2024. 1. 9.
[내일배움캠프][팀프로젝트] Trollo (유사 Trello) 개발일지 분석 및 시나리오 사용자 회원가입을 할 수 있다. 로그인할 수 있다. 로그아웃할 수 있다. 회원 탈퇴를 할 수 있다. 초대 다른 사용자를 초대할 수 있다. 초대를 받은 사용자는 초대를 거절/수락할 수 있다. 초대를 거절하면 초대 테이블에서 해당 entity가 삭제된다. 초대를 수락하면 초대 테이블에서 해당 entity가 삭제되고 보드_사용자 테이블에 참여자로 등록된다. 보드 칼럼들의 집합체 보드는 다음과 같은 속성을 갖고 있다. id, 이름, 생성자, 배경 색상, 설명 노션 페이지같은 느낌 사용자가 생성할 수 있다. 생성한 사용자(주인)가 다른 사용자(초대받은 사람)를 초대할 수 있다. 하나의 보드에 여러 명의 사용자가 존재한다. 보드에 속한 사용자들은 보드를 수정/초대할 수 있다. 보드에 속한 사용자들.. 2023. 12. 27.
[내일배움캠프][팀프로젝트]햇살마켓 프로그램 개발일지 프로젝트 주소 GitHub - minisundev/SunlightMarket Contribute to minisundev/SunlightMarket development by creating an account on GitHub. github.com 이름에서 티가 나듯이 유사 당근마켓 프로그램이다! 채팅 기능은 없고 주문 후 승인, 배달 완료 처리를 하는건 배달의민족과도 비슷하다! 프로젝트 하고 나서 느낀점 매 프로젝트마다 내 실력이 늘어나는걸 느낀다! 사실 저번 프로젝트는 스프링을 할 줄 안다 상태였는데 이제 꽤 익숙해져서 자바만큼이나 편하게 느껴진다(자바 베이스긴 한데) 이제는 레고처럼 코드 조립하면서 혼자 놀 수 있는 수준이 된 거 같다 이번 프로젝트 혼자 코드 짜고 이거저거 시도해보는게 정말 재미.. 2023. 12. 5.
[내일배움캠프][Spring Team Project]뉴스피드 프로젝트 개발일지 프로젝트 링크 : GitHub - minisundev/Gamelog: 게이머들을 위한 news feed project 게이머들을 위한 news feed project. Contribute to minisundev/Gamelog development by creating an account on GitHub. github.com 느낀 점 : 강의가 너무 많아서 듣는데만도 힘들어서 복습도 못 한채로 팀 프로젝트에 들어갔는데 팀원들이 내가 모르는 부분 많이 알려주기도 했지만 일단 과제는 완성해야하니까 모여서 코딩하는 시간에 강의자료 들여다보니까 실전 압축 경험으로 이해가 쏙쏙 되어서 많이 배우게 되었다 사실 강의 듣느라 개인과제는 못했는데 과제를 하면서, 실제로 코딩을 하면서 익히는게 제일 머릿속에 잘 남는 .. 2023. 11. 27.
크롬에서 백그라운드에 재생되고있는 미디어 뒤로 감기, 앞으로 감기, 정지/재생하기 따라하기 귀찮으신 분은 이거 다운받아서 실행하기! 왼쪽 방향키 : 되감기 ,아래 방향키 : 멈추기 ,오른쪽 방향키 : 뒤로 감기 따라야 할 6단계 스텝 1. autohotkey 설치 https://www.autohotkey.com/ AutoHotkey AutoHotkey provides a simple, flexible syntax allowing you to focus more on the task at hand rather than every single little technicality. It supports not only the popular imperative-procedural paradigm, but also object-oriented and command-based programmi .. 2023. 11. 10.