묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨코틀린 코루틴 완전 정복
코루틴이 멀티스레드의 단점을 해결했다는 부분에 대해 질문드립니다.
안녕하세요? 강의 잘 듣고 있습니다. 코루틴이 멀티스레드의 단점을 해결했다고 말씀해주셨는데요, 관련해서 약간 정리가 되는 듯 안되는듯 하여 질문드립니다.1. 우선 아래의 정리가 맞는지 여쭤보고 싶습니다.멀티 스레딩의 문제점은 결국 blocking이고 이 blocking을 해결하기 위해 코루틴을 도입했음코루틴은 스레드를 점유하는 형태로 동작하므로, 반대로 코루틴이 blocking될때 스레드를 점유하지 않음으로써 다른 코루틴이 해당 스레드를 점유하게 되고 결과적으로 스레드가 blocking되는 일이 없어진다. 2. 그런데 blocking이 되는 현상이 언제발생하나요?강의에서 말씀해주신 내용에 따르면, 다른 스레드 혹은 코루틴의 결과가 필요할 때 blocking되는 상황에 놓여지는 것 같은데 맞을까요?결국 그렇다고하면 이전 코드의 완료를 보장하는, 그러니까 sync한 방식으로 코딩을 해야할 때 스레드가 놀지 않으면서 & completableFuture처럼 콜백지옥이나 예외처리가 어렵지 않게 하는 것이 코루틴의 장점이 맞을까요? 3. 일반적인 IO상황도 위에서 얘기한 blocking이 맞을까요?다르게 말하면, Dispatcher IO에서 [요청을 보내고 기다려야만 하는 상황]에서도 코루틴은 스레드의 점유권을 내려놓음으로써 해당 스레드가 다른 작업을 처리할 수 있게 되는걸까요?예를 들면, A스레드가 코루틴의 DIspatcher IO에 의해 관리되는 IO전용 스레드고 IO스레드는 해당스레드하나만 존재할때(가용가능한 다른 스레드가 없는 상황) c코루틴은 서버에 호출을 보내서 4초가 걸리고, d코루틴은 서버에 호출을 보내서 5초가 걸리면 A스레드에서 c코루틴과 d코루틴을 병렬적으로 처리할 수 있는건가요? 단순히 다른 스레드를 하나 생성해서 두가지 작업을 다 맡겼더라면 해당 스레드에서 4초 + 5초해서 9초가 걸렸을텐데, 코루틴기반의 A스레드에서는 약 5초정도밖에(조금 더 길수는 있겠지만) 안걸리는 게 맞을까요? 4. 3번에 이어지는 질문인데요, 만약 3번이 맞다고 하면 IO작업의 응답이 왔을 때 콜백같은 게 적용이 되어서 Dispatcher에 새로운 작업으로 추가되는걸까요?그러면, IO요청을 보낸 스레드와 IO응답을 처리하게 되는 스레드가 왠지 다를 수도 있을 것 같은데 맞을까요? 3번이 맞다고 하면, 코루틴은 아주 아름다운 것일 것 같은데 굉장히 설레네요 ㅎㅎ좋은 강의 감사합니다.
-
미해결Flutter로 SNS 앱 만들기
섹션11 좋아요 목록화면에서 콘솔에서 FeedModel 데이터를 못가지고 있어요
섹션11 좋아요 목록화면whgdk좋아요.누른 게시글 정보 가져오기좋아요.누른 게시글 정보를 화면에표시진행했구요. 콘솔에서 FeedModel 데이터를 못가지고 있어요
-
미해결Flutter 초급 - Http통신, 상태관리
ListenableBuilder가 안되요..material import 했는데도 자동완성이 안뜨고 빨간줄이 뜨네요 ..
왜그럴까요 ..??
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
실행오류
실행을 할 경우 다음과 같은 메세지가 나옵니다. plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) } android { namespace = "com.seoyoung.databinding_ex" compileSdk = 34 defaultConfig { applicationId = "com.seoyoung.databinding_ex" minSdk = 24 targetSdk = 34 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.material) implementation(libs.androidx.activity) implementation(libs.androidx.constraintlayout) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) }#Thu Nov 14 00:01:26 KST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 위의 파일이 순서대로 build.gradle.kts, gradle-wrapper.properties 입니다. 컴파일 버전과 같은 부분에 대한 에러같은데, 어느 부분을 고쳐야할지 모르겠어서 질문 요청드립니다.
-
해결됨코틀린 코루틴 완전 정복
Dispatcher.IO의 동작원리
안녕하세요! 강의 재밌게 보고 있습니다! ㅎㅎ 코루틴을 공부하면서 항상 의문이던 부분이였는데 Dispatcher.IO가 Http Request 같은 IO 작업에서 어떤 원리로 Dispatcher.Default보다 더 효율적인걸까요? 내부 스레드선언이 더 많아서 Default보다 더 자주 코루틴 컨텍스트 스위칭이 되는걸까요?
-
해결됨[LV1] Jetpack Compose - UI 연습하기
TextField에서 테두리 제거하는 방법이 궁금합니다.
안녕하세요. CoupangEx-3 강의에서 검색 기능을 위해 TextField를 만들었는데, TextField 주위에 있는 회색의 테두리를 어떻게 제거할 수 있는지 궁금합니다.... 인터넷 검색을 해도 동작하지 않거나, 언더라인을 지우는 코드들만 나와서 자료를 못 찾겠습니다. 감사합니다.
-
미해결Flutter로 SNS 앱 만들기
섹션11 좋아요.누른 게시글 정보를 화면에표시에서 Exception 왜 발생합니까
섹션11 좋아요 목록화면whgdk좋아요.누른 게시글 정보 가져오기좋아요.누른 게시글 정보를 화면에표시진행했구요. 터미널에서 FeedModel 데이터를 못가지고 옵니다그런데,Exception 왜 발생합니까
-
해결됨코틀린 코루틴 완전 정복
실무에서 runBlocking 와 CoroutineScope 실무 사용에 대해
실무에서 코루틴을 사용해야할 때runBlocking 으로 코루틴 영역을 생성해야 할지 CoroutineScope로 생성해야 할지 또 어떻게 코루틴을 활용해야할지 감이 살짝 오시 않습니다.물론 호출부의 스레드를 블럭킹해야 한다면 runBlocking 일 것 같지만 보통 이렇게 사용한다라는 지향점이 궁금합니다. 실무에서 사용하기 위해 추천할만한 깃헙 레파지토리나 베스트프랙티스가 있을까요? - 학습 관련 질문을 남겨주세요. 질문을 상세히 작성하면 더 좋습니다.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결Flutter로 SNS 앱 만들기
Storage사용..?
강의에 따라서 Firebase의 storage를 시작하기 하려고 하는데 시작하기 버튼이 없어지고Storage 기능을 사용하려면 프로젝트의 결제 요금제를 업그레이드하세요로 바뀐거 같은데 …? 어떡하죠 클라우드 파이어스토어랑 , authentication은 설정 완료했습니다
-
미해결쉬운 모바일 테스트 자동화 시작하기 : Appium Studio
appium studio download 문의드립니다.
안녕하세요 강의에 appium studio download 방법이 자세히 나와있지 않아 문의드립니다.영상내에서 홈페이지에서 간단하게 신상정보 입력 후 이메일을 통해 다운로드 링크를 받으라고 안내해주셨는데 아래 링크가 맞는지 문의드립니다. https://digital.ai/products/continuous-testing/appium-studio/free-trial/ 위 링크에 정보 입력 후 등록한지 30분가량이 되었지만 메일로 링크는 못받고있는데 보통 얼마나 소요가 될까요?
-
해결됨코틀린 코루틴 완전 정복
Code3-6에서 imageProcessingDispatcher가 inline으로는 동작하지 않는 이유가 궁금합니다
안녕하세요. 기초적인 질문 같지만, 코루틴을 처음 사용하는 입장에서 imageProcessingDispatcher를 인라인으로 넣을 수 없는 이유가 궁금합니다. 직접 테스트했을 때,launch(Dispatchers.Default.limitedParallelism(2)) { //... }와 같은 코드는 예상한대로 동작하지 않고, 머신 processor만큼을 사용하는 것으로 보이는데, 그 이유가 뭘까요?
-
미해결Flutter로 SNS 앱 만들기
10 게시물 화면에서 조금헷갈려서요
2:4610 게시물 화면에서제가 제대로 이해하고 있는지 알려주세요조금헷갈려서요 feedId의미:a라는 유저의 게시물에 b유저가 좋아요. 눌렀다면feedId는 b가 들어가고 feedLists의미:a라는 유저의 게시물에 b,c,d유저가 좋아요. 눌렀다면feedLists는 b,c,d가 들어간다 이렇게 이해하면 되나요
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
classpath가 없는데 어떻게 해야하나요?
classpath 부분이 안보이는데 어떻게 해야하나요??
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
이미지 받아오는 방법?
섹션5 컨텐츠 리스트 만들기 - Glide1 강의에서원래는 이미지 소스를 서버에서 받아와야 한다고 말씀하셨는데 그게 어떤 의미인지 알 수 있을까요????
-
해결됨코틀린 코루틴 완전 정복
공유 스레드 풀 질문드려요!
섹션4. CoroutineDispatcher 에서 미리 정의된 공유스레드 풀 내에 Dispatchers.Defualt 는 프로세서 개수(최하 2), Dispatchers.IO (64or프로세서 개수 중의 큰 수) 의 개수만큼의 스레드가 할당되는건가요? - 학습 관련 질문을 남겨주세요. 질문을 상세히 작성하면 더 좋습니다.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨Flutter 중급 1편 - 클린 아키텍처
Flutter에서 추천하는 Navigator, Router
안녕하세요 여러 레퍼런스 자료를 보던 중 질문이 있어 글을 남깁니다.아래의 페이지를 읽던 도중 Go_Router 패키지를 쓰는게 추천되는 것 같아 문의드립니다.https://docs.flutter.dev/ui/navigation#limitations 사용해보니 Go router를 쓰면 hot reload나 페이지 Refresh를 했을 때 이전에 전달된 파라미터가 초기화되는 이슈가 있더군요. Go Router를 쓰는 게 정말 좋을까요? 아니면 제가 사용을 잘못하고 있는건 아닌지 궁금합니다. 의견 부탁드리겠습니다 감사합니다.
-
미해결프리다(Frida)를 이용한 안드로이드 앱 모의해킹
프리다 12.6.11 설치 오류
(py3) C:\Users\bbsec>pip install frida==12.6.11Collecting frida==12.6.11 Using cached frida-12.6.11.tar.gz (6.6 kB) Preparing metadata (setup.py) ... doneBuilding wheels for collected packages: frida Building wheel for frida (setup.py) ... error error: subprocess-exited-with-error × python setup.py bdist_wheel did not run successfully. │ exit code: 1 ╰─> [74 lines of output] running bdist_wheel running build running build_py creating build\lib.win-amd64-cpython-312\frida copying frida\core.py -> build\lib.win-amd64-cpython-312\frida copying frida\__init__.py -> build\lib.win-amd64-cpython-312\frida running build_ext querying pypi for available prebuilds network query failed looking for prebuilt extension in home directory, i.e. C:\Users\bbsec/frida-12.6.11-py3.12-win-amd64.egg no prebuilt extension found in home directory Traceback (most recent call last): File "<string>", line 2, in <module> File "<pip-setuptools-caller>", line 34, in <module> File "C:\Users\bbsec\AppData\Local\Temp\pip-install-a7nfbzkm\frida_1f1fcba5021e4d38ba236f76104d2b97\setup.py", line 144, in <module> setup( File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\__init__.py", line 117, in setup return distutils.core.setup(**attrs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\core.py", line 183, in setup return run_commands(dist) ^^^^^^^^^^^^^^^^^^ File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\core.py", line 199, in run_commands dist.run_commands() File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\dist.py", line 954, in run_commands self.run_command(cmd) File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\dist.py", line 950, in run_command super().run_command(command) File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\dist.py", line 973, in run_command cmd_obj.run() File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\command\bdist_wheel.py", line 398, in run self.run_command("build") File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\cmd.py", line 316, in run_command self.distribution.run_command(command) File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\dist.py", line 950, in run_command super().run_command(command) File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\dist.py", line 973, in run_command cmd_obj.run() File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\command\build.py", line 135, in run self.run_command(cmd_name) File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\cmd.py", line 316, in run_command self.distribution.run_command(command) File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\dist.py", line 950, in run_command super().run_command(command) File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\dist.py", line 973, in run_command cmd_obj.run() File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\command\build_ext.py", line 98, in run buildext.run(self) File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 359, in run self.build_extensions() File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 476, in build_extensions self._build_extensions_serial() File "C:\Users\bbsec\anaconda3\envs\py3\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 502, in buildextensions_serial self.build_extension(ext) File "C:\Users\bbsec\AppData\Local\Temp\pip-install-a7nfbzkm\frida_1f1fcba5021e4d38ba236f76104d2b97\setup.py", line 130, in build_extension raise network_error File "C:\Users\bbsec\AppData\Local\Temp\pip-install-a7nfbzkm\frida_1f1fcba5021e4d38ba236f76104d2b97\setup.py", line 89, in build_extension urls = client.release_urls("frida", frida_version) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bbsec\anaconda3\envs\py3\Lib\xmlrpc\client.py", line 1122, in call return self.__send(self.__name, args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bbsec\anaconda3\envs\py3\Lib\xmlrpc\client.py", line 1461, in __request response = self.__transport.request( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bbsec\AppData\Local\Temp\pip-install-a7nfbzkm\frida_1f1fcba5021e4d38ba236f76104d2b97\setup.py", line 56, in request return self.parse_response(fp) ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bbsec\anaconda3\envs\py3\Lib\xmlrpc\client.py", line 1351, in parse_response return u.close() ^^^^^^^^^ File "C:\Users\bbsec\anaconda3\envs\py3\Lib\xmlrpc\client.py", line 668, in close raise Fault(**self._stack[0]) xmlrpc.client.Fault: <Fault -32500: 'RuntimeError: PyPI no longer supports the XMLRPC package_releases method. Use JSON or Simple API instead. See https://warehouse.pypa.io/api-reference/xml-rpc.html#deprecated-methods for more information.'> [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for frida Running setup.py clean for fridaFailed to build fridaERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (frida)오류내용입니다.최신버전 프리다랑 강의에서 사용하는 프리다의 버전차이로 인해 오류가 발생하여 강의에 맞는 프리다 버전을 설치하려고 하는데 오류가 발생합니다.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
이 오류는 어떻게 해결하나요??
이게 오류 내용이고이게 MainActivity 코드 부분입니다
-
해결됨Flutter 중급 1편 - 클린 아키텍처
The following ProgressEvent object was thrown resolving an image codec: [object ProgressEvent]
안녕하세요Flutter로 web 페이지를 만들고 이것을 firebase hosting을 통해 배포하고 있습니다.image file을 firebase storage, google drive에 올려두고 URL을 가지고 image.network를 통해 표출하고 있습니다.그런데 실행할 때마다 아래 오류 메세지와 함께 사진이 정상 표출되지 않습니다.======== Exception caught by image resource service ================================================The following ProgressEvent object was thrown resolving an image codec:[object ProgressEvent]When the exception was thrown, this was the stack:Image provider: NetworkImage(....)Image key: NetworkImage(....) Android app으로 실행시킬 때나 구글링에서 나온 flutter run -d chrome --web-renderer html 커맨드로 실행했을때는 정상 표출되는 것을 확인했습니다. 그런데 Firebase로 hosting 히면 계속 안 보이네요..index.html을 수정하면 되다는 얘기가 있던데.... 어떻게 처리하면 되는지 잘 모르겠습니다.혹시 가이드 요청드려도 될까요? 감사합니다. 제가 사용하고 있는 버전들은 다음과 같습니다.Flutter 3.24.0-1.0.pre.348 • channel master • https://github.com/flutter/flutter.gitFramework • revision 85960d24b9 (3 months ago) • 2024-07-30 09:03:00 +0200Engine • revision c58d87d62cTools • Dart 3.6.0 (build 3.6.0-91.0.dev) • DevTools 2.37.1 firebase_core: ^3.6.0 cloud_firestore: ^5.4.4
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
백 버튼 하는중인데 핸드폰에 버튼이 안나와요
제 기기에는 강의처럼 밑에 버튼이 안나오는데 왜 그런걸까요?