본문 바로가기

Develop/Study7

UUID 출결 시스템에 QR 코드를 적용하면서 겪은 것들 정리하면서 한번 더 공부하기!이번 프로젝트에서 QR이미지를 이용하면서 출결을 관리할 수 있는 로직을 만들어야 했다.기능적인 부분에서는 QR 코드 이미지가 매번 다르게 생성되어야 했고, 출결 가능 여부를 판단할 수 있도록 유효 시간 조건도 포함되어야 했다.이 두 가지 조건을 만족시키기 위해 선택한 것이 바로 UUID였다. ✅UUID ? UUID란 Universally Unique Identifier의 약자로 128bit의 고유 식별자를 뜻한다.다른 고유 ID 생성 방법과 다르게 UUID는 중앙 시스템에 등록하고 발급하는 과정이 없기 때문에 상대적으로 더 빠르고 간단하게 만들 수 있다는 장점이 있다. RFC 4122문서에 정의된 UUID 버전 4 표준 규약에는.. 2025. 4. 18.
Deserialization Failure due to Date Format Deserialization Failure due to Date Format(날짜 포맷 역직렬화 실패) 지금 개발하고 있는 부분에 날짜 포맷을 사용해야 하는 부분이 있었다.사용자가 해당 날짜를 수정해서 저장도 가능하고, 저장한 값들은 불러올 수도 있어야 한다.하지만 시간 저장이 안되는 문제가 발생했다!!  오늘의 오류 공부하기  ⚠️문제필드에서 날짜를 입력후 저장하게 되면 500에러 발생  ❔원인프론트에서 날짜에 대한 type 값이 여러개 있는데type="text"는 날짜, 시간 선택에 대한 범위가 없고 광범위하게 사용 가능하지만 기본 제공되는 달력 라이브러리나 이런 편의성이 없기 때문에 사용자가 직접 입력한것을 받아서 쓴다. type=”date”는 날짜만 선택 가능하다. 지금 나의 경우에는 시간도 선택.. 2025. 4. 10.
react, typescript 타입스크립트의 Generic이란? > 타입스크립트를 경험해보지는 못했지만, 자바의 제네릭은 알고 있다.자바의 제네릭은 클래스나 메서드에서 사용할 데이터 타입을 나중에 지정할 수 있도록 해주는 기능(타입을 매개변수로 받는다고 생각)이다. T func(T val)  처럼 제네릭 타입(T)를 선언해서 어떤 타입이든 받아서 변환할 수 있다. 타입스크립트의 제네릭도 비슷한 개념인 것 같다.어떤 타입이 올지 미리 정하지 않고 나중에 사용할 때 타입을 외부에서 지정할 수 있도록 해주는 기능이다.이렇게 되면 코드를 재사용하면서도 타입 안정성을 보장해주는 이점이 있다. 예를 들어 any를 사용하는 함수는 어떤 타입이든 받을 수 있지만, 반환 타입이 정확하지 않아 타입 안정성이 떨어지게 된다.identity(123)처럼 .. 2025. 3. 22.
Spring Framework Spring Framework란 Java 엔터프라이즈 애플리케이션 개발을 위한 오픈소스 애플리케이션 프레임워크로객체 지향 프로그래밍(OOP) 원칙을 따르면서, 개발자가 효율적이고 확장 가능한 애플리케이션을 만들 수 있도록 지원하는 것이다.  Spring Container  스프링에서 객체(Bean)들을 생성하고 관리하는 컨테이너다.모든 객체를 개발자가 직접 생성하는 것이 아니라, Spring Container가 관리한다.컨테이너는 ApplicationContext 인터페이스를 통해 제공된다. 스프링에서 객체를 생성한다는 것은 클래스를 메모리에 올려(new 키워드) 인스턴스를 만들고 객체를 관리하는 것을 의미하는데Spring Container가 객체를 생성하는 것은 일반적으로 개발자가 new 키워드를 사용.. 2025. 3. 14.
ZeroSSL 인증서 만료 > Let's Encrypt로 재발급 하기 기존에 프로젝트 배포용으로 쓰던 ZeroSSL의 무료 인증서가 90일이 지나서 만료됐다.연장하려고 하니까 역시나 돈을 내야한다! 이제 새로운 방법으로 SSL 인증서를 발급받아야 한다!  이번에는 Let's Encrypt를 이용해서 SSL 인증서를 발급받고 Apache Tomcat 서버에 다시 적용해보기 시작!  컴퓨터 환경이 윈도우기 때문에 Win-ACME (WACS)를 설치해줬다.https://www.win-acme.com/ win-acmewin-acme This is a ACMEv2 client for Windows that aims to be very simple to start with, but powerful enough to grow into almost every scenario. A ver.. 2025. 2. 25.
Nginx 이용해서 리버스 프록시 설정하기 학원에서 팀 프로젝트로 진행한 2차, 3차 프로젝트는 STS3에서 Spring MVC Project로 진행해서클라이언트 단은 WEB-INF의 views에서 처리되고, 서버단은 각각 JSP, JPA로 만들어서 하나의 프로젝트 폴더 안에서 클라이언트와 서버가 모두 구현된 구조였기 때문에 톰캣 서버만 추가해서 프로젝트를 배포하면 바로 실행할 수 있는 방식이었다.   반면, 지금 진행 중인 개인 프로젝트는 프론트엔드와 백엔드가 분리된 구조로 개발되고 있다. 프론트엔드는 VSCode에서 React를 사용해 개발 중이고, 백엔드는 STS3에서 Spring Boot로 개발하고 있다.Spring Boot는 내장 톰캣을 사용하기 때문에, 외부 톰캣과 함께 배포하려고 하다 보니 문제가 발생했다.   프로젝트에 SSL 인증.. 2024. 12. 27.