묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결2시간으로 끝내는 코루틴
선생님 강의를 듣고 크롤링에 코루틴을 적용해보고 있습니다. 그런데 코루틴이 하나만 나와서 동시처리가 안되는데 혹시 봐주실 수 있나요??
private fun scrapeBookData(browser: Browser, bookLinks: List<String>): List<BookDTO?> { val bestsellers = mutableListOf<BookDTO?>() runBlocking { bookLinks.mapIndexed { i, link -> printWithThread("${i} 시작") val page = browser.newPage() page.navigate(link) printWithThread("${link}에 접속 완료") launch { delay(3000) page.waitForLoadState(LoadState.DOMCONTENTLOADED) val data = page.evaluate( """ () => JSON.stringify({ title: document.querySelector('.prod_title')?.innerText?.trim() || '', author: document.querySelector('.author')?.innerText?.trim() || '', isbn: document.querySelector('#scrollSpyProdInfo .product_detail_area.basic_info table tbody tr:nth-child(1) td')?.innerText?.trim() || '', description: document.querySelector('.intro_bottom')?.innerText?.trim() || '', image: document.querySelector('.portrait_img_box img')?.getAttribute('src') || ''}) """ ).toString() val type = object : TypeToken<Map<String, String>>() {}.type val json: Map<String, String> = Gson().fromJson(data, type) page.close() printWithThread("${link}의 데이터 파싱 완료") var bestseller: BookDTO? = null if (!json.values.all { it.isBlank() }) { bestseller = BookDTO( id = 0L, title = json["title"] ?: "", author = json["author"] ?: "", description = json["description"] ?: "", image = json["image"] ?: "", isbn = json["isbn"] ?: "", ranking = i + 1, favoriteCount = 0 ) } bestsellers.add(bestseller) } } } return bestsellers }[http-nio-8080-exec-1 @coroutine#1] 0 시작 [http-nio-8080-exec-1 @coroutine#1] https://product.kyobobook.co.kr/detail/S000215819502에 접속 완료 [http-nio-8080-exec-1 @coroutine#1] 1 시작 [http-nio-8080-exec-1 @coroutine#1] https://product.kyobobook.co.kr/detail/S000215150862에 접속 완료 [http-nio-8080-exec-1 @coroutine#1] 2 시작 [http-nio-8080-exec-1 @coroutine#1] https://product.kyobobook.co.kr/detail/S000215150863에 접속 완료 [http-nio-8080-exec-1 @coroutine#1] 3 시작 [http-nio-8080-exec-1 @coroutine#1] https://product.kyobobook.co.kr/detail/S000215150882에 접속 완료 [http-nio-8080-exec-1 @coroutine#1] 4 시작 [http-nio-8080-exec-1 @coroutine#1] https://product.kyobobook.co.kr/detail/S000215150895에 접속 완료 [http-nio-8080-exec-1 @coroutine#1] 5 시작 [http-nio-8080-exec-1 @coroutine#1] https://product.kyobobook.co.kr/detail/S000215150892에 접속 완료 [http-nio-8080-exec-1 @coroutine#1] 6 시작 [http-nio-8080-exec-1 @coroutine#1] https://product.kyobobook.co.kr/detail/S000000610612에 접속 완료 [http-nio-8080-exec-1 @coroutine#1] 7 시작 [http-nio-8080-exec-1 @coroutine#1] https://product.kyobobook.co.kr/detail/S000001632467에 접속 완료 [http-nio-8080-exec-1 @coroutine#1] 8 시작DOM객체가 로드되는데까지 시간이 오래 걸려서 페이지들을 한번에 호출하고 DOM객체가 로드되는 시간을 공유하고 객체가 로드되는대로 데이터를 가져오려고 했습니다접속하는건 메인 코루틴이 하게하고 반복문만큼 launch로 코루틴을 만들어서 각 DOM객체가 만들어지면 데이터를 파싱하려고 했으나 delay(3000)때문에 3초마다 메인코루틴이 접속하는 것 같습니다. 하지만 delay(3000)을 없애도 같은 결과가 나옵니다 메인 코루틴이 거의 3초느낌으로 웹페이지에 접속을 합니다 launch를 하나 더 만들어서 페이지를 호출하는것도 코루틴 처리를 하면 launch 바깥부분은 page객체를 받지못해 컴파일 오류가 뜹니다이 상황을 어떻게 돌파해야하는지 감이 잘 안오는데 힌트 주실 수 있을까요? ㅠㅠ
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
7강 데이터바인딩 에러
7강 데이터바인딩 강의 부분에서 데이터 바인딩을 이용해서 회원가입 하는 코드로 바꾸니까 아래와 같은 에러가 뜨는데 혹시 이유를 알 수 있을까요?? 첫번째 방법으로 알려주신 코드에서는 정상 작동합니다. 2025-02-25 15:06:55.135 21860-21860 AndroidRuntime com...mple.login_noticeborad_sample E FATAL EXCEPTION: main Process: com.example.login_noticeborad_sample, PID: 21860 java.lang.IllegalArgumentException: Given String is empty or null at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(com.google.android.gms:play-services-basement@@18.5.0:2) at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(com.google.firebase:firebase-auth@@23.2.0:8) at com.example.login_noticeborad_sample.MainActivity.onCreate$lambda$2(MainActivity.kt:56) at com.example.login_noticeborad_sample.MainActivity.$r8$lambda$DKhI7UPT1Ljx4UCoyoqWCv0Qxw4(Unknown Source:0) at com.example.login_noticeborad_sample.MainActivity$$ExternalSyntheticLambda1.onClick(D8$$SyntheticClass:0) at android.view.View.performClick(View.java:8028) at android.view.View.performClickInternal(View.java:8005) at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0) at android.view.View$PerformClick.run(View.java:31229) at android.os.Handler.handleCallback(Handler.java:959) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loopOnce(Looper.java:232) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8705) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
-
해결됨아이비의 안드로이드 드릴
github 저장소 질문 드립니다 !
private 저장소 멤버로 초대했다고 공지가 떴는데,404 페이지가 뜹니다 ㅠ. 디스코드도 별도의 연락이 오지 않았습니다.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
Unresolved reference: auth 에러
안녕하세요 강사님.제가 파이어베이스 익명로그인 강의를 들으면서 노션에 기록해주신 2024년 이후 유튜브 영상으로 따라하고 강의 영상 그대로 따라했는데 아래와 같이 auth를 참조할 수 없다는 에러가 떠서 몇 시간동안 해결방법 찾으면서 해봤는데 다 안돼서 아예 프로젝트를 다 지우고 처음부터 꼼꼼히 다시 따라해보며 했는데도 안돼서 도움 요청합니다ㅜㅜe: file:///C:/Users/tnghk/AndroidStudioProjects/fb_login_test/app/src/main/java/com/example/fb_login_test/MainActivity.kt:13:37 Unresolved reference: auth 깃허브 공유는 아래 처럼 url로 공유해도 괜찮나요??https://github.com/SuHwanYY/android
-
미해결2시간으로 끝내는 코루틴
7강에 대해서 궁금증이 있는데요
안녕하세요! 강의를 잘보고 있습니다.강의를 보다가 질문이 있는데요,.같은 디스패쳐를 썼을때, 자식 코루틴이 코루틴 스코프를 새로 만드는게 어떤 효과를 기대할 수 있나요? 스코프를 새로 만드는게 어떤 이점이 있는지 잘이해가 안되는 것 같습니다..또 부모코루틴안에서 새로운 코루틴 스코프를 만든 자식 코루틴과 그냥 자식 코루틴 이 2개가 있을 때 동작하는 방식에서도 차이가 있는지 궁금합니다!
-
해결됨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.