전체 글(85)
-
AWS RDS, EC2, S3를 사용한 서버 무중단 배포기
이번 포스팅에서는 AWS의 RDS, EC2, S3를 활용하여 서버를 설정하고, 무중단 배포를 위해 PM2를 사용하는 방법을 단계별로 설명합니다.1. AWS 계정 생성 2. EC2 인스턴스 생성 AWS Management Console에서 EC2 인스턴스를 생성합니다.인스턴스 생성 시 키 페어를 생성해야 합니다.※ 키페어- 인스턴스에 접근하기 위한 중요한 보안 정보- 한 번만 발급되며, 이후에는 다시 다운로드 할 수 없기 때문에 안전한 곳에 잘 보관해야 합니다!!( 저도 배포 다 하고 키 페어를 잃어버려 인스턴스를 새로 생성하여 다시 배포했습니다ㅠㅠ )인스턴스를 생성한 후, 탄력적 IP 주소를 할당하고 인스턴스에 연결합니다.네트워크 보안 -> 탄력적 IP -> 탄력적 IP 주소 할당 -> 기본 선택사항 ..
-
통계시각화 - Part3 일일달성률 월간달력에 표시
이 포스팅에서는 일일 달성률을 월간 달력에 시각적으로 표시하는 방법을 설명합니다. 각 날짜에 대한 달성률에 따라 달성률이 높은 날에는 다른 스티커를 붙이는 것처럼 시각적으로 표현하여, 달성률을 직관적으로 확인할 수 있도록 구현합니다참고: achievement 데이터를 패치하는 것은 이전 글에서 다뤘으므로, 이번 글에서는 생략합니다. 1. 타일 콘텐츠 함수각 날짜 타일에 달성률에 따른 아이콘을 표시// pages/index.tsx// 타일 콘텐츠 함수const tileContent = ({ date }: { date: Date }) => { const dateString = dayjs(date).format('YYYY-MM-DD'); // 날짜를 문자열로 변환 const achievement = mo..
-
통계시각화 - Part2 일일달성률 도넛차트
이 포스팅에서는 사용자별 일일 달성률을 시각화하는 도넛 차트를 구현하는 방법을 설명합니다. 프론트엔드 1. 일일 달성률 데이터 가져오기우선, 일일 달성률 데이터를 가져와서 도넛 차트에 전달하는 작업을 합니다. 이 과정은 메인 페이지 컴포넌트에서 수행됩니다.// pages/index.tsxuseEffect(() => { const fetchAchievement = async () => { const res = await fetch(`/api/achievement/get?user_id=${currentUser.user_id}&date=${dayjs(selectedDate).format('YYYY-MM-DD')}`); if (res.ok) { const data = await res.js..
-
통계시각화 - Part1 달성률 계산
이 포스팅에서는 음식 및 운동을 등록할 때 하루의 달성률을 계산하고 저장하는 방법을 설명합니다. 하루에 이미 등록된 달성률이 있는지 확인하고, 없으면 생성(Create)하고, 있으면 업데이트(Update)하는 과정을 다룹니다. 데이터베이스 스키마 achievement 테이블model achievement { id Int @id @default(autoincrement()) user_id Int // 해당 기록을 보유한 사용자 ID date DateTime // 달성률이 기록된 날짜 achievement Int // 계산된 달성률 user users @relation(fields: [user_id], referen..
-
그룹채팅 - Part7 일반 참여자의 권한 - 채팅방 나가기
이번 글에서는 일반 참여자가 채팅방을 나가는 기능을 구현하는 방법에 대해 설명합니다. 사용자가 채팅방을 나가면, 데이터베이스에서 해당 사용자의 정보를 삭제합니다. 프론트엔드 1. 채팅방 나가기 버튼{isOwner ? ( ) : ( )}일반 참여자는 채팅방 나가기 버튼이 보이며, 이 버튼을 클릭하면 handleLeaveRoom 함수가 호출됩니다. 2. handleLeaveRoom 함수const handleLeaveRoom = async () => { if (!currentUser) { alert("유효하지 않은 사용자입니다."); // 사용자가 유효하지 않을 경우 경고 메시지 return; } if (..
-
그룹채팅 - Part6 방장의 권한(3) - 공지
이번 포스팅에서는 방장이 채팅방에서 공지사항을 작성하고 표시하는 기능을 구현하는 방법에 대해 설명합니다. 또한 공지사항의 접기와 "오늘 하루 보지 않기" 상태를 저장하여 상태를 관리하는 방법도 다룹니다. 데이터베이스 스키마notice 테이블model notices { id Int @id @default(autoincrement()) chatroom_id Int title String content String created_at DateTime @default(now()) chatroom chatrooms @relation(fields: [chatroom_id], references: [id], onDelete: Cascade) @@inde..