본문 바로가기

WEB

(79)
BudgetKeemi project BudgetKeemi 개발 일지프로젝트 제목BudgetKeemi개발일자2024.08.24 ~ 2024.09.14기술Java 21, Gradle , Spring framework, Git, H2, JQuery설명사용자가 자신의 수입과 지출을 관리할 수 있는 웹 어플리케이션입니다. 소셜 로그인, 예산 금액과 기간 설정, 월 별 수입/지출 확인, 지출 통계 등의 기능을 포함하고 있습니다.이슈 해결https://dev-hwa.tistory.com/117https://dev-hwa.tistory.com/118https://dev-hwa.tistory.com/119https://dev-hwa.tistory.com/120배운점 ERD 설계의 중요성 ToastUI 사용 경험 AJAX 에러 메시지 처리 빌더 패턴 사용 ..
돈 관련 필드 타입 BudgetKeemi 프로젝트에서의 고민 BudgetKeemi는 사용자가 자신의 수입과 지출을 관리할 수 있는 웹 어플리케이션이다.예산 설정, 월별 수입/지출 확인, 지출 통계 등의 기능을 포함한다. 처음에 ERD를 설계할 때 가장 고민했던 건 돈 관련 필드는 타입을 어떻게 지정해야할까? 였다.후보로는 int, long, float, double , BigDecimal 등이 있었다. BigDecimal에 대해 알게 된 점 BigDecimal은 조사하면서 알게된 타입이다.특징은 불변 성질을 가지고 있고 매우 큰 숫자도 표현할 수 있다는 것이다.BigDecimal은 큰 숫자를 배열에 나누어서 저장하고 내부적으로 임의 정밀도 연산을 사용해 계산을 아주 정확하게 할 수 있다. 금융 계산에 필수적인 타입이다.그러..
@NotNull @NotEmpty @NotBlank BudgetKeemi 프로젝트에서의 고민데이터를 검증하다 보면 @NotNull, @NotEmpty, @NotBlank 이 세 가지 어노테이션을 자주 사용하게 된다.하지만 이 어노테이션은 서로 다른 특징을 가지고 있어 가끔 헷갈린다.@NotNull @NotEmpty @NotBlank의 특징 @NotNull:  값이 Null을 허용하지 않는다@NotEmpty: 값이 Null 이나 ""(빈문자열)을 허용하지 않는다@NotBlank:  값이 Null 이나 ""(빈문자열)," "(공백)을 허용하지 않는다문제점나는 이 3가지를 자주 헷갈리곤 해서 허용하지 않는 범위가 가장 넓은 @NotBlank를 자주 사용했다. 그러던 도중에 이번 프로젝트에서 문제가 발생했다.UnexpectedTypeException 예외가 발생..
클라이언트? 서버? 구현 문제 BudgetKeemi 프로젝트에서의 고민가끔가다 어떤 기능을 클라이언트에서 구현할지, 서버에서 구현할지 고민될 때가 있다.나도 BudgetKeemi 프로젝트를 진행하면서도 이러한 고민을 했다.(물론 데이터 검증을 진행하는 경우 서버에서 검증하는 것은 당연하다.) 이 프로젝트에서는 거래내역 데이터를 날짜 기준 오름차순 또는 내림차순으로 정렬해야하는 경우가 있었다. 이런 상황에서 어떻게 해야할까우선 둘의 차이점을 알아보자클라이언트에서 구현1. 유연성2. 서버 부담 감소3. 빠른 구현- > 소규모 서비스의 경우의문점2번 서버 부담 감소에서는 의문이 들었다.정렬 혹은 분류되지 않은 대량의 데이터를 받는게 더 부담이 아닐까?서버에서 구현1. 성능 최적화2. 일관성 유지3. 데이터 처리 로직 분리-> 정렬하는 것이..
서비스 계층 간의 의존성 BudgetKeemi 프로젝트에서의 고민코드를 작성하다보면 내가 사용하는 언어와 프레임워크 특징을 잘 사용하고 있는가에 대한 의문이 들때가 있다. 포트폴리오 만드는 취준생 입장에서 코드 리팩토링이나 비지니스 로직을 추가하는 경우가 많이 없다보니 내가 지금 작성한 코드가 일으킬 사이드 이펙트를 상상하기 힘들다.하지만 각 계층의 역할을 이해하고 구조를 고민하면 더 좋은 코드를 작성할 수 있다.그래서 늘 구조를 설계할 때 신중해야한다. 이번에는 서비스와 컨트롤러 간의 의존성 분리에 대해서 생각해보았다Spring MVC 패턴 개발에 자주 쓰이는 MVC 패턴은 컨트롤러, 서비스, 레포지토리 이 세가지 계층을 떠올리게 한다.각 엔티티마다 하나의 컨트롤러, 서비스, 레포지토리를 만들어서 서로 의존하면 참 좋겠지만 그..
JPA- 영속성 컨텍스트의 동일성 보장 영속성 컨텍스트 사용시 이점으로 언급되는 동일성 보장 왜 이점인지 알아보자 !! 영속성 컨텍스트 개념- 영속성 컨텍스트는 엔티티를 영구 저장하는 환경으로 엔티티 매니저를 통해 접근이 가능 동일성 보장?- 영속성 컨텍스트 안에 데이터가 하나씩 존재하도록 하는 규칙- 중복 불허용 및 데이터 관리에 최적 궁금점 영속성 컨텍스트가 없어도 primary key가 있으면 동일성을 보장하지 않을까?  DB에서 직접 조회하는 경우- 동일한 ID를 가진 데이터를 여러번 조회하면 새로운 객체로 반환User user1 = database.findUserById(1);User user2 = database.findUserById(1);  >> user1과 user2는 같은 primary key를 가진 다른 메모리의 객체  영..
MusicSheetsCommunity project MusicSheetsCommunity project 개발 일지프로젝트 제목MusicSheetsCommunity개발 일자2024.06~07개발 목적iframe 사용,게시판, 사용자 관리자 기능 기술 구현기술Java 17, Gradle, Spring, JPA, Git Actions, Docker, AWS Ec2, AWS S3, H2(local),My sql , Bootstrap, Javascript, JQuery설명youtube에 업로드된 영상 악보를 저장 및 관리하고 공통 관심사를 가진 사용자끼리 소통하는 커뮤니케이션 형성아쉬운 점초반에 웹 디자인을 직접 구현한다고 시간을 많이 소비함.참조 코드에 따라 JavaScript와 JQuery를 혼용해서 사용throw exception 사용으로 인한 excepti..
JsonEOFException 문제사항Json 예시 [{ "id":1 , "name":"Lucy" }]  Json을 역직렬화하려는 도중 계속해서 오류가 났다 ㅠㅠcohttp://m.fasterxml.jackson.core.io.JsonEOFException: Unexpected end-of-input: expected close marker for Object (start marker at [Source: (String)"{"id":14"; line: 1, column: 1]) at [Source: (String)"{"id":14"; line: 1, column: 9] 문제 코드@Test public void testSingleObjectJsonParsing(List jsonList) throws IOException { ..
Spring security6와 CSRF 사이드 프로젝트 개발 도중 .. Ajax로 Delete 요청을 하는데 자꾸 access-denied가 떴다 처음에는 admin, user 권한 때문인줄 알았지만 Spring Security에서 CSRF 공격 방지를 하기 위한 설정 때문이었다.  CSRF란?사이트 간 요청 위조(cross site request forgery)라는 뜻의 웹사이트 취약점 공격의 하나로, 사용자 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정웹사이트에 요청하게하는 공격이다  Spring Security와 CSRFSpring Security는 기본적으로 CSRF 공격을 방지하기 위해 CSRF 토큰을 사용한다. 해당 프레임워크를 사용할때 form 태그에 내가 추가하지 않은 값이 들어 있는 경우있다.바로 아래 사진의 input..
2024 정보처리기사 1회차 실기 합격 후기 정보처리기사 실기 합격 후기 입니다 ㅎㅎ  전공여부관련 전공 졸업생공부 기간총 4개월시험 횟수4번째취업취준생 우선 저는 이번 1회차 시험이 필기 만료 전 마지막 시험이고 4번째 실기 도전이었습니다 .. 🥹 매번 점수도 아슬아슬한편도 아닌 항상 2~30점대를 유지했습니다 그냥 포기하고 나중에 다시 할까 고민도 했습니다. 그치만 또 필기시험을 치기 너무 너무 싫어서,, 그래서 이번엔 인강의 도움을 받았습니다 제가 선택한 강의는 흥달쌤 강의였습니다https://www.youtube.com/@HeungSsaem 흥달쌤흥달쌤과 함께하는 IT 채널입니다. 정보처리기사 자격증 관련된 강의 및 실무 노하우, 프로그래밍 언어(JAVA, C언어, Python) 특강 등이 진행됩니다. 앞으로 진행 예정인 동영상은 IT 관..