분류 전체보기
-
2023년 5월 1주차 주간회고주간 회고 2023. 5. 10. 18:20
과제 테스트 끝.어제 부로 과제가 끝났다. 정규 기간은 1주일이었지만, 더 잘 해보고 싶다는 생각에 6일 연장을 요청드렸고, 요청을 받아주셔서 거의 2주 동안 과제를 진행했다. 제출하고 나서는 무슨 수능이라도 끝낸 것마냥 공허함이 몰려왔고, 밤동네를 몇 시간이고 걸어다녔던 것 같다. 원래 같았으면 다른 프로젝트를 진행하면서 적용을 시도했을 것들을 이번 과제를 진행하면서 적용해보게 되었다. 그 과정에서 적용했으나 정리하지 못했던 몇 가지 개념들의 사용 후기와, 과제를 하면서 아쉬웠던 점들을 정리해보고자 한다. 빌더 패턴 예전에 개인 프로젝트를 진행할 때 저렇게 쓰면 안 된다고 혼났었던 잘못된 fake 메서드, 아니 정적 팩터리 메서드 사용 예시. 지금 보니까 이제는 정말로 저 Long 타입의 인자들이 각각..
-
Flyway를 이용해 데이터베이스 테이블 변경 사항 관리하기Today I Learned 2023. 5. 5. 22:04
이전에 프로젝트를 진행하는 과정에서 쉽지 않았던 것들 중 하나로 Entity를 변경한 후 서버를 실행시켰을 때 데이터베이스에 해당 Entity의 변동사항들을 일일이 적용시켜줘야 했었던 것이 있었다. 예를 들어 다음과 같은 Entity가 있다고 치면, @Entity public class Semester { @Id @GeneratedValue private Long id; private String name; private Boolean finalized; // constructors // ... } H2 로컬에는 이런 식으로 테이블이 생성되었다. 구현을 진행하는 과정에서 Entity의 이름을 변경하거나, column 이름을 변경하면 당연히 생성되어 있는 테이블에 변경사항이 자동적으로 반영되겠거니 생각했었..
-
JPA에서 QueryDSL을 사용해 Join이 필요한 쿼리 수행하기Today I Learned 2023. 5. 4. 02:11
JPA를 이용해 두 개 이상의 테이블을 Join한 뒤, 조건에 맞는 Column을 쿼리하려면 쿼리 메서드를 어떻게 작성해야 할까? 이전에 개인 프로젝트를 진행할 때 모든 채팅 메시지 Entity 중 특정 채팅방의 입, 퇴장 메시지만을 선별해 쿼리해야 하는 상황이 있었는데, 그때는 어떻게든 조건을 만족시키는 쿼리 메서드 네이밍을 하거나, JPQL 문법에 맞는 쿼리문을 작성해 직접 쿼리를 정의하는 방법을 사용했었다. 어떻게든 만들어낸 쿼리 메서드를 살펴보자. List findAllByRoomIdAndTypeOrRoomIdAndType(Long roomId, ChattingMessageType enter, Long sameRoomId, ChattingMessageType quit); 한 눈에 봐도 명칭이 너무..
-
2023년 4월 4주차 주간회고주간 회고 2023. 5. 1. 00:49
가시적인 성과와 구체적인 보완점을 느꼈던 4월 4주가 마무리되었다. 새로운 과제 테스트를 시작했다. 지난 주말, 1분기를 돌아보면서 나는 아직 한 귀퉁이가 채워지지 않았다고 판단했고, 부족한 한 귀퉁이를 마저 채우기 위해 1-3주 가량 새로운 프로젝트를 하면서 그 부분들을 집중적으로 보완해야겠다고 생각하고 있었다. 당시 기존에 지원해뒀던 기업들에서 특별한 일이 일어나지 않는 한 새로운 프로젝트를 하는 동안은 취업활동을 잠시 중단할 계획이었다. 생각보다 장기전으로 갈 수도 있겠다 싶었기에, 지금처럼 애매한 상태에서 계속 헛다리를 짚으면서 셀프로 자신감을 떨어뜨리기보다는 애매하게 알고 있던 것들을 하나씩 확실하게 짚고 가면서 자신감을 다시 찾을 계획이었다. 특별한 일이 일어난다는 건 사실상 기적과 같다고 생..
-
내일회카테고리 없음 2023. 4. 23. 18:18
한동안 미뤄오고 있었던 새로운 프로젝트를 본격적으로 시작해보고자 한다. 회 등 수산물과 관련된 상품을 취급하는 이커머스 애플리케이션을 클론 코딩하는 프로젝트이다. 새로운 프로젝트의 목적클론 코딩 프로젝트를 하나 더 진행하는 목적은 다음과 같다. 1. 명확한 요구사항과 사용자 스토리를 바탕으로 설계와 구현을 진행하는 경험SMASH 프로젝트를 진행하면서 많이 고민했지만 대외적으로 드러내기 쉽지 않았던 고민이 있었다. 내가 선정했던 도메인에 대해 완전히 이해하지 못한 채로 구현을 진행하고 있는 것 같다는 느낌이었다. 운동 인원 모집이라는 도메인을 '평소에 실제로 자주' 사용해본 적이 없다보니, 사용자 스토리를 구상하는 과정에서부터 쉽지가 않았다. 어떻게든 구상했던 사용자 스토리와 기능을 구현하는 과정에서는 구..
-
2023년 1분기 회고주간 회고 2023. 4. 22. 04:04
2023년의 3분의 1이 넘어가려고 하는 시점이다. 개발자의 길로 들어선 뒤 본격적으로 현실과 맞닥뜨리고 있다. 선택의 갈림길을 만나 선택을 했고, 그에 따른 수많은 결과들을 마주하고 있다. 이제는 지금까지의 결과들을 한 번 본격적으로 돌아보고, 이번 분기에는 구체적으로 어떤 방향성을 세워야 할 것일지 정립할 때가 된 것 같다. 1-2월 메가테라 성수코딩도장에서 지난 8개월 간 고생하면서 배운 것들을 바탕으로 이력서를 작성했다. 나는 다른 동료들보다 첫 이력서 작성이 2주 정도 늦었는데, 포트폴리오의 내용이 다 안 채워져서 내용을 더 채워야 할 것만 같은 찜찜함에 기인했다. '그래도 지금까지 정말 많은 것들을 해 왔으니, 일단 시장의 평가를 받으면서 무엇을 보완해야 할지 구체적으로 알아가자'는 트레이너님..
-
컨테이너, Docker 기초 학습학습 관련 기록 2023. 4. 3. 02:09
컨테이너란? Container는 애플리케이션이 특정 컴퓨팅 환경이 아닌 다른 컴퓨팅 환경에서도 빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성들을 패키징하는 소프트웨어의 표준 단위를 의미한다. 컨테이너와 가상 머신의 비교 컨테이너는 가상 머신과 비교될 수 있다. 두 기술은 리소스의 격리나 할당에 있어 비슷한 이점을 갖지만, 작동 방식에서 차이를 보인다. 컨테이너 컨테이너는 코드와 종속성들이 한 번에 패키징된 애플리케이션 계층이 추상화된 형태로, 다음과 같은 특징을 갖는다. - 애플리케이션의 실행에 필요한 라이브러리, 바이너리, 기타 구성 파일 등을 패키징한다. - 여러 개의 컨테이너가 동일한 머신에서 실행될 수 있다. - 격리된 프로세스로 실행되는 다른 컨테이너와 OS 커널을 공유할 수 있다. -..
-
Java에서 객체의 equals를 오버라이딩할 때 hashCode를 같이 오버라이딩하는 이유 (프로그래머스 삼총사 풀이)Today I Learned 2023. 3. 8. 00:16
프로그래머스 코딩테스트 연습문제 '삼총사'를 풀이하면서 Java 객체의 equals와 hashCode 메서드를 오버라이딩해야 하는 이슈가 있었고, 그 과정을 통해 알게 된 equals를 오버라이딩할 때 일반적으로 hashCode를 같이 오버라이딩하는 이유를 정리했다. 다음의 링크들에서 문제와 문제풀이를 위해 고려한 접근법을 확인할 수 있다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr GitHub - hsjkdss228/daily-coding-dojo: 주간 코딩 도장 문제 풀이 저장소 주간 코딩 도장 문제 풀이 저장소. Contribute to hsj..