본문 바로가기

전체 글249

Layered & Domain Architecture 란 무엇일까? 스프링 프레임워크를 공부하며 프로젝트를 설계하는 도중 프로젝트 설계 과정에서 의외의 문제가 발생했었다. 기존에 만들었던 웹 프로젝트대로 Controller & Service & Domain & Repository 패키지를 생성해서 만들었지만 프로젝트를 설계하는 데에 있어서 분명히 설계 기준이 있을 거라는 생각이 들었다. 아니나 다를까 DDD이든 Layered 이든 여러 가지 프로젝트 아키텍처가 존재하는 것을 알게 되었고, 이번 기회에 상세히 정리해서 프로젝트에 구체적으로 적용시켜볼 생각이다. 소프트웨어 아키텍처(Software Architecture) 란? -> 말 그대로 구조이다. -> 여러 가지 소프트웨어 구성 요소가 가진 특성 중 외부에 드러나는 특성, 구성 요소 간의 관계를 표현하는 시스템 구조나.. 2022. 5. 3.
PR을 작성하는 좋은 방법 스프링에 대한 심도 있는 공부를 하던 도중 스프링 부트를 이용해서 개인적으로 프로젝트를 진행하면 좋을 것 같다는 생각에 Git을 이용하여 진행하는 중이다. 우연찮게 좋은 기회를 얻어 코드 리뷰를 받게 되었는데 리뷰를 해주시는 분이 보시기에 좋은 PR을 작성해야 할 것 같아 따로 공부를 하게 되었다. PR이란 무엇인가 내가 작업한 코드가 있으니 동료들에게 내 브랜치를 merge 전 검토 후 병합 요청을 받는 과정이다. PR을 왜 해야 하는가? 협업을 하는 경우 내가 작성한 코드가 전체적인 프로젝트에 영향을 미칠 수 있기 때문에 master 브랜치로 merge 전 다 같이 리뷰를 하며 검증하는 구간이다. 전체적인 프로그램의 오류를 미리 방지할 수 있다. => 잘못된 부분이 있을 경우 PR commit을 되돌.. 2022. 5. 3.
Clean Commit Message 를 작성해야 하는 이유 Git 을 이용해 프로젝트를 진행할 때는 항상 commit message를 적기 마련이다. 특히 협업에서는 메시지의 규칙과 구체화가 가히 그 역할이 필수적이라고 생각한다. 나 조차도 커밋 규칙을 모르고 내 입맛에 맞게 작성했던 경험이 많다. 이번 프로젝트를 진행하며 clean commit message 전략을 공부하며 적용시킬 계획이다. Commit이란? - 의미 있는 변화에 대해 기록하는 것이 바로 commit! - 특정 시점에 변화에 대한 사항을 메시지와 함께 기록하는 포인트 특정 시점이란? - 작은 변화, 큰 변화인지 경계가 모호함 - 커밋 메시지가 간단할 수록 기능을 세세하게 나눈 것이기 때문에 리뷰도 쉽고 다른 사람이 쉽게 이해가 가능하다고 생각하기 때문에 작은 커밋이 좋다고 생각한다. Clea.. 2022. 5. 3.
Git Flow 란 무엇일까? Git을 이용하여 스프링 프로젝트를 하던 도중 git에 대한 심층적인 공부를 해야겠다는 생각이 문득 들었다. 협업을 하기 위해 많은 브랜치와 git flow가 있다고는 대충 들었지만 완벽하고 이해하고 이용하는 것과는 천차만별이라서 git flow를 공부하여 프로젝트에 적용시킬 계획이다. 기본 브랜치 feature -> develop -> release -> hotfix -> master -> 머지 순서는 앞에서 뒤로 진행 -> release와 hotfix 브랜치의 경우 develop 오른쪽에 위치하므로 develop도 머지 가능 => 중심이 되는 브랜치는 master & develop! => merge된 다른 브랜치는 삭제! Feature 브랜치 새로운 기능을 추가하는 브랜치 나오는 곳 (Check ou.. 2022. 5. 3.
2022.05.02 「자기소개서, 프로젝트 수정」 ▶ 파트 1 (10시 ~ 2시) 1. 빠르게 product_list 페이지들 만들기 ▶ 파트 1 (3시 ~ 12시) 1. 자기소개서 수정 2. mysql 정리 2022. 5. 2.
2022.05.01 「View 만들기, Insert, Select 작업」 ▶ 주간 정리 1. 항상 구상했던 계획보다 늦어진다는 점 (주관적인 평가로 성과가 기대보다 떨어진다)? > 욕심이 많은 건가 생각이 든다. > 다른 생각을 하지 말고 집중할 수 있을 때 더 해보는 것으로! 2. mysql을 공부하며 어려웠던 점 > 책만 보는 것이 아닌 예제를 검색해보거나 직접 쿼리를 작성하면서 함 > 읽는 거보다 확실히 경험하는 게 머리에 잘 남는다. 3. 쉬고 싶은 욕구 > 솔직히 7일 내내 하루종일 실내에 박혀 모니터만 바라보고 있는 것이란 쉽지 않다.. (핑계다) > 적절한 때에 좀 쉬는 것으로 (잠 더 자기, 2시간 정도 친구와 밥 약속이라던지 등) 4. 프론트 관련 > 난 정말 front와 안 맞는다고 생각한다. 태그들을 보기만 해도 울렁거린다. > 그래도 해야 하니 이번 프로.. 2022. 5. 1.
2022.04.30 「logback, lombok, mysql」 ▶ 파트 1 (12시 ~ 2시 반?) 1. 페이징 로직 2. 더미 이미지 구하기 3. mysql 시퀀스 관련 찾기 4. logback (jdbc도) 설정 ▶ 파트 2 (3시 반 ~ 12시) 1. 알고리즘 1문제 두 개 뽑아서 더하기 2. 추후 계획 수립 예정 ▶ Logback 설정 - Spring boot에서는 log4j 말고 logback을 사용한다. - spring boot web starter 의존성에 자동으로 logback이 추가되어 있다. - 기본 설정을 하려면 gradle이나 xml로 설정 가능하다. - log 파일들을 저장하려면 설정 xml파일에 경로 지정 - properties 파일에 xml 경로 지정 - jdbc log를 남기고 싶다면 추가로 설정 - spring에서와 마찬가지로 spy를.. 2022. 4. 30.
2022.04.29 「부트스트랩 관련」 ▶파트 1 (10시 ~ 2시) 1. mysql Ch.10 실행 계획 (2. 부트스트랩 관련 문의) => 되면 3. 프로젝트 html 정리 ▶파트 2 (3시 ~ 6시) 1. 부트스트랩 폴더 추가(느려지니 나중에 하자) 2. 자소서 수정 3. Controller 정의 ▶프로젝트 관련 1. 페이징 처리 시 DB 요청 => mysql 이므로 oracle의 rownum을 사용하지 못 한다. 하지만 비슷하게 따라할 수는 있다. 그래도 mysql을 배웠기 때문에 차별화된 방식을 사용할 것. => 방식은 여러 가지이지만 limit 함수를 사용한다. (검색 속도가 빠름) 2022. 4. 29.
2022.04.28 「Thymeleaf 설정」 ▶ 파트 1 (10시30분 ~ 5시30분) 1. 로지텍 마우스 구매 2. 알고리즘 정렬 Level2 3. mysql CH.9 4. 위키 수정 5. 스프링부트 프로젝트 진행 ▶ 파트 2 (9시30분 ~ 12시) 1. 스프링부트 프로젝트 진행 => 알바 갔다 와서 경로 좀 손 보고 html도 좀 넣고 하자 ▶ 문제 1. view 디자인 문제 문제점: Thymeleaf 엔진을 사용하는데 여기는 jsp에서 사용하는 tiles를 사용하지 못한다. 해결 : - Thymeleaf가 제공하는 layout 라이브러리를 사용해서 적용 가능하다. - Thymeleaf 관련 resolver properties 파일 정의함 2. resources 폴더 아키텍쳐 관련 문제점 : 스프링부트에서 view 관련 아키텍쳐 설계가 처음이.. 2022. 4. 28.
04.27 개인 프로젝트 시작 [닭가슴살 구매 사이트] [DB 구상] Spring boot를 이용하여 개인 프로젝트를 진행하기로 했다. 기존 진행했던 프로젝트 : https://sweeeetgoguma.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EB%84%90-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%8A%B8%EB%A0%88%EC%9D%B4%EB%84%88-%EB%A7%A4%EC%B9%AD-%EC%82%AC%EC%9D%B4%ED%8A%B8 [회고] 파이널 프로젝트 (트레이너 중계 플랫폼) ▶ 파이널 프로젝트 끝! (2022.3.23 ~ 2022.4.13) 드디어 파이널 프로젝트가 끝이 났다! 회의 시작일이 벌써 엊그제 같은데.. 눈 내리는 첫 회의일에 시작을 해서 끝나고 보니 벚꽃이 떨어질 때이다. 중 sweeeet.. 2022. 4. 27.
2022.04.27의 기록 ▶ 파트 1 (9시반 ~ 11시반) 1. 알고리즘 1문제 풀기 (배열, 스택, 큐를 이용해서 풀음) 2. 시간되면 DB 9.2.3 정리 ▶ 파트 2 (4시 ~ 12시) 1. 프로젝트 패키지 구성 고민 좀 해보자 2. DB 설계 (순차적으로 그리고 회고 작성) 3. mysql CH.9 4. 자기소개서 수정 2022. 4. 26.
2022.04.26의 기록 ▶ 파트 1 (10시 ~ 11시 10분) 1. 테스트 코드 최종 수정 2. 추후 계획 정리 3. 보건증 발급 및 알바 준비 ▶ 파트 2 (3시 ~ 12시) 1. 스프링 부트 프로젝트 생성 후 깃 연동 (이건 이제 안 까먹겠다..) 2. 자기소개서 수정 3. mysql 질문 정리 및 CH 8, 9(9.2.3 전까지) 정리 4. 알고리즘 고득점 키트 - 해시 5. mysql workbench 설치 ▶ 최근 이슈 1. 시간 부족 => 학원 수료해서 시간이 많이 날줄 알았는데 생각보다 적은 것 같다.. > 원인 : 운동 갔다 오는 시간, 알바 시간 > 해결 : 1시간만 더 일찍 일어나 보자, 운동은 짧고 굵게. 2. 테스트 코드 => 자바 프로젝트 후 테스트 코드를 작성하며 TDD 방식을 조금이나마 깨닫게 되었.. 2022. 4. 26.
2022.04.25의 기록 ▶ 파트 1 (2시 ~ 12시) 1. 테스트 코드 수정 2. 노션 자기소개서 정리 -> 디테일한 부분 추가해보자 3. Spring 개념 정리 4. mysql 옵티마이저와 힌트 5. wiki 수정 6. 개념, 자소서, 프로젝트 계획 검수 7. 알고리즘 1문제 ▷ 테스트 코드 문제 : 하나의 값만 임의로 비교하는 것도 좋을 것 같지만 3가지 경우를 모두 테스트하면 좋겠다 해결 : Static 메서드를 하나 선언하여 입력 정수 값과 기대 값을 비교하는 테스트로 수정하였다. 2022. 4. 25.
2022.04.24의 기록 ▶ 해야할 일 1. Gradle test code 수정 2. mysql CH7. 데이터 암호화 정리, CH8. 인덱스 중간 3. Boot 프로젝트 구상 (점심 먹고 쏟아붇자) https://github.com/GroovyArea/Shop-with-SpringBoot/wiki 4. 알고리즘 1문제 ▷ 테스트 코드 문제 1 : gameCount()를 호출 할 때마다 예외가 발생됨 해결 : 제어문을 통해 해결 문제 2 : @ParameterizedTest 진행 시 파라미터를 메서드의 매개변수로 집어넣어주지 않아 테스트 코드 문제 발생 2022. 4. 24.
2022.04.23 의 기록 ▶ 계획 1. Gradle test 코드 수정 2. 스프링 PSA 추상화 정리 ▷ test code 문제 : 게임 카운트 증가 테스트 시 계속 테스트 실패 원인 : 디버깅 해봤더니 계속 default 걸려서 보니까 switch문 break 추가 안함.. > 카운트 값 자체를 비교하는게 아니라 증가 여부만 판단했다. ▷ 스프링 PSA 추상화 > 스프링 내부 구현 클래스들이 추상화 되어 있는 이유? > PSA와 연관이 있다. > 서비스를 추상화함으로써 개발자가 실제 구현부를 알지 못하더라도 해당 기능을 사용할 수 있게된다. 즉, 추상화 계층인 인터페이스 API 의 정보를 활용해 해당 서비스의 모든 기능을 이용하면 되는 것이다. > 추상화 계층을 사용해 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공하는 .. 2022. 4. 23.
반응형