Tiny Star

프로젝트 22

[쿠폰] Redis 선착순 쿠폰 시스템

Redis를 사용하여 선착순 쿠폰 시스템을 만들어보기로 했다.쿠폰에 초점이 맞춰진만큼 로그인 기능 등은 안넣고 오로지 쿠폰 발급만 구현하려고 한다. 🎯 시스템 구성 목표로그인 없이 (단, userId는 요청에 포함)선착순 쿠폰 발급쿠폰 재고는 Redis로 관리쿠폰 발급 결과만 DB에 저장빠른 응답 최우선 ✅ API 설계 구분 내용 MethodPOSTURL/api/coupons/issue요청 Body{ "userId": "string", "couponId": "string" }응답성공: { "success": true, "message": "쿠폰 발급 성공" }실패: { "success": false, "message": "쿠폰 소진" } ✅ ERD 설계[Coupon] (쿠폰 종류 관리 테이블)-..

프로젝트/쿠폰 2025.04.28

[반려동물 프로젝트] 마무리

서비스 고민에서 구성했던 페이지에서 변경이 있다. 추가할 페이지RFID 통계품종 분포도 -> 지역별 대표 품종과 겹치므로 제거New! 연도별 등록 추이소개 나머지 페이지는 기존이랑 큰 차이가 없어서 어제 새벽에 한 페이지, 방금 남은 작업을 끝냈다. 최종 페이지소개 우리 지역 견종과 묘종은? RFID 비율 연도별 등록 추이 github code 는 [여기]에서 확인할 수 있다. 간단한 프로젝트를 끝내며그다지 어려운 프로젝트가 아니었다. 오히려 쉬웠다고 볼 수 있다.이런 쉬운 프로젝트를 뭐하러 하냐고 할 수 있다. 실무에서 썼던 툴은 잘 다룬다고 할 수 있지만, 다르게보면 다른 툴은 못한다라고 볼 수 있다. MyBatis 대신 JPA를 사용하고, JPA 속에서 복잡한 쿼리를 어떻게 할지 고민하다가..

[반려동물 프로젝트] 백엔드 수정 (SpringCache)

백엔드 수정 사항region 캐시species 캐시dog/cat List 말고 다른 방식 구현QueryRepository = Service 역할 분리 region + sepecies 합쳐도 50개도 안되기 때문에 Spring Cache를 사용하려고 한다.대용량이거나 이벤트성이었으면 Redis와 Kafka를 고려했을텐데, 전혀 아니니..다음엔 다른 성향의 프로젝트로 위 캐시를 써봐야겠다. 캐시@EnableCaching // 추가@SpringBootApplicationpublic class PetstatsApplication { public static void main(String[] args) { SpringApplication.run(PetstatsApplication.class..

[반려동물 프로젝트] 프론트 구현 (Mustache)

프론트는 JSP 로 하려고 했으나, 뷰에서는 백엔드와는 완전히 분리되는게 좋을 것 같다.(경험을 위한 JSP 는 다른 프로젝트에서 해보는 걸로...) JSP vs Mustache vs Thymeleaf 항목 JSP Mustache Thymeleaf 템플릿 문법자바 코드 삽입 가능 ()순수 템플릿, 로직 없음HTML 태그에 속성(th:)으로 표현문법 표현력강력하지만 복잡단순, 제한적 ({{#each}})풍부하고 직관적 (th:if, th:each)HTML 정합성❌ 깨질 수 있음 (스크립틀릿 등)⛔ HTML로 직접 열면 깨질 수 있음✅ HTML로 열어도 유효한 마크업성능/속도느림 (JSP 컴파일 필요)빠름 (경량 템플릿)중간 (HTML DOM 기반)유지보수성❌ 로직 섞이기 쉬움✅ 표현만 담당, 구..

[반려동물 프로젝트] 백엔드 구현 (QueryDSL)

화면으로 보낼 데이터를 작업하려고 한다.서비스 고민할 때 가장 첫 번째로 떠올렸던 '지역별 대표 품종' 쿼리부터 작업해보자. 의존성 설정val queryDslVersion = "5.0.0"dependencies { implementation("com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta") annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:jakarta") annotationProcessor("jakarta.annotation:jakarta.annotation-api") annotationProcessor("jakarta.persistence:jakarta.pers..

[반려동물 프로젝트] DB 구성 (JPA, Python)

쿼리해서 프론트로 보내주기만하면 되기 때문에데이터만 잘 셋팅해두면 그 이후에는 간단할 거라고 생각한다.(프론트 빼고...) DTO 생성 가장 먼저 JPA 를 사용해 테이블을 생성한다. (참고)테이블은 초기에 생각했던 테이블 구성으로 진행했다. 데이터 삽입 API가 업데이트되고 있는지 의심스럽기 때문에일단은 파일을 다운로드해서 데이터를 넣기로 했다. import pandas as pdfrom sqlalchemy import create_enginedef get_engine(db_info): return create_engine(f"mysql+pymysql://{db_info['user']}:{db_info['password']}@{db_info['host']}:{db_info['port']}/..

[반려동물 프로젝트] 데이터 활용 고민

경기데이터드림에서 제공하는 [경기도 동물등록 현황]이 궁금해서 들어갔는데, 항목들이 너무 귀엽다. (맹견여부는 동물보호법상 맹견으로 지정된 도사견, 핏불테리어, 아메리칸 스태퍼스셔 테리어 등에 해당하는지 여부를 나타냄) 나만 귀엽나? 아무튼 데이터 본 김에 간단한 리스트 형태의 페이지 만들면 좋을 것 같다. 일마다 업데이트 된다고 하는데, 최신 업데이트가 2025/04/23 임에도 불구하고,생년 가장 최근이 2024인거보면 최신업데이트가 안되고 있는 듯하다.유기견을 입양하거나, 뒤늦게 등록할 수 있지만 그 중에 25년생이 하나도 없다는게 이상하다... 서비스 고민지역별 대표 품종 (TOP10)품종별 개체 수 막대 그래프 또는 파이차트믹스견, 진도견, 말티즈, 푸들, 치와와 등 분포 비교활용 데이터: ..

[온실가스 프로젝트] DB - 3 (테이블 및 데이터)

온실가스로 뭐할지 생각했던 테이블구조에서 크게 다를게 없기 때문에 이대로 구현하고자 한다. # 사업정보CREATE TABLE project ( project_code INT PRIMARY KEY AUTO_INCREMENT, type VARCHAR(50) NOT NULL, name VARCHAR(100) NOT NULL);# 지역정보CREATE TABLE region ( region_code INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL);# 상세사업정보CREATE TABLE project_detail ( project_detail_code VARCHAR(50) PRIMARY KEY, project_code va..

프로젝트/환경 2025.04.23

[온실가스 프로젝트] DB - 2 (MariaDB)

최신 버전을 가져와서 사용할 수도 있지만, 실무라고 가정했을 때 장기지원해주는 버전을 사용하는게 좋기 때문에 특정 버전을 설치하려고 한다. 실제로 실무에서 (정확한 버전은 기억 안나지만) 지원이 끝나는 버전을 사용하고 있어서 버전업을 한 적이 있다.하지만 너무 오래된 버전이라 바로 업그레이드가 안되고 백업으로 하나하나 옮겼던 기억이...ㅠ MariaDB 연결 MariaDB 이미지 다운로드 MariaDB Server long-term release maintenance periods 를 참고해서 25년 4월 기준에서 가장 오래 지원해주는 LTS 버전을 설치할 것이다. 11.8은 RC (Release Candidate) 출시후보 버전으로 아직 안정성 테스트를 거치지 않은 상태이다. 그래서 그 다음 최신..

프로젝트/환경 2025.04.22

[온실가스 프로젝트] DB - 1 (Docker Desktop for Windows)

H2, Mysql, MariaDB 세 가지를 고려했다. 방식설치메모리편의성H2X50~100MB테스트 최적Docker + MariaDBX200~300MB실제 환경 유사MysqlOMariaDB와 비슷하거나 더 큼설정 번거로움 H2가 편하고 좋지만, 실무에서 H2를 사용하진 않으니 빠르게 패스하고Mysql 은 설치형으로 하면 편하지만 프로그램을 직접 설치하는게 마음에 들지 않았다. 그래서 생각한게 Docker + MariaDB이다.Docker Desktop for Windows를 사용해본적 없었기 때문에 해보고 싶은 것도 있고도커든 쿠버네티스든 컨테이너화 경험을 요구하는 회사들이 꽤 있었기 때문이다.(실무에서 도커와 쿠버네티스를 경험하긴 했으나, 복습개념으로 하고 싶었다.) 그리고 데스크탑을 사용하면 UI로 ..

프로젝트/환경 2025.04.22
top