블로그
전체 92024. 03. 10.
0
[인프런 워밍업 클럽_0기 BE] 마지막 발자국 남기기
🌱3주차 회고🌱 키워드 깃,깃허브배포(AWS)Spring Boot 칭찬하고 싶은 점 :모든 강의를 학습하고, 미니프로젝트를 1단계까지 마무리를 지을 수 있어서 다행이였다고 생각합니다. 아쉬운 점 :아직 미니프로젝트의 2,3,4 단계를 수행하기에는 능력이 많이 부족하다는 생각이 들었습니다.다른 일정도 병행하고 있어서 더욱 구현하기 어려웠다고 생각합니다.추후 꼭 개인적으로라도 2,3,4 단계를 구현해내고 싶습니다! 3주 정도의 짧다면 짧은 시간동안 자바, 스프링부트를 활용하여 서버를 만들어보는 경험을 한 것이굉장한 도움이 되었습니다. 사실 스터디를 참여하지 않았다면 완강이 어려웠을 수도 있지만,코치님과 멘토님 그리고 스터디원 분들에게 많은 동기부여를 받아 완강할 수 있었던 것 같습니다.정말 참여하기 잘했다는 생각이 들고, 다음에도 이런 좋은 기회가 있다면 다시 참여하고 싶습니다.지속적으로 개발 공부를 하면서 최태현 멘토님 같은 개발자가 될 수 있도록 노력하겠습니다 파이팅!
인프런워밍업클럽
2024. 03. 03.
0
[인프런 워밍업 클럽_0기 BE] 두번째 발자국 남기기
🌱2주차 회고🌱 키워드 스프링 컨테이너, 스프링 트랜잭션Spring Data JPA 칭찬하고 싶은 점 :한번도 학습하지 않은 부분이여서 조금은 낯설었지만 진도표에 알맞게 학습을 하고 미션를 수행하려고 노력했던 점을 칭찬하고 싶습니다. 아쉬운 점 :아직 완벽하게 습득을 못한 것 같아 스스로 아쉬움이 많이 남습니다.아무래도 학원과 병행을 하다 보니, 머릿속으로 정리가 안된 부분들이 많습니다.미니 프로젝트를 수행하면서 앞 부분의 내용들을 정리하는 시간이 필요할 것 같습니다. 미션 목록6일차 : (몸이 좋지 않아 수행하지 못함)7일차 : https://inf.run/JF2jk미션을 해결한 과정 :아무래도 1주차 미션들 보다 난이도 있게 느껴졌습니다. 최대한 강의를 학습하고 미션을 수행하기 위해 노력했으며다른 분들의 코드를 보고 '이렇게도 할 수 있구나!' 하며 스스로 생각을 많이 하게 되었습니다.
인프런워밍업클럽
2024. 02. 27.
0
[인프런 워밍업 클럽_0기 BE] 일곱번째 과제 - JPA
create table fruit ( id bigint auto_increment, name varchar(20), price bigint, warehousing_date date, is_sold boolean default false, reg_datetime datetime default CURRENT_TIMESTAMP, alt_datetime datetime, primary key (id)); ackage com.group.libarayapp.dto.task07.request; import java.time.LocalDate; public class FruitCreateRequestEx07 { Long id; String name; LocalDate warehousing; Long price; int salesQuantity; public FruitCreateRequestEx07(Long id, String name, LocalDate warehousing, Long price, int salesQuantity) { this.id = id; this.name = name; this.warehousing = warehousing; this.price = price; this.salesQuantity = salesQuantity; } public String getName() { return name; } public Long getId() { return id; } public LocalDate getWarehousing() { return warehousing; } public Long getPrice() { return price; } public int getSalesQuantity() { return salesQuantity; } }package inflearn; package com.group.libarayapp.controller.task07; import com.group.libarayapp.domain.user.task07.Fruit; import com.group.libarayapp.dto.task07.request.FruitCreateRequestEx07; import com.group.libarayapp.dto.task07.request.FruitRequestEx07; import com.group.libarayapp.dto.task07.response.FruitResponseEx07; import com.group.libarayapp.dto.task07.response.FruitSalesCountResponseEx07; import com.group.libarayapp.service.task07.FruitServiceEx07; import org.springframework.web.bind.annotation.*; import java.util.List; public class FruitControllerEx07 { @RestController public class FruitControllerEx07 { private final FruitServiceEx07 fruitServiceEx07; public FruitControllerEx07(FruitServiceEx07 fruitServiceEx07) { this.fruitServiceEx07 = fruitServiceEx07; } // 문제 1 @PostMapping("/api/v3/fruit") public void saveFruit(@RequestBody FruitRequestEx07 request) { fruitServiceEx07.saveFruit(request); } // 문제 2 @PutMapping("/api/v3/fruit") public void salesQuantityFruit(@RequestBody FruitCreateRequestEx07 request) { fruitServiceEx07.salesQuantityFruit(request); } // 문제 3 @GetMapping("/api/v3/fruit/stat") public FruitResponseEx07 SalesAmountFruit(@RequestParam String name) { return fruitServiceEx07.salesAmountFruit(name); } // 문제 3 @GetMapping("/api/v3/fruit/count") public FruitSalesCountResponseEx07 SalesCountFruit(@RequestParam String name) { return fruitServiceEx07.salesCountFruit(name); } @GetMapping("/api/v3/fruit/list") public List fruitListOfGTEorLTE( @RequestParam(name = "option") String option, @RequestParam(name = "price") long price) { return fruitServiceEx07.fruitListOfGTEorLTE(option, price); } } }package com.group.libarayapp.dto.task07.request; import java.time.LocalDate; public class FruitRequestEx07 { private Long id; private String name; private LocalDate warehousingDate; private int salesQuantity; private Long price; public FruitRequestEx07(String name, LocalDate warehousingDate, Long price) { this.name = name; this.warehousingDate = warehousingDate; this.price = price; } public String getName() { return name; } public LocalDate getWarehousingDate() { return warehousingDate; } public Long getPrice() { return price; } public Long getId() { return id; } public int getSalesQuantity() { return salesQuantity; } } package com.group.libarayapp.dto.task07.response; public class FruitResponseEx07 { private final long salesAmount; private final long notSalesAmount; public FruitResponseEx07(long salesAmount, long notSalesAmount) { this.salesAmount = salesAmount; this.notSalesAmount = notSalesAmount; } public long getSalesAmount() { return salesAmount; } public long getNotSalesAmount() { return notSalesAmount; } }package com.group.libarayapp.dto.task07.response; public class FruitSalesCountResponseEx07 { private final long count; public FruitSalesCountResponseEx07(long count) { this.count = count; } public long getCount() { return count; } }
인프런워밍업클럽
2024. 02. 24.
0
[인프런 워밍업 클럽_0기 BE] 첫번째 발자국 남기기
🌱1주차 회고🌱 키워드 어노테이션람다식과 익명 클래스클린 코드 칭찬하고 싶은 점 :교육과 병행중임에도 진도표에 맞춰 강의를 빼놓지 않고 학습하였습니다.또한 미션 제출도 기간안에 모두 제출한 점을 칭찬하고 싶습니다. 아쉬운 점 :아직 API, DB 가 익숙하지 않아 이 부분에 대해서 더욱 심도있게 공부해야겠다는 생각을 했습니다. 아무래도 매일 강의를 학습하고 미션을 제출하는것에 초점을 두다 보니 복습을 소홀히 한 것 같은 생각이 들었습니다. 보완하고 싶은 점 :2주차 부터는 누적 공부를 통해 1주차에 배운 내용들을 복습하는 시간을 갖고자 합니다.또한 자바 공부를 같이 하며 기본기를 다시 다잡고자 합니다. 미션 목록 1일차 : https://inf.run/nZf9M2일차 : https://inf.run/JcMH53일차 : https://inf.run/1sdHd4일차 : https://inf.run/sbtjw5일차 : https://inf.run/Yv5uV 미션을 해결한 과정 :미션에서 요구하는 것이 무엇인지 1순위로 파악하고자 했습니다. 문제에 답이 있다! 라는 말처럼 우선 문제에 대해이해하고 파악하기 위해 노력했습니다. 미션 도중 막히게 되는 순간들이 있었는데, 이러한 순간이 오면 최대한 생각을하다가 책이나 강의를 통해 개념을 다시 보거나 검색을 통하여 해결을 하였습니다.
인프런워밍업클럽
2024. 02. 23.
0
[인프런 워밍업 클럽_0기 BE] 다섯번째 과제 - Clean Code
우리는 라는 개념을 배웠습니다. 에 대한 감각을 익히기 위해서는 어떤 코드가 좋은 코드이고, 어떤 코드가 좋지 않은 코드인지 이론적인 배경을 학습하는 것도 중요할 뿐 아니라, 다양한 코드를 읽어 보며 어떤 부분이 읽기 쉬웠는지, 어떤 부분이 읽기 어려웠는지, 읽기 어려운 부분은 어떻게 고치면 좋을지 경험해보는 과정이 필요합니다.이번 과제는 제시된 코드를 읽어보며, 코드를 더 좋은 코드로 고쳐나가는 과정입니다. 구글에 “클린 코드” 혹은 “클린 코드 정리”를 키워드로 검색해보면, 이론적인 배경을 충분히 찾아보실 수 있습니다. 🙂 그러한 내용들을 보며 제시된 코드를 더 좋은 코드로 바꿔보세요! (코드를 바꿀 때 왜 바뀐 코드가 더 좋은 코드인지 다른 사람에게 설명하신다고 생각해보시면 더욱 좋습니다.) [제시된 코드]여러 함수로 나누어도 좋습니다! 🙂여러 클래스로 나누어도 좋습니다! 🙂 *클린코드(Clean Code) 란 ? 좋은코드란 무엇일까이름만으로도 예측 가능한 코드객체 생성에 유의미한 이름서술적인 이름명령과 조회를 분리오류 코드보단 예외 package inflearn; import java.util.Scanner; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.IntStream; public class DiceRollStatistics { private static final int NUMBER_OF_SIDES = 6; private static final int MAX_THREADS = Runtime.getRuntime().availableProcessors(); public static void main(String[] args) { try (Scanner scanner = new Scanner(System.in)) { System.out.print("주사위를 던질 횟수를 입력하세요: "); int numberOfThrows = scanner.nextInt(); int[] diceCounts = getDiceCounts(numberOfThrows); printStatistics(diceCounts); } } private static int[] getDiceCounts(int numberOfThrows) { AtomicInteger[] counts = new AtomicInteger[NUMBER_OF_SIDES]; IntStream.range(0, NUMBER_OF_SIDES) .forEach(i -> counts[i] = new AtomicInteger()); IntStream.range(0, numberOfThrows) .parallel() .limit(MAX_THREADS) .forEach(i -> { int result = ThreadLocalRandom.current().nextInt(NUMBER_OF_SIDES); counts[result].incrementAndGet(); }); return IntStream.range(0, NUMBER_OF_SIDES) .map(i -> counts[i].get()) .toArray(); } private static void printStatistics(int[] diceCounts) { IntStream.range(0, NUMBER_OF_SIDES) .forEach(i -> System.out.printf("주사위 눈 %d은(는) %d번 나왔습니다.\n", i + 1, diceCounts[i])); } }
백엔드
・
인프런워밍업클럽
2024. 02. 22.
0
[인프런 워밍업 클럽_0기 BE] 네번째 과제 - API 생
진도표 4일차와 연결됩니다우리는 GET API와 POST API를 만드는 방법을 배웠습니다. 👍 추가적인 API 들을 만들어 보며 API 개발에 익숙해져 봅시다!package day4homework; import java.time.LocalDate; public class FruitSave { private String name; private LocalDate warehousingDate; private long price; public FruitSave(String name, LocalDate warehousingDate , long price) { this.name=name; this.warehousingDate = warehousingDate; this.price = price; } public String getName() { return name; } public LocalDate getWarehousingDate() { return warehousingDate; } public long getPrice() { return price; } }*한걸음 더 )int형을 사용했을 때 범위가 제한적이기 때문에, 범위가 더 넓은 long을 사용합니다.
백엔드
・
인프런워밍업클럽