안녕하세요 😊
제가 아는 내용을 이해하기 쉽고, 재미있게 설명드려 여러분들이 성장하실 때 행복함을 느끼는 개발자 최태현입니다.
(현) 캐치테이블[와드] 소프트웨어 엔지니어
(전) 스타트업 소프트웨어 엔지니어 리드
(전) 배달의민족[우아한형제들] 소프트웨어 엔지니어
(교육활동) Next Step 리뷰어 다수 참여, 공기관 & 스타트업 경진대회 강사 및 멘토, 스파르타 코딩클럽 멘토
한국과학기술원 (KAIST) 졸업
Khóa học
Đánh giá khóa học
- Hướng dẫn dành cho người mới bắt đầu sử dụng Java và Kotlin
0802222
·
Tạo máy chủ đầu tiên của bạn bằng Java và Spring Boot Bất kỳ ai cũng có thể dễ dàng chuyển từ giai đoạn phát triển sang triển khai! [Gói phát triển máy chủ tất cả trong một]Tạo máy chủ đầu tiên của bạn bằng Java và Spring Boot Bất kỳ ai cũng có thể dễ dàng chuyển từ giai đoạn phát triển sang triển khai! [Gói phát triển máy chủ tất cả trong một]- Hướng dẫn dành cho người mới bắt đầu sử dụng Java và Kotlin
- Hướng dẫn dành cho người mới bắt đầu sử dụng Java và Kotlin
- Hướng dẫn dành cho người mới bắt đầu sử dụng Java và Kotlin
Bài viết
Hỏi & Đáp
코틀린에서 상속 시, 주의점에 대한 질문
안녕하세요! 보내주신 블로그 글까지 확인 완료했습니다. ☺상위 클래스와 하위 클래스의 초기화 시점에 따라 기본값이 들어갈 수 있다는 것 까지는 확인하신 것 같아요!분명 선언된 것은 non-nullable 타입인데 어떻게 null이 나오는거야?에 대해서만 더 말씀드리면. 코틀린은 결국 컴파일을 통해 .class 파일로 변환되어 JVM에서 실행됩니다!! 그리고 코틀린의 변수가 non-nullable인지, nullable인지 구분할 수 있는 것은 코틀린 언어 단에서 지원하는 것이지 .class 레벨에서는 관련한 스펙이 없습니다.따라서 코틀린의 String? 을 디컴파일 하건 String 을 디컴파일 하건 코드가 실행될 때는 java의 String 처럼 동작하게 되고, 아직 초기화 되지 않은 경우는 reference type의 기본값인 null이 들어가게 되는 것입니다. 마찬가지로 이런 원리 때문에 "플랫폼 타입" 이라는 개념이 존재하게 됩니다! 코틀린의 코드가 자바의 코드를 부르는 경우, 결국 .class 코드가 .class 코드를 부르는 것이기에 코틀린 쪽에서 non-nullable 선언을 하더라도 자바 쪽 .class 에서 null이 넘어오면 코드가 깨질 수 있게 되는 것이죠.답변이 도움이 되었으면 좋겠습니다! 감사합니다. 🙇
- 1
- 3
- 27
Hỏi & Đáp
내용 이해 질문
안녕하세요! 🙂 네 맞습니다! number를 가져오려고 하지만, 하위 클래스의 number는 아직 생성자가 호출되기 전이라 기본값 (이 경우는 Java로 decompile 해보시면 primitive int가 있기에 기본값이 0이 됩니다) 이 나오게 됩니다.다음 질문에서도 한 번에 답변 드릴 수 있도록 하겠습니다. 🙇
- 0
- 1
- 18
Hỏi & Đáp
인텔리제이 샘플코드 실행 안됨 오류
안녕하세요! Lynn님! 🙂 보내주신 화면을 볼 때 라는 문구가 있는데요! 이 문구로 유추해 볼 때, Java SE 11 인식이 잘 되지 않은 것 같아요!해당 문구 옆에 SDK 설정을 눌러 SDK 설정을 진행해보시면 좋을 것 같습니다. (설정이 원래 굉장히 어렵습니다.. 🥲)(사진)감사합니다. 🙇
- 0
- 2
- 10
Hỏi & Đáp
aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다
안녕하세요 커디널스님! 🙂 좋은 질문 감사합니다.우선 보안과 관련해 바람직한 접근은 아니지만 github private repo + yml 혹은 .env 에 민감 정보를 관리하는 방안이 있습니다. 규모가 꽤 큰 회사에서도 본격적인 보안 감사를 준비하기 전에는 종종 사용하는 방법이고요~ (side project 에서도 추천 하는 방법입니다)이보다 좋은 Best Practices는 AWS SecretsManager 같은 민감 정보 저장소를 사용하거나 hashicorp vault 같은 민감 정보 저장소를 직접 운영하는 방법이 있습니다. 작은 프로젝트에서는 AWS SecretsManager 가 조금 더 편리했던 경험이 있습니다. (실무에서 조금 더 추천 하는 방법입니다)답변이 도움이 되었으면 좋겠습니다. 감사합니다. 🙇
- 0
- 1
- 21
Hỏi & Đáp
마이그레이션 오류입니다.
안녕하세요! 아하~ 최신 버전은 3.5.6을 해보려고 하셨군요! ☺저도 항상 버전업을 할 때마다 버전을 올리고 오류를 자세히 읽어보며 하나씩 설정을 변경해 나가는 편이라 100% 정답을 말씀드리기는 어렵네요 🥺 다만 보내주신 에러 내용만 봤을 때는캐시 파일을 삭제 하려고 해도 디렉터리가 비어있지 않다는 오류가 뜨며 삭제되지 않음이 저도 유력한 듯 해서프로젝트 최상단에서 rm -rf .gradle 이라고 해보셔도 좋을 것 같아요! 이 명령어는 gradle 숨김 폴더에 있는 캐시를 모두 지우는 명령어 입니다.답변이 도움이 되었으면 좋겠습니다. 🥲 감사합니다 🙇
- 0
- 3
- 42
Hỏi & Đáp
Whitelabel Error Page 오류가 났습니다.
안녕하세요!! 🙂 seongmin2053님~ 혹시 현재 application.yml 설정이 어떻게 되어 있는지, 어떤 경로로 h2-console로 접근하려 했는지 확인 가능하실까요?!사용하신 설정을 기반으로 어떤 부분이 문제인지 추적해 볼 수 있을 것 같습니다. 🙇
- 0
- 2
- 33
Hỏi & Đáp
안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ
안녕하세요~ 해결되셨다니 다행이네요!! ☺이럴 때는 각 단계별로 로그를 찍어 어떤 단계에서 이상이 생겼는지 확인해보거나 디버거를 사용해 보셔도 좋습니다!감사합니다~~ 🙇
- 1
- 3
- 32
Hỏi & Đáp
2강 예제 소스 실행 문의
안녕하세요! 🙂 보내주신 내용을 확인해 보았는데요!실행 환경 차이 (ex. IntelliJ로 실행하게 되어 있는데 Java 9 미만으로 실행되고 있는 경우) 또는오탈자가 유력해 보입니다! 제가 질문자 분의 환경을 100% 확인할 수는 없어서 github 으로 테스트 해보신 내용을 보내주시면 직접 확인해보도록 하겠습니다! 감사합니다. 🙇
- 0
- 2
- 32
Hỏi & Đáp
궁금한게 있습니다.
안녕하세요!! 🙂 질문 주셔서 감사합니다~1 : N 이란 표현은 이해해주셨는데요~~ 이렇게 생각하시면 되어요!A 데이터가 B 데이터 N개와 연결될 수 이으면 1 : N 관계이다.즉, 한 유저는 대출 기록 여러개를 가질 수 있죠반대로 한 유저는 주민등록번호를 반드시 1개만 가질 수 있으므로 1 : 1 관계라고 할 수 있을거에요! 자 다음으로 그게 어떻게 User 객체와 user_id bigint 컬럼과 매핑이 되는지 잘 모르겠습니다라고 해주셨는데요!JPA를 사용하게 되며@Entity가 붙은User 클래스는 테이블과 매핑이 됩니다.객체에서는 long id 로 표현된 데이터가 실제 데이터베이스에는 bigint id 로 저장되는 것이죠여기까지 이해가 되셨다면, 이제 1번 유저가 있다고 생각해 보겠습니다.User 클래스의 id 필드에는 1이 들어 있고, user 데이터베이스 id 필드에도 1이 들어 있습니다. 이 유저가 100번 책과 110번 책 2권을 빌렸다면 대출 기록은 이렇게 생겼을거에요!단순화한 대출 기록 스키마 = (user_id, 책 id)(1, 100) -> 1번 유저가 100번 책을 빌렸다(1, 105) -> 1번 유저가 105번 책을 빌렸다이렇게 되면 유저 테이블에는 데이터가 1줄 들어 있겠고, 대출 기록 테이블에는 데이터가 2줄 들어있겠네요~ ☺ 많은 개념이 동시에 들어오며 1:N 이라는 워딩, 그것이 데이터베이스에서 표현되는 방법론에 대해서 질문 주신 것 같아요! 답변의 흐름을 따라 하나씩 이해해보고, 직접 실행하며 데이터를 확인해보시면 이해가 더욱 잘 되실거에요!답변이 도움이 되었으면 좋겠습니다. 감사합니다. 🙇
- 0
- 2
- 23
Hỏi & Đáp
DTO 관련
안녕하세요! eovnfjfpa님~ 🙂 크~ 많이 물어보시는 질문인데요!살짝 복잡한 내용일 수 있지만, 스프링은 들어오는 문자열 (HTTP Body에 들어 있는 json 이죠!) 을 객체로 변환하는 과정에서 객체의 생성자를 필요로 합니다!그리고 어떤 생성자가 필요한지는 스프링 버전에 따라, 객체 필드 수에 따라 조금씩 다르더라고요... 😅때문에 개인적으로는 기본 생성자 (= 아무것도 받지 않는 생성자) 를 항상 넣어주는 편입니다. lombok을 사용할 경우 @NoArgsConstructor 를 항상 붙이는 것이죠~ 자바 17이 넘어가게 되면서는 record class가 등장해 record 클래스를 사용하면 조금 더 쉽게 대응이 되는 편입니다. 또 궁금한 점 생기시면 언제든 편하게 질문 주세요~ 감사합니다.
- 0
- 2
- 30