묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨2시간으로 끝내는 코루틴
Spring MVC에서 corountine 활용 방안
안녕하세요. 저는 오랜기간 동안 Java, Spring을 기반으로 웹 프로그래밍 해왔고 이번에 일부 프로젝트를 코틀린 + Spring을 기반으로 구현을 검토하게 되어 해당 강의를 듣게 되었습니다.사실 Java, Spring 기반이다 보니 동기방식의 프로그램에 익숙해져 있고 러닝커브나 디버깅의 어려움, DB등의 관련 라이브러리들이 아직 안정화 수준이 아니라 판단하여 WebFlux 도입을 꺼려왔고,일부 RestTemplate 호출등의 병렬 처리가 필요할 경우 CompletableFuture에 별도 ThreadExecutor를 사용해 처리하는 방법을 주로 사용해 왔습니다.이번 신규 프로젝트도 우선은 Spring 프레임워크를 사용하기 때문에 Webflux가 아닌 Spring MVC 기반의 동작이 될 예정인데요,그러다 보니 강의를 다 들었지만 coroutine을 어떻게 활용할 수 있을지 감을 잘 못잡은 상태입니다.가령 RestTemplate이나 RestClient 등의 동기식 block 기반의 통신 시 호출 부를 CoroutineScope(Dispatchers.Default).async { } 으로 감싸서 호출을 하게 되면 두개의 API가 각각 1초가 걸린다면 1.05 정도로 가능하겠지만 이런 패턴은 기존 자바에서 CompletableFuture로 충분히 가능했던더라 coroutine을 잘 활용했다고 보는게 맞는지 궁금한데요,coroutine의 장점을 활용하려면 결국 API 통신 같은 경우 가능하면 webclient나 ktorClient 등을 통해 non-block으로 변경해서 처리를 해야 하는건지 궁금하고, 코틀린으로 웹애플리케이션을 구현한다고 했을때 spring을 사용하면 webflux 도입은 약간 필수? 같은 개념으로 봐야 하는건지 궁금합니다.(강의 마지막 Continuation 예제에서 repository call을 두번 하는 부분도 non-block으로 DB처리가 가능해야 의미있는 coroutine 동작이 가능한거겠죠??) 질문을 요약하자면,Spring MVC 구조에서 block 기반의 로직 처리 시 CoroutineScope(Dispatchers.Default).async { } 으로 감싸서 호출하는 구조가 coroutine의 장점을 활용한 방식이 맞을까요?1번이 장점이 아니라면 non-blocking으로 처리 가능한 webclient나 ktorClient을 사용해야 해야 할까요?보통 Spring에서 coroutine을 활용하려면 webflux를 사용하는게 기본일지? 혹시 다른 활용 방안은 없을지?입니다.감사합니다.
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
로그인 후 Token 발행 시 postman 에러메시지
안녕하세요. 본 수강 열심히 잘 듣고있습니다~ 감사합니다.제가 Postman으로 로그인하고나서 Token을 발행할 시에 postman에 테스트해본 결과 결과코드는 SUCCESS라고 나오고 data에도 Bearer에 토큰이 들어간것을 확인하였습니다. 그러나 메시지에는 정상완료가 아닌 에러가 발생했다고 해서 제가 아무리 코드를 확인하였지만 어디부분에서 잘못된건지 확인이 힘들었습니다. 사실은 선생님께서 보내주신 파일을 업로드안하고 강의보면서 제가 직접 코드를 타이핑쳤었는데 손코딩을해서 그런지 오타가 있을 것으로 사료됩니다. 불가피하게 파일을 덮어씌우는게 좋을까요?
-
미해결코틀린 고급편
abstract class Fish(name:String):Animal(name)
파라미터 name:String에서 val name 이 안되는데 이유가 뭔지 모르겠네요;;
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
Unresolved reference: auth
안녕하세요, 강사님.저는 현재 안드로이드 강의를 수강하고 있는 학생입니다. 강의 내용을 따라가고 있는데, 파이어베이스를 활용한 익명로그인, 이메일로그인, 데이터베이스 활용하기에서 막혔습니다.문제 부분: import문이나 코드에는 빨간줄 없이 다 정상입니다. 다만 앱을 실행하면 auth를 참조할 수 없다고 뜨면서 빌드가 멈춥니다.시도한 방법: 질문게시판에 있는 해결 방법과 스택오버플로우, chat gpt등을 활용해서 문제를 해결하려 했지만 계속 오류가 뜹니다. import 부분에서 현재 버전은 자바와 코틀린 동일한 것을 사용할 수 있다고 해서 그냥 auth도 써보고 ktx.auth도 사용해봤습니다. 하지만 두개 모두 같은 오류가 발생합니다.제가 짠 코드는 깃허브에 올려뒀습니다.https://github.com/hyoonpark/kotlin-matbogi/tree/main/day6/fblogin이 부분에 대해 추가적인 설명이나 자료를 제공해주시면 정말 감사하겠습니다.감사합니다.
-
미해결2시간으로 끝내는 코루틴
9강 코루틴 중단과 재개관련 문의 드립니다.
강의 정말 재미있게 잘 듣고 있습니다. 이제 막바지네요 :)제공해주신 샘플코드를 보면서도 코틀린이 코루틴을 어떻게 중단하는지는 이해가 잘 안되었습니다. 코드상(예제나 디컴파일된 코드)에 딱히 코루틴을 중단 시키는 부분이 보이지 않습니다. 재개의 경우 Continuation의 resumeWith 를 사용할것 같은데, 중단의 경우에는 내부적으로 CoroutineContext 가 활용되는 걸까요 ?
-
해결됨코틀린 코루틴 완전 정복
Flow와 Channel
강의에서 Flow나 Channel에 대해 추가로 다루실 예정이 있는지 궁금합니다.
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
테스트 후 AfterEach 함수에서 나오는 쿼리
안녕하세요 fetch join까지 적용한 후에 테스트 코드 자체가 N+1 문제가 제거된 것은 확인했습니다.그런데 AfterEach 함수에서 deleteAll을 하는 과정에 fetch join 이전의 N+1 쿼리랑 유사한 쿼리가 나오는데 이게 delete 쿼리를 날리기 위한 데이터를 가져오려는 목적인것 같은데 질문이 있습니다. 혹시 deleteAll 이전에 나오는 쿼리도 N+1처럼 동작하는지테스트 코드이므로 테스트 객체의 모수가 작아 무시해도 되는지이정도 질문하고 싶습니다
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
[BTS앱] 화면 클릭 이벤트 처리 - findViewById, Toast
선생님 4일 전에 질문 달았는데 다시한번 질문드립니다!코드도 맞게 입력하고, 재부팅, 새로운 파일로 빌드도 다 해봤는데도 토스트 메세지가 뜨지 않아서 프로젝트 압축 파일 올려놨습니다ㅠㅠ 이유를 모르겠습니다..https://drive.google.com/drive/folders/1qDl-Spv709ko__1M-HI0RItbNR9jhtF_?usp=sharing
-
미해결입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
리액트 연결
안녕하세요! 프론트엔트 초보 개발자입니다.백엔드는 단 한 번도 건드려본적이 없어서 어떤 구조인지도 잘 몰라요 ㅠㅠ아직 정말 지식 수준이 얕습니다.이 강의를 완강한 후에, 리액트로 프론트를 만져보고 싶은데요...이후에 프로젝트에서 프론트, 백 따로 개발 후에 둘이 연결을 하려면 어떻게 해야하나요..?초보자 수준에서 간단히 설명 가능한가요..?
-
미해결[중급편] 코인 가격 모니터링 앱 제작 (Android Kotlin)
bottom navigation view 색깔
bottom navigation view를 추가했습니다. 하단 탭의 색깔이 아래와 같이 나옵니다.눌렀을 때 아이콘 색깔도 빨강색으로 안변하고 그냥 보라색 동그라미가 그려지는데요. 강의처럼 눌렀을 때 아이콘 색깔만 primary color로 나오게 하려면 어떻게 해야 하나요?primary color는 빨갛게 지정해서 다른 곳은 빨갛게 잘 나옵니다.compile sdk, target sdk = 34 입니다.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
[BTS앱] 화면 클릭 이벤트 처리 - findViewById, Toast
코드 똑같이 쳤는데 test device에서 첫번째 이미지 클릭시 "1번째 클릭 완료" 문구가 나오지 않습니다..
-
해결됨[포트폴리오] 안드로이드 앱 만들기 - 이론편
본 강의는 로드맵 어디쯤에서 들으면 좋을까요
선생님 로드맵에는 해당 강의가 명시되어있지 않아서,,, 로드맵중 어느 사이에 들어야 이해가 쉬울까요?
-
미해결코틀린 함수형 프로그래밍 - 입문편
[문제집] 6_함수를 응답으로 받기 - 1번문제 오류
안녕하세요, [문제집] 6_함수를 응답으로 받기 1번문제에 오류가 있습니다. createMultiplier 함수 파라미터로 factor가 되어야 하는데 2로 들어와있네요. 문제집 해설 영상 보면 알 수 있지만 잘못되어 있어서 제보드립니다. 감사합니다.
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
Firebase 스토리지 유료화 문제
이미지 업로드 관련 질문드립니다. 2024년 10월 기준으로 Firebase 스토리지 신규 버킷은 사용한 만큼만 지불하는 Blaze 요금제로 사용해야 하는 것으로 변경되었습니다. 신용 카드 등록해야 해서 조심하면 괜찮겠지만 신용카드 등록 없이 무료로 사용할 수 있는 다른 호스팅 서비스는 없을까요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
섹션7 - 파이어베이스 활용 중 에러
안녕하세요.파이어베이스 활용 중 아래와 같이 코틀린 버전이 맞지 않다는 에러가 발생하는데..어떻게 해도 해결이 안됩니다. ㅜㅜ ~~ was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.1.0, expected version is 1.9.0.
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
최신화 된 강의 요청합니다
안녕하세요, 이번에 강의를 구매한 학생입니다. 밑에 글에서 폼도 작성했습니다.강의를 진행하다 보니 강의가 출시된 지 시간이 꽤 지나 대부분의 구현 방식이 현재와 많이 달랐습니다. 특히 Firebase Cloud Messaging이나 CardStackView의 사용법이 강의 내용과 다릅니다. 이로 인해 별도로 혼자 많은 부분을 직접 새로 구현해야 했습니다. 앱은 구현했지만, 이 강좌 수강 목적인 FCM을 이용한 푸시 메시지 보내기가 실제 강의 내용과 많이 달랐습니다.해당 강의에 대한 아쉬움이 남는데 다른 질문글에서 강의를 최신화한다라는 답변을 봤습니다. 최신화 된 강의를 받거나 없으면 환불을 받고자 질문글 남겨요.
-
미해결스프링은 어려워! 코틀린과 Ktor로 백엔드/서버개발 기초정복 (커피주문시스템 개발)
코틀린 코드 보기
위 강사님 화면 에서의 코틀린 파일아래 재 인텔리제이 에서 코틀린 파일강사님 처럼 코틀린 파일의 소스 코드를 보고 싶은데 따로 설정하신 부분이 있을까요? 자바 파일처럼 라이브러리의 구현 코드를 직접 보고 싶네요.
-
미해결입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
Docker Compose 배포 시 Jasypt 암호화된 속성 복호화 문제 해결 방법
문제Docker Compose 환경에서 애플리케이션 배포 후, 데이터베이스에 연결할 때 암호화된 설정값을 복호화하지 못해 연결에 실패하는 문제.원인@EnableEncryptableProperties 어노테이션을 누락한 경우, 애플리케이션이 암호화된 속성을 복호화하지 않고 데이터를 사용하려고 시도합니다. 이로 인해 암호화된 패스워드로 데이터베이스에 접속하려 시도하면서 연결 오류가 발생하고, 컨테이너가 종료됩니다.해결 방법JasyptConfiguration.kt 파일에 @EnableEncryptableProperties 어노테이션을 추가합니다.import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties import org.jasypt.encryption.StringEncryptor import org.jasypt.encryption.pbe.PooledPBEStringEncryptor import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration @Configuration @EnableEncryptableProperties // 추가해주세요. class JasyptConfiguration { @Bean("jasyptStringEncryptor") fun stringEncryptor(): StringEncryptor { val encryptor = PooledPBEStringEncryptor() val config = SimpleStringPBEConfig() config.password = System.getenv("jasypt.encryptor.key") config.algorithm = "PBEWithMD5AndDES" config.setKeyObtentionIterations("1000") config.setPoolSize("1") config.providerName = "SunJCE" config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator") config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator") config.stringOutputType = "base64" encryptor.setConfig(config) return encryptor } } 예제 소스 코드 Github에서 확인하기
-
미해결[2023 코틀린 강의 무료제공] 기초에서 수익 창출까지, 안드로이드 프로그래밍 A-Z
아름다운 joyce님께.. runonuithread 문의
start() 함수에서는 runonuithread를 사용하는데 pause랑 refresh 함수에서는 runonuithread 를 안써도 되는건가요? btn_start.text = getString(R.string.btn_start)이런 부분을 보게되면 메인화면에 텍스트를 변경하는것 같은데요??
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
타입캐스팅 궁금한점 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 코틀린을 처음 접해봤습니다. 질문이 이상하더라도 양해를 구하며 상세히 알려주시면 정말 감사하겠습니다.fun printAgeIfPerson(obf:Any?){val person = obj as? Person......}여기서 질문 드립니다.앞에서 변수 선언을 할 때 val,var을 배웠는데, 매개변수를 선언하는 부분에서 obf:Any? 대신에 val obj:Any?로는 안 쓰나요? 앞에서 모든 변수에는 var/val 을 붙여서 선언한다고 하셨어서요. obj는 매개변수에서 선언된 변수 아닌가요?2.위 코드에서 obj as? Person 의 값이 결과값 또는 null로 나온다고 하셨는데, 그렇게 되면 lvalue인 val person에도 null이 들어갈 여지가 있으므로 val person? 나 val person:Person?으로 선언이 되어야 하는 것 아닌가요?자바와 다른 점이 많아서 헷갈립니다.