전체 글 446

[1장] 디자인 패턴과 프로그래밍 패러다임(1.1.1-1.1.5)

프레임워크와 라이브러리프레임워크와 라이브러리는 '공통으로 사용될 수 있는 특정 기능들을 모듈화한 것'이라는 점에서 같습니다.프레임워크는 사용자의 입장에서 지켜야할 것들이 많고 자유도가 다소 떨어지지만 일관된 아키텍처와 개발 속도의 향상을 얻을 수 있습니다.라이브러리의 경우는 사용자의 필요에 따라 자유롭게 호출할 수 있지만 여러 개의 라이브러리를 사용하는 경우 관리에 어려움을 겪을 수 있습니다. 공통규칙사용 방식프레임워크공통으로 사용될 수 있는 특정 기능들을 모듈화특정 아키텍처(폴더명, 파일명) 등에 대한 규칙 존재프레임워크가 애플리케이션을 호출, 제어의 역전(IoC) 원칙 적용라이브러리특정 아키텍처(폴더명, 파일명) 등에 대한 규칙 부재애플리케이션이 라이브러리를 호출1.1 디자인 패턴디자인 패턴이란 프로..

[Java] 프로그래머스(Lv.2) - 두 큐 합 같게 만들기

문제 설명 - 문제가 너무 길어서 링크를 달아 놓겠습니다. (https://school.programmers.co.kr/learn/courses/30/lessons/118667) 제한 조건1 ≤ queue1의 길이 = queue2의 길이 ≤ 300,0001 ≤ queue1의 원소, queue2의 원소 ≤ 10^9주의: 언어에 따라 합 계산 과정 중 산술 오버플로우 발생 가능성이 있으므로 long type 고려가 필요합니다.입출력 예 queue1queue2result[3, 2, 7, 2][4, 6, 5, 1]2[1, 2, 1, 2][1, 10, 1, 2]7[1, 1][1, 5]-1 import java.util.*; class Solution { public int solution(int[] queue1,..

[JPA] 순환 참조 문제 해결하기

JPA에서의 순환 참조 이해와 해결 방법 1. JPA 순환 참조 공모전에서 관심 멘토를 추가하는 API를 만들던 중에 순환 참조 문제를 만났습니다. stackoverflow: null이라는 메시지가 떴는데 왠지 모르게 친숙했습니다. 하지만 친숙한 느낌과는 다르게 이전 프로젝트에서는 겪은 적이 없었던 문제라 해결하는 데에 많이 애먹었습니다. 왜 이전 프로젝트에서 겪은 적이 없었는지는 나중에 알게됩니다. ㅎㅎ; JPA란? Java Persistence API(JPA)는 Java ORM 기술인 Hibernate를 기반으로 만든 API로, 객체 지향적인 프로그래밍을 지원하고, SQL과 JDBC를 사용하는 데 필요한 공통적인 코드를 줄여줍니다. 하지만 JPA를 사용하다보면 종종 순환 참조(Circular Refe..

Spring/JPA 2023.07.24

TIL_20230715

📝 하루 요약 S3 bucket과의 밀당에서 승리했습니다. ✅ 오늘 할 일 공모전 - 프로필 이미지 등록 기능 구현 운동하기 - 웨이트 트레이닝 🧐 오늘 배운 것 공모전 - 프로필 이미지 등록 기능 구현 S3 설정에서 문제가 좀 생겼습니다. 저장 경로에 관련된 코드가 없다보니 S3에 저장되지 않는 이슈였습니다. 버킷을 두 개 사용하다보니 경로 설정을 똑바로 했어야 했는데, 해당 부분을 제대로 처리하지 못해서 생긴 이슈입니다. 제가 참고했던 레퍼런스들은 경로에 관한 언급은 없습니다. 버킷이 한 개인 경우에만 처리할 수 있는 코드였기 때문인데요. 그래서 해당 부분을 고려해서 코드를 수정해주었습니다. 보통은 bucket이 하나이기 때문에 bucket을 하나만 선언합니다. 하지만 저희 앱의 경우 bucket이 ..

TIL 2023.07.15

TIL_20230714

📝 하루 요약 개발 일정으로 인해 당분간 프로그래머스와 시간을 갖기로 했습니다. ✅ 오늘 할 일 프로그래머스 문제 풀기 공모전 - 프로필 이미지 등록 기능 구현 🧐 오늘 배운 것 공모전 - 프로필 이미지 등록 기능 구현 저희 앱은 회원가입 이후 프로필을 추가로 작성해야 합니다. 회원가입 시에는 유저들의 이탈을 줄이기 위해 간단하고, 식별을 위해 필요한 최소한의 정보만을 받습니다. 프로필 이미지는 회원가입 이후의 프로필 작성, 프로필 작성 이후 수정 시에 사용하는 데이터입니다. 이 데이터는 Optional 한 데이터이기 때문에 없는 경우에는 null로 남겨둡니다. 프로필 이미지의 경우 사이즈가 정해져 있는데, 해당 이미지의 사이즈가 과도하게 큰 경우가 있습니다. 해당 경우도 고려해야 합니다. 그 이유는 다..

TIL 2023.07.14

TIL_20230713

📝 하루 요약 운동 후 버거킹을 흡입 한 뒤(또?) 프로필 이미지 기능 구현을 위한 설정도 하고, 알고리즘 문제도 풀었습니다! ✅ 오늘 할 일 프로그래머스 문제 풀기 공모전 - 프로필 이미지 등록 기능 구현 운동하기 - 웨이트 트레이닝 🧐 오늘 배운 것 프로그래머스 문제 풀기 코드는 github repository에 있습니다. (https://github.com/chaning49/Algorithm) Lv 2. 괄호 회전하기 공모전 - 프로필 이미지 등록 기능 구현 프로필 이미지를 등록하는 기능을 구현하기로 했습니다. S3 설정 프로필 이미지는 모든 이용자가 볼 수 있어야 하므로 저장소에서 이미지를 가져올 때, 접근에 제한이 없어야 합니다. 그래서 S3 저장소를 생성할 때 모든 사용자가 이미지 링크에 접속..

TIL 2023.07.13

TIL_20230712

📝 하루 요약 운동하고 버거킹에서 햄버거를 해치운 뒤, 필터링 기능을 수정하고! 프로그래머스 문제를 풀었습니다. ✅ 오늘 할 일 프로그래머스 문제 풀기 공모전 - QueryDSL 및 JPQLQuery를 사용한 멘토 필터링 기능 구현 운동하기 - 웨이트 트레이닝 🧐 오늘 배운 것 프로그래머스 문제 풀기 코드는 github repository에 있습니다. (https://github.com/chaning49/Algorithm) Lv 1. 추억 점수 Lv 1. [1차] 다트 게임 공모전 - QueryDSL 및 JPQLQuery를 사용한 멘토 필터링 기능 구현 QueryDSL을 설정만 하는데 오-랜 시간을 소요했습니다. ㅎㅎ... 한번 보실래요? Gradle 환경 기준 - build.gradle plugins ..

TIL 2023.07.12

TIL_20230711

📝 하루 요약 프로그래머스 문제를 시원하게 제치고 공모전 회의 전에 멘토 필터링 기능을 만들었습니다. ✅ 오늘 할 일 프로그래머스 문제 풀기 공모전 회의 공모전 - Specification을 사용한 멘토 필터링 기능 구현 🧐 오늘 배운 것 프로그래머스 문제 풀기 회의와 기능 구현때문에 미뤘습니다. ㅠㅠ 공모전 회의 기능 관련 수정사항이 많아지면서 다른 기능을 개발하지 못하는 점을 고려하여 기간을 더 쪼개기로 했습니다. 지원서에 들어가야 할 필수 기능을 우선적으로 개발하고, 1차 발표(2023-08-04) 이후에 일정을 다시 조정하기로 했습니다. 메인 페이지 추천 멘토 멘토 리스트 멘토 프로필 페이지 공모전 - Specification을 사용한 멘토 필터링 기능 구현 우선 JPA Criteria API를 ..

TIL 2023.07.11

TIL_20230710

📝 하루 요약 공모전 프로젝트의 package 구조가 거슬려서 domain 별로 나눠주고, 숫자 짝꿍을 찾아냈습니다! ✅ 오늘 할 일 프로그래머스 문제 풀기 공모전 - package 구조 변경하기 운동하기 - 웨이트 트레이닝 🧐 오늘 배운 것 프로그래머스 문제 풀기 코드는 github repository에 있습니다. (https://github.com/chaning49/Algorithm) Lv 1. 숫자 짝궁 공모전 - package 구조 변경하기 기존 구조 - Member 도메인 내에 Profile과 Mentor가 함께 위치해 있습니다. /member/controller/MemberController /member/controller/ProfileController /member/controller/M..

TIL 2023.07.10

TIL_20230709

📝 하루 요약 프로그래머스에서 Lv 1. 문제가 몇 개 남지 않아서 빠르게 풀고, 회의를 준비하던 중 11일로 연기됨! (내심 기뻤음) ✅ 오늘 할 일 프로그래머스 문제 풀기 공모전 회의 → 7월 11일로 연기 🧐 오늘 배운 것 프로그래머스 문제 풀기 코드는 github repository에 있습니다. (https://github.com/chaning49/Algorithm) Lv 1. 평균 구하기 Lv 1. 약수의 합 Lv 1. 짝수와 홀수 Lv 1. 로또의 최고 순위와 최저 순위 공모전 회의 7월 11일로 연기되었습니다. 제출이 12일 정도 남아서 필수적으로 만들어야 하는 내용을 정리해야겠습니다. 💡 느낀점 개발을 하면서 어떤 구조가 객체지향적인지에 대해 고민을 하다보니 정작 코드를 작성하는 시간이 ..

TIL 2023.07.09