
최근 유행하는 캐릭터 맞히기 게임을 아이와 함께 즐기다 보니, 흥미가 생겨 직접 만들어보게 되었습니다. 관심 있으신 분들은 한번 참고해보세요! 전체소스는 Github 를 참고해주세요. SpringBoot + Thymeleaf + MariaDB 로 작성되었습니다. 주요 기능일반 모드: 10문제, 20문제, 50문제 중 선택하여 플레이 가능데스매치 모드: 제한 시간과 목숨을 두고 도전하는 스릴 있는 게임 모드공부하기 모드: 게임을 즐기면서 캐릭터에 대해 학습할 수 있는 기능랭킹 시스템: 사용자들의 기록을 기반으로 랭킹을 조회하는 기능메뉴 및 문제 등록: 게임에 사용할 캐릭터와 문제들을 자유롭게 등록 가능 1. 메인화면게임을 선택할 수 있는 메인 화면입니다. 원하는 만화를 선택하여 게임을 진행할 수 있습니다...
AOP(Aspect-Oriented Programming)는 핵심 비즈니스 로직과 분리되는 부가적인 기능, 즉 '횡단 관심사'를 분리해 코드의 가독성과 유지 보수성을 높여줍니다. 대표적인 예로 로깅, 트랜잭션 관리, 보안 등이 있는데, 이 중에서도 메서드 호출에 대한 로깅은 애플리케이션의 동작을 추적하고 디버깅하는 데 큰 도움이 됩니다. 이번 포스팅에서는 Spring Boot의 AOP를 활용해 프로젝트 내 모든 메서드 호출 시마다 자동으로 로그를 남기는 방법을 알아보겠습니다.Spring logback 설정은 블로그 포스팅 을 참고해주세요. 1. 라이브러리 추가// AOPimplementation 'org.springframework.boot:spring-boot-starter-aop' 2. LogAop...
Spring Data JPA는 쿼리를 메서드 이름만으로 작성할 수 있는 강력한 기능을 제공합니다. 복잡한 SQL을 작성하지 않고도 데이터를 쉽게 조회, 수정, 삭제할 수 있는 이 기능은 개발 생산성을 크게 향상시킵니다. 이번 포스팅에서는 findBy, countBy, deleteBy 등의 다양한 키워드와 그 조합을 알아보고, 실제 예제를 통해 활용 방법을 소개하겠습니다. 1. findBy특정 조건을 만족하는 엔티티(혹은 엔티티의 리스트)를 조회할 때 사용// username으로 User 리스트를 조회List findByUsername(String username); 2. existsBy데이터베이스에 존재하는지 체크// 이메일이 데이터베이스에 이미 존재하는지 확인boolean existsByEmail(St..
이번 포스팅에서는 Spring Boot 환경에서 JPA와 Criteria API를 활용하여 여러 테이블을 Join 하는 방법을 소개하겠습니다. 특히, Criteria API를 사용하면 동적 쿼리 작성이 간편해지고, 복잡한 쿼리를 객체지향적으로 관리할 수 있습니다.이번 예제에서는 users, orders, products 테이블을 기준으로 사용자별 주문 내역을 조회하는 과정을 살펴보겠습니다. VO를 활용하여 데이터를 매핑하고, 실무에서 많이 사용하는 Join 예제를 통해 보다 효과적으로 JPA의 활용 방법을 익히실 수 있습니다.JPA를 처음 사용하시는 분이나 Criteria API를 활용해보고 싶은 분들에게 도움이 되길 바랍니다. 그럼 시작해보겠습니다!전체소스는 Github를 참고해 주세요. 1. 테이블 ..

오늘은 SpringBoot와 Apache Kafka를 활용하여 간단한 메시징 예제를 만들어보겠습니다. Apache Kafka는 분산 스트리밍 플랫폼으로, 대규모 데이터 처리 및 실시간 데이터 스트리밍에 강력한 도구입니다. 1. Apache Kafka 소개Apache Kafka는 분산형 스트리밍 플랫폼으로, 대량의 실시간 데이터를 처리하고 저장하는 데 특화된 시스템입니다. LinkedIn에서 개발되어 현재 Apache Software Foundation에서 관리하고 있으며 아래와 같은 특징을 가지고 있습니다.메시지 브로커: Kafka는 생산자(Producer)와 소비자(Consumer) 사이에서 메시지를 전송하는 역할을 합니다. 데이터를 토픽(Topic)으로 구분하여 관리하고, 각 토픽은 여러 파티션(P..

이번 포스팅에서는 Spring Boot를 이용하여 공공데이터포탈의 IP 정보 검색 API를 연동하는 방법을 소개하겠습니다. 최근 공공기관과 기업들은 다양한 공공데이터를 활용하여 부가가치를 창출하고 있으며, 특히 IP 주소에 대한 정보는 네트워크 보안과 관련된 다양한 서비스에 필수적입니다. 1. 프로젝트 개요Spring Boot를 이용한 간단한 웹 애플리케이션을 구축하여, 공공데이터포탈에서 제공하는 IP 정보 검색 API를 통해 IP 주소의 세부 정보를 조회해 보겠습니다. 이를 통해 특정 IP가 어떤 기관에 할당되어 있는지, 해당 기관의 위치와 네트워크 정보를 쉽게 얻을 수 있습니다. 2. API 연동 준비우선, 공공데이터포탈에서 API 키를 발급받아야 합니다. API 키는 공공데이터포탈 회원가입 후, 해..

HATEOAS(Hypermedia as the Engine of Application State)는 RESTful API 설계에서 클라이언트가 API의 리소스를 동적으로 탐색하고 사용할 수 있게 해주는 강력한 개념입니다. 이 포스팅에서는 HATEOAS가 무엇인지, 왜 중요한지, 그리고 어떻게 구현할 수 있는지에 대해 알아보면서 더 유연하고 유지보수하기 쉬운 API를 만드는 방법을 소개합니다. 1. HATEOAS란?HATEOAS(Hypermedia as the Engine of Application State)는 RESTful API 설계의 중요한 원칙 중 하나로, 클라이언트와 서버 간의 상호작용에서 클라이언트가 서버의 응답 내에서 하이퍼미디어 링크를 통해 동적으로 리소스를 탐색하고 상태를 전이할 수 있도..

Apache openNLP를 이용하여 간단하게 고객센터 챗봇을 만드는 방법에 대해 알아보겠습니다. SpringBoot + Thymeleaf + Redis를 사용하여 작성하였고 전체소스는 Github를 참고해 주세요. 1. 라이브러리 추가plugins { id 'java' id 'org.springframework.boot' version '3.3.2' id 'io.spring.dependency-management' version '1.1.6'}group = 'com.cus'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}configurations { compileOnly { exten..
SpringBoot 프로젝트를 내장 톰캣을 이용해 jar로 배포하지 않고, 외장 톰캣을 이용해 war로 배포할 때, 404 오류가 발생하는 경우엔 대부분 SpringBoot 애플리케이션을 초기화하지 않아 외장 톰캣이 인식을 못하는 경우입니다. 그럴 땐 main 함수가 있는 java 소스로 이동하여 아래 내용을 추가하셔야 합니다. Initializer 추가@SpringBootApplicationpublic class MyApp extends SpringBootServletInitializer implements WebApplicationInitializer { public static void main(String[] args) { try { SpringApplication.run(Pharmorder..
크롬 F12를 이용해서 console에서 스크립트로 테스트를 하곤 하실 텐데요. iframe 내부에 있는 Element에 직접적으로 접근할 순 없습니다. 이번 포스팅에선 간단하게 iframe 내부 Element에 접근하는 방법에 대해 알아보겠습니다. 1. iframe 접근var iframe = document.getElementById('mainframe');iframe 의 ID를 찾습니다. 2. document 접근var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;iframe.contentDocument : iframe의 내부 HTML 문서에 직접 접근(최신브라우저 가능)iframe.contentWindow.document ..
- Total
- Today
- Yesterday