안녕하세요 😊
제가 아는 내용을 이해하기 쉽고, 재미있게 설명드려 여러분들이 성장하실 때 행복함을 느끼는 개발자 최태현입니다.
(현) 캐치테이블[와드] 소프트웨어 엔지니어
(전) 스타트업 소프트웨어 엔지니어 리드
(전) 배달의민족[우아한형제들] 소프트웨어 엔지니어
(교육활동) Next Step 리뷰어 다수 참여, 공기관 & 스타트업 경진대회 강사 및 멘토, 스파르타 코딩클럽 멘토
한국과학기술원 (KAIST) 졸업
講義
受講レビュー
- 本当!コトリンとスプリングブートで図書館アプリケーションを開発する(Javaプロジェクトリファクタリング)
- Java開発者向けのコトリン入門(Java to Kotlin Starter Guide)
- Java開発者向けのコトリン入門(Java to Kotlin Starter Guide)
投稿
Q&A
빌드 시작부터..
안녕하세요! ☺ 혹시 어떤 상황에서 오류가 발생하는지 조금 더 알 수 있을까요?!비슷한 오류는 https://warmth424.tistory.com/9 로 해결을 도전해보실 수 있을 것 같습니다. 🙏역시 환경 설정이 반이네요..! 😢
- 0
- 2
- 22
Q&A
시작하려는데 계속 오류가 발생합니다.
안녕하세요! u4253님~ 🙂 질문 올려주셔서 감사합니다.AI 인턴이 답변해준 것처럼MySQl이 아니라 H2를 사용하도록 되었는데H2는 user 라는 지시어가 예약어이고, 이를 제외하는 설정이 적용되지 않았기 때문에발생하는 오류입니다! AI 인턴이 올려준 링크 중 아래 링크를 타고 들어가시면 적절한 해결책을 찾으실 수 있을거에요! 감사합니다.도서관 애플리케이션 실행 오류감사합니다.
- 0
- 2
- 20
Q&A
val 키워드도 setValue가 있나요?
안녕하세요 석운님! 🙂 말씀해주신 내용이 맞습니다!val 키워드는 불변이라 getValue() 만 있어요! by 키워드를 사용하려면 getValue와 setValue 함수가 필요하다 라는 워딩은(val 혹은 var 변수와 함께) by 키워드를 사용하려면 getValue만 사용하거나 getValue와 setValue가 함께 필요하다. 라는 워딩이 더 정확할 것 같습니다. 강의를 들으시다가 또 궁금한 점 생기시면 편하게 말씀해주세요! 감사합니다! 🙏
- 0
- 2
- 16
Q&A
과제를 위한 초기세팅
안녕하세요! backendgoat0915님~ 🙂혹시 현재 강의 초기세팅과 같이 하려면 어떻게해야될지 알려주실 수 있으신가요? 1~2강 초기세팅 강의에서 spring.io로 처음부터 만드는걸 배울때 자바나 스프링부트 버전설정이런건 설명이 있었는데 그다음 의존성 이런건 나중에 설명이 나온다했던거같아서 정확히 모르겠습니다.로 질문 주신 부분이 핵심인 것 같아요! spring.io 를 이용해 스프링 부트를 시작하는 방법은 에서 찾아보실 수 있고요! build.gradle 관련 설명은 49강, application.yml 관련 설명은 51강과 13강에서 확인해보실 수 있습니다. 감사합니다!! 🙇
- 1
- 2
- 30
Q&A
반공변성 질문드립니다.
아하~ Cage4를 이용한 예시가 궁금하셨군요! 🙂class Cage4 { private val animals: MutableList = mutableListOf() fun put(animal: T) { this.animals.add(animal) } }Cage3와 다르게 역으로 Cage4 타입의 변수에 Cage4 타입의 변수를 assign 할 수 있는지를 생각해보시면 좋을 것 같습니다.현재 Cage4 에는 반공변성 지시어인 in 이 없기 때문에val fishCage = Cage4() fishCage.put(Carp("잉어")) val goldFishCage: Cage4 = fishCage아래 코드는 당연히 에러가 날거에요! Cage4 와 Cage4 는 다른 타입이니까요 🙂 하지만 만약 in 을 추가해주면~ Cage 입장에서는 내부 T 타입을 받기만하기 때문에 Fish Cage에 GoldFish가 들어와도 사실은 문제가 없고~ 따라서 위 코드의 에러가 사라지게 될거에요!공변 / 반공변이 상당히 어려운 개념이라 이런게 있구나~ 정도로 이해하시고 실제 실무 환경에서 라이브러리나 프레임워크를 열어볼 때 어떤 코드에 어떻게 적용되어 있는지 관찰하시면 조금 더 이해도를 높이실 수 있을거에요!! 감사합니다~!!!
- 1
- 3
- 30
Q&A
반공변성 질문드립니다.
안녕하세요! 🙂 데이터를 소비만 하는 반공변한 클래스의 대표적인 예시로는Comparable이 있습니다. Comparable 처럼 in 지시어를 사용한 반공변 인터페이스이고요! 함수 역시 T 타입을 받기만 하고 있습니다. (반환 타입에 T가 있는게 아니라 매개변수 쪽에만 T가 있죠) (사진) 답변이 도움이 되었으면 좋겠습니다. 감사합니다. 🙇
- 1
- 3
- 30
Q&A
application.yml driver-class-name 연결오류
해결하셨다니 다행이네요! 🙂이런 트러블 슈팅 경험을 많이 쌓으실수록 다양한 문제 상황에 쉽게 대처하실 수 있을거에요!감사합니다. 🙇
- 1
- 2
- 27
Q&A
코루틴과 가상 스레드의 차이가 궁금합니다.
안녕하세요!! 열심히 공부할게요님~ 좋은 질문 감사합니다. 🙂결론부터 말씀드리면 겉으로 보기에는 비슷해 보이나, 두 기술의 등장 목적이 다르고 실제 내부 동작도 다르기에 코루틴과 가상 스레드는 차이가 있습니다.따라서 Virtual Thread로 작성된 코드가 코틀린-코루틴으로 100% 호환되기는 어려운 것 같아요! 아래 장표는 강의의 일부인데요! (사진) 댓글을 작성하는 시점에 개인적으로는 아직까지 Virtual Thread 을 실무 환경에서 적극적으로 사용하기에는 어려움이 있는 것 같습니다. 그 이유는.. 아직 Virtual Thread의 pinning 문제가 완전히 해결되지 않았고, 코루틴을 사용하는 코드가 조금 더 유연하게 느껴져서 그렇습니다. 관련해서 Virtual Thread만 확인하고자 유료 강의를 추가로 구입하기에는 다소 부담이실 수 있으니 https://www.youtube.com/watch?v=bOLChQ3fFQo 영상을 보시는 것도 좋을 것 같습니다.감사합니다. 🙇
- 1
- 2
- 35
Q&A
user-loanHistory 폴더 구조 질문
안녕하세요 용찬님! 🙂 정말 좋은 질문 감사드립니다.@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List userLoanHistories = new ArrayList(); 우선 위 코드가 User와 UserLoanHistory의 '강결합'을 의미하는 것이 맞습니다.또한, 이렇게 1) 강결합 되어 있으면서 2) 전체적인 비즈니스 맥락을 같이하는 객체들을 DDD에서는 Aggregate 라고 부루는 것도 맞습니다. (정확한 정의와 의미는 사람마다 조금 다를 수 있을 것 같아요!) 다음 질문으로 넘어가...그래서 폴더 구조를 user 밑에 loanHistory를 넣으신 것 같은데, 일반적으로 이런식으로 폴더 구조를 잡나요?하나의 Aggregate 안의 구성 요소가 여러개인 경우, 저는Aggregateroot (한 애그리거트의 가장 대표가 되는 객체, 여기서는 user가 됩니다) 패키지 아래 추가적인 패키지를 두는 방법을 제일 선호합니다. 🙂다만 구성요소가 적다면 한 패키지 안에 넣는 경우도 있고, 드물긴 하지만 아예 다른 패키지에 위치시키는 경우도 있습니다. (ex. user 와 같은 레벨로 loanHistory 를 만드는 경우) 대출 기능도 BookService에서 구현하는 게 아니라 UserLoanHistory용 컨트롤러/서비스/레포지토리를 따로 만들어 구현해도 되나요?넵! 🙂 충분히 어색하지 않을 것 같아요! "책"이라는 관점에서 보면 내가 대출 당하는 것이니 대출 관련 로직이 BookController, BookService 에 위치할 수 있겠지만 "유저" 관점에서 보면 내가 대출을 하는 것이니 유저 대출 관련 Controller, Service가 있어도 충분할 것 같습니다. 결국 어떤 코드를 어디에 위치시킬 것인지, 어떤 클래스를 어떤 패키지에 위치시킬 것인지는 정답이 잘 없는 것 같아요! 한 프로젝트 내에서 함께 하는 분들의 동의를 받을 수 있고, 일관성과 타당한 이유가 있다면 어떤 형태든지 충분히 괜찮은 것 같습니다. 🙏 답변이 도움이 되었으면 좋겠습니다. 감사합니다. 🙇
- 1
- 2
- 22
Q&A
45강 빌드 오류입니다.
안녕하세요 정아님! 🙂 질문 주셔서 감사합니다.AI 인턴이 언급해준 것처럼Cannot find a Java installation on your machine (Linux 6.1.134-152.225.amzn2023.x86_64 amd64) matching: {languageVersion=17, vendor=any vendor, implementation=vendor-specific, nativeImageCapable=false}. Toolchain download repositories have not been configured.이 핵심으로 보이는데, Java 17의 설치가 제대로 감지되지 않은 것 같아요! Java 설치까지는 하셨다면 https://inpa.tistory.com/entry/IntelliJ-%F0%9F%92%BD-%EC%9E%90%EB%B0%94-JDK-%EB%B2%84%EC%A0%84-%EB%B3%80%EA%B2%BD-%EB%B0%A9%EB%B2%95와 같은 글을 참고해서 IntelliJ 설정을 추가로 해보시면 좋을 것 같습니다. FE 코드는 메일로 보내드렸습니다. 감사합니다. 🙇
- 0
- 2
- 52