일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 해외 대외활동
- React Native
- 이영직
- 노마드코더
- 비트마스킹
- react
- service 테스트
- 경우의 수
- 자료구조
- 창의충전소
- 구현
- 상속 관계 매핑
- 완전탐색
- web view
- 원복
- 백준 1992
- ReactNative
- React Natvive
- Project Bee
- springboot
- FlatList
- BFS
- 폴더구조
- multipart upload
- 휴대폰 기기
- Navigation
- 버튼 활성화
- bfs dfs
- 티스토리챌린지
- 오블완
- Today
- Total
유미의 기록들
💡 배경인프런과 같이 튜터가 강의를 등록하고 유저가 결제를 통해 강의를 조회할 수 있는 서비스를 담당했다. 대용량 영상 파일을 AWS S3에 업로드 하기 위해, 초기에는 MultipartFile업로드 방식을 사용했으나, 150MB이상 파일을 업로드할 때, 속도가 느려지는 문제가 발생했다. 성능 개선을 하고자 구글링 하던 중, 파일을 여러 부분으로 나눠 병렬로 업로드하는 AWS S3 MultipartUpload 방식이 있다는 것을 알게 되어 이를 도입하고자 하였다 📝 S3에 파일 업로드 하는 방식S3에 파일을 업로드 하는 방법에는 3가지가 있다1. Stream 업로드HttpServletRequest의 `InputStream`을 이용해서 AWS S3에 바로 파일을 전송하는 방식파일의 바이너리 전체를 ..
💡 배경public Party(String title, String contents, PartyStatus status, Category category, User user) { this.title = title; this.contents = contents; this.status = status; this.category = category; this.user = user;}Party newParty=new Party(title,contents,status,category,user); 코드 리팩토링을 진행하면서 지금까지 객체를 인스턴스화 할 때 직접적으로 생성자를 호출하여 생성하였는데, 개발자가 구성한 별도의 `static` 메소드 를 통해 간접적으로 객체 생성을 유도하는 ..
💡 배경최종 프로젝트를 하면서 스터디 파티 모집 게시글, 개발 커뮤니티 게시글, 프로젝트 게시글에 공통적으로 이미지 첨부 파일을 추가해야 하는 요구사항이 있었습니다. 초기에는 하나의 이미지 첨부 파일 테이블에 모든 데이터를 넣는 단일 테이블 전략으로 설계했습니다. 하지만 테이블의 크기가 커지게 되고, NULL값을 가지는 속성이 많아지는 단점이 있었습니다. 따라서 다른 테이블 전략이 없는 지 찾아보았습니다 📝 상속 관계 매핑관계형 데이터베이스에는 객체에서의 상속 관계가 없고, 객체의 상속과 유사한 슈퍼타입 / 서브타입 관계를 매핑하는 상속 관계 매핑이 존재한다슈퍼타입과 서브타입의 논리모델을 실제 물리 모델로 구현하는 방법은 3가지가 있다. 각 구현 방법의 장단점을 비교해 보려고 한다. 1. 단일..
레거시 코드(Legacy Code)란?나를 포함한 모든 개발자가 기존에 개발했던 코드 잘 작동되는 코드여도 오래된 기술을 사용할 수 있고, 현재는 사용되지 않는 코드들도 있다. 결합도가 높거나, 테스트 코드가 없거나 가독성이 떨어지는 등의 특징들을 가지고 있다 💡 목표- 레거시 코드의 리팩토링을 통해 코드의 가독성과 유지보수성을 높이고 개발 생산성을 향상시킬 수 있다- 복잡한 구조를 단순화하고, 최신 기술과 패턴을 적용함으로써 확장성과 유연성을 확보할 수 있다- 성능을 개선하고, 보안성을 강화할 수 있으며, 변경에 대한 리스크를 줄여 안정적인 서비스 운영에 기여할 수 있다 📄 리팩토링한 내용 🚀 트러블 슈팅코드 추가 - 4. QueryDSL 을 사용하여 검색 기능 추가[검색 조건]- 검색 키워드..
JPA를 활용하여 회원 CRUD API 구현하기- 유저 저장, 단건 조회, 전체 조회, 삭제 기능- 유저는 유저명, 이메일, 작성일, 수정일 필드를 가지고 있음 📝 개발 과정1. schedules 데이터 베이스 생성create database schedules;use schedules;2. JPA 환경 설정하기 build.gradle파일의 dependencies에 JPA 라이브러리를 설치한다// MySQLimplementation 'mysql:mysql-connector-java:8.0.28'//JPA, 스프링 데이터 JPA 추가implementation 'org.springframework.boot:spring-boot-starter-data-jpa'3. 연결 정보 설정application.pro..
💡JPA를 활용하여 CRUD를 구현하고, 이를 통해 객체 지향적으로 데이터를 다룰 수 있다💡JPA를 활용하여 데이터베이스를 관리하고 영속성에 대해서 이해할 수 있다💡회원가입, 로그인을 통해 인증/인가를 이해하고 JWT를 활용할 수 있다💡RestTemplate을 통해 외부 정보를 호출하고 활용할 수 있다 📌 요구사항 분석일정 도메인 모델작성 유저명할일 제목할일 내용작성일수정일일정 관리 기능일정 저장단건 조회담당 유저들의 고유 식별자, 유저명, 이메일이 추가로 포함일정 수정일정 페이징 조회페이지 번호와 페이지 크기를 쿼리 파라미터로 전달하여 요청할일 제목, 할일 내용, 댓글 개수, 일정 작성일, 일정 수정일, 일정 작성 유저명 조회페이지크기는 10을 디폴트로 적용일정 수정일 기준으로 내림차순 정렬일..
💡구현하고자 하는 서비스의 전체적인 흐름을 파악하고 필요한 기능을 설계할 수 있다💡API명세서, ERD, SQL 작성 할 수 있다💡Spring Boot를 기반으로 CRUD 기능이 포함된 REST API 만들 수 있다 📌 요구사항 분석일정 도메인 모델일정 ID담당자명비밀번호할 일작성/ 수정일일정 관리 기능일정 등록선택한 일정 조회일정 목록 조회일정 수정 일정 삭제*일정 수정, 삭제는 선택한 일정의 비밀번호가 일치할 경우에만 가능*CRUD 필수 기능은 데이터베이스 연결 및 JDBC 사용해야 함*일정 작성, 수정, 조회 시 반환 받은 일정 정보에 비밀번호는 제외함 💻 개발 과정스프링 부트 스타터 사이트에서 스프링 프로젝트 생성프로젝트 선택Project : Gradle - GroovyLanguage ..
📌 요구사항📄 기능 명세서- 수강생 관리1) 수강생 정보 등록 (고유번호, 이름, 과목 목록)2) 수강생 목록 조회 (고유번호, 이름) *수강생의 고유번호는 중복 될 수 없다 - 점수 관리1) 수강생 과목별 시험 회차 및 점수 등록2) 수강생 과목별 회차 점수 수정3) 수강생 특정 과목 회차별 등급 조회 *과목의 회차 점수가 중복되어 등록될 수 없다 *회차범위는 1~10 / 점수범위는 0~100 과목에서 필수과목과 선택과목으로 이루어진다 점수에 따라 등급이 매겨진다 👤 역할 분담A - 수강생 정보 등록 (고유번호, 이름, 과목 목록)B - 수강생 목록 조회 (고유번호, 이름)C - 수강생 과목별 시험 회차 및 점수 등록D - 수강생 과목별 회차 점수 수정E - 수강생 특정 과목 ..
📌요구사항1. Enum 타입을 활용하여 +,-,*,/,%의 연산자 타입에 대한 정보를 관리하도록 구현 - Enum2. 양의 정수 뿐만 아니라 실수 타입의 값을 전달 받았을 경우에도 연산이 수행되도록 구현 -제네릭3. Scanner로 입력 받은 값보다 큰 결과값들을 출력 - Lamda & Stream 📝궁금한점Enum타입 요소, 멤버라 불리는 명명된 값의 집합을 이루는 자료형, 즉 상수 데이터들의 집합프로그래밍을 하다보면 배열과 리스트처럼 여러개의 묶음 데이터를 다루는 일이 많다. 이런 데이터 중에는 '요일', '계절'과 같은 제한된 값만 가지는 경우가 존재한다ex) 요일 - 월,화,수,목,금 / 계절 - 봄, 여름, 가을, 겨울이런 데이터 묶음을 Enum타입으로 묶어주면 구조적인 프로그래밍이 ..
📌 요구사항1. Calculator클래스 생성 - 양의 정수 2개와 연산 기호를 매개변수로 받아 사칙연산 기능을 수행한 후 결과 값을 반환하는 메서드 - 연산 결과를 저장하는 컬렉션 타입 필드 - 나눗셈에서 분모에 0이 들어오거나 연산자 기호가 잘못 들어온 경우 예외처리2. main메서드에서 Calculator 클래스의 컬렉션 필드에 직접 접근하지 못하도록 수정 (캡슐화) - Getter메서드, Setter메서드 구현3. 가장 먼저 저장된 데이터를 삭제하는 기능을 가진 메서드 구현 -removeResults()4. 저장된 연산 결과들을 조회하는 기능을 가진 메서드 구현 - inquiryResults()5. Calculator 인스턴스 생성할 때 생성자를 통해 컬렉션 필드가 초기화..