개인 프로젝트 11

📑 JPA 연관 관계 순환참조로 인한 직렬화 에러 해결 방법

DBMS에서 각 테이블간의 연관관계를 외래키로 설정하듯이 JPA에서도 두 엔티티 간의 연관관계를 설정해주어야 한다. JPA의 연관관계의 경우 단방향이 아닌 양방향으로 관계를 설정할 수 있는데, 이렇듯 양방향으로 설정된 관계에서 한 엔티티를 조회하는 경우 순환참조 에러가 발생한다. 프로젝트를 진행하던 중 맞이하게 된 순환 참조 예시를 보여주고, 해당 에러를 해결한 방법을 설명하겠다. 가장 처음 기획 의도는 하나의 자산에 최대 3장의 이미지를 등록할 수 있게 하려고 했고, 자산에서는 이미지 리스트를 조회할 수 있도록 하고, 이미지에서는 해당 이미지가 어떤 자산의 이미지인지 확인할 수 있도록 자산 id를 조회할 수 있도록 하고자 했다. 그래서 아래와 같이 두 엔티티의 관계를 자산 : 이미지 = 1 : N으로 ..

📑 KAS_Self Project_Day1

매번 개인 프로젝트를 시작해야지, 해야지 하지만 시작은 하지 않고 놀기만 했던 것 같다.. 그러다가 성당에서 행사때마다 간단하게 경량형 프로그램을 개발해서 사용하긴 했는데 이번에는 조금 더 각 잡고 천천히 그리고 꼼꼼하게 하나의 시스템을 개발해보려고 한다. 배포까지는 정식 서비스 등록은 어렵겠지만,,, 스프링 부트 프로젝트를 윈도우용 실행파일(.exe)로 만들어서 로컬 PC에서 실행할 수 있는 웹페이지를 제작해보고자 한다. 메인 기능은 자산 관리 시스템이다. 제목에서 보면 알겠지만 Kuui Asset Management System이다. 내가 속한 봉사단체가 학생들을 대상으로 교리 및 행사를 하다 보니 이런저런 물질적인 재산이 엄청 많다... 매번 행사 때마다 물품을 빼서 쓰고, 빌려주고 하면서 주기는 ..

📑 스프링 부트 + 리액트 프로젝트를 진행하면서 몰랐던 부분

Spring Security 의존성만 추가하면 기본적으로 /login 페이지가 적용된다. id는 user, 비밀번호는 Spring Security가 잘 적용되었다면 스프링 부트를 실행할 때 비밀번호를 준다. 그 번호를 입력하면 된다. This generated password is for development use only. Your security configuration must be updated before running your application in production. 이런식으로 의존성을 추가하면 로그인 페이지를 기본 제공하는데 추후에 커스텀이 가능하고, 각 페이지마다 ROLE_USER 또는 ROLE_ADMIN의 권한을 주어 로그인이 필요한 페이지를 스프링에게 알려주면, 사용자의 권한에..

📑 SpringLegacyProject(MVC)_이메일인증_ID/PWD찾기

지난 시간에 적용한 네아로를 이어서 이번에는 메일보내기 Api를 사용해보고자 한다. 원래는 휴대폰 인증을 하고 싶었지만,, 유료서비스이기 때문에 메일 보내기로 대체해서 사용자 인증을 진행해보고자 한다. 필자의 프로젝트 내에서 이메일이 유니크이기 때문에 이메일을 가지고 아이디를 찾고, 찾은 아이디와 이메일이 동일한 사용자로 매핑되는 경우 메일로 인증번호를 보내고 비밀번호를 찾고 변경할 수 있도록 구현하고자 한다. 이메일 인증은 생각보다 간단하니 바로 진행해보자. 1. 환경설정(pom.xml) 두 개의 라이브러리를 pom.xml파일에 추가해야 한다. 이때 중요한 것은 spring-context-support의 버전은 독자가 사용하고 있는 springframework버전과 반드시 동일하게 해야 한다. [ ro..

📑 SpringLegacyProject(MVC) Naver Login

국비지원 학원도 수료가 3주정도 남았다,, 굉장히 길다고 생각했던 6개월이 어느 순간에 휙하고 지나간 기분이다. 그래도 마지막까지 열심히하기 위해 오늘은 필자가 진행중인 최종프로젝트에 Naver 소셜 로그인을 진행한 부분을 소개하려고 한다. 가장 먼저 네아로 API를 사용하기 위해 어플리케이션을 등록해야 하기 때문에 천천히 진행해보자. 1. 어플리케이션 등록 https://developers.naver.com/main/ NAVER Developers 네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음 developers.naver.com 네이버 아이디로..

📑 RSA 암호화 방식을 이용한 로그인 처리

프로젝트를 진행하는 와중에 이번에는 필자가 로그인을 담당하게 되었다. 평소에 다른 학원 사람들과 꾸준히 세미 프로젝트를 해왔어서 그런지 단순한 로그인 기능 구현은 어려움이 없었다. 후에 소셜 로그인은 팀원들과 함께 공부하여 함께 구현해보기로 했는데, 회의날까지 약간의 시간이 남아서 로그인 처리에 대한 보안을 조금 강화하고자 한다. 이를 위해 SSL을 구현해볼까 고민해보았지만,, 최대한 돈이 들지 않는 범주에서 하기 위해서 RSA를 구현해보기로 했다. 그렇다면 RSA에 대해서 한 번 정리하고 코드에 대한 리뷰를 보도록 하자. [ RSA ] RSA란 암호화와 인증을 할 수 있는 공개키 암호 시스템이다. 이것저것 자격증을 공부하면서 많이 들어보았는데, 이렇게 직접 구현해보니 느낌이 색달랐던 것 같다. 이것은 ..

📑 최종프로젝트_DAY2~4

DAY2에는 점심시간에 점심을 먹고 짧게 진행상황 확인만 하면서 오늘할 회의 내용을 정리했다. 프로젝트 이름을 하나씩 생각해보는 것과 각자 유즈케이스 다이어그램을 하나씩 작성해오는 것이 목표였는데, 프로젝트 이름은 너무 촌,,,스러워서 하루만 더 고민해보기로 했고, UML은 한 팀원이 엄청 열심히 준비해 주어서 다함께 약간의 보완을 거친 후에 다음과 같은 UML을 완성했다. [ UML ] 간단하게 앞으로 개발할 웹 페이지를 Top-Down방식으로 설계를 했다. 크게 한 페이지 단위로 설계를 하고, 세부 기능들을 추가해가면서 모듈을 추가할 예정이다. 기능을 기준으로 나눈 단위는 다음과 같다. 로그인/회원가입(소셜 로그인 api) 메인 페이지(모든 사용자) 마이 페이지(로그인 한 사용자만) 학습 카드보면서 ..

📑 연애대작전_SemiProject_기능정리_즐겨찾기

오늘은 필자가 구현해보고자 했던 기능 중에서 가장 장시간에 걸쳐 완성한 기능이다. 단순하게 생각해낸 알고리즘으로 접근을 했는데 생각보다 많은 난관에 봉착했었다. 구글링을 통해 검색을 해보아도 필자의 검색 능력이 부족한 탓인지,, 관련된 내용을 찾지 못했다. 기능을 구현하기에만 앞서서 효율성은 하나도 고려하지 않았다는 단점이 있다. 일단 스스로 구현한 기능을 정리하고 차후에 더 나은 방법을 발견하게 되면 추가로 수정해서 정리하도록 하겠다. 혹시라도 이글을 읽고 피드백을 주신다면 감사히 받겠다. 프로젝트의 모든 내용을 설명할 수는 없기 때문에 기본적인 내용만 설명해주고 추가한 기능에 대해서 정리하고자 한다. [ 기본 상황 설명] 메인 페이지에서 코스 추천을 누르면 타인이 등록한 데이트 코스들이 조회수 순서대..

📑 PhotoGallery_국비실습_기능정리_세션만료

오늘은 로그인한 사용자에게 부여한 세션값을 사용해서 모든 페이지에서 해당 사용자의 정보를 이용할 수 있도록 세션 트래킹 기법을 활용하는데, 이 세션에는 유효시간이라는 것이 존재한다. 이 세션이 만료된 경우 어떻게 처리해야 하는지에 대해 정리해보고자 한다. 세션의 기본적인 유효시간은 30분이라고 하는데, 이 30분이 접속시간이 아니라 브라우저에 접속시 아무런 행동도 하지 않고 30분 동안 있을경우 세션의 유효시간이 끝난다고 한다. 처음 접했을 때는 시간이 꽤나 여유로운데? 굳이 세션 만료까지 처리해야 하나?라는 의문은 있었지만, 이 의문은 얼마가지 않아 해결되었다. 필자가 따로 진행하던 연애 대작전 프로젝트에서 기능을 추가하던 중 중간에 막혀서 구글링과 다른 공부를 하다가 다시 실행해보았는데, 예상치 못한..

📑 연애대작전_SemiProject_기능정리_로그인엔터처리

서블릿과 웹 어플리케이션 서버에 대해서 처음 공부를 시작함과 동시에 국비지원 학원 사람들과 프로젝트 스터디를 2주동안 진행하였다. 이전에는 콘솔을 사용하여 자바와 DB만을 이용한 JDBC를 실습했었는데, 이후에는 조금 더 확장하여 웹 페이지에서 동적인 컨텐츠를 줄 수 있는 웹 애플리케이션 서버를 만들어보는 프로젝트를 진행했다. 이번 프로젝트의 제목은 연애대작전으로 로그인 회원가입이 주요 기능이며, 시간이 남아서 추가적으로 데이트 코스를 만들거나 조회할 수 있는 기능을 구현했다. 이번에 필자는 로그인 기능을 구현했는데, 세션 트래킹을 최대한 구현해보고자 노력했다. 로그인 기능을 구현하는 과정에서 생각해보니 로그인 버튼을 눌러야만 폼 데이터가 서버로 전송이 되었다. 일반적으로 기본적인 사이트는 버튼이 있기는..

📑 최종프로젝트_DAY1

이제 어느덧 수료를 2달 앞두고 있는 상황이다. 아직 배워야 할 부분이 너무나도 많지만, 수료하고 어떻게 취업할지 막막하긴 하지만,,, 우리는 공부를 멈추지 않는 개발자이니까 지금할 수 있는 일에 대해 최선을 다하고자 한다. 다가오는 수료를 맞이하면서 이력서에 첨부할 포트폴리오를 만들기 위해 최종적인 프로젝트를 시작했다. 팀원은 필자를 포함한 3명으로, 개발에 사용할 언어는 java, oracle, javascript, spring이다. 만들고자 하는 프로젝트의 주제를 선정하고, 오늘 처음으로 만나서 개략적으로 구현하고자 하는 기능들을 생각해보고 DB를 모델링하는 시간을 갖게 되었다. 이번 프로젝트에서 만드는 프로젝트는 웹에서 플래시카드를 구현하려고 한다. 카드의 내용은 기술면접 단어 암기장으로, 프로젝..