안녕하세요. 장고를 활용하여 웹사이트를 만들고 있는 중입니다. 제가 지금 구현 중인 부분은 식단표 페이지로, 모델 단과 데이터 입력 단에서 막혀서 질문을 드립니다. 우선, "menu_list.html" 화면을 아래와 같이 띄우려고 합니다. 이를 위해 모델 구현부터 질문드리겠습니다. 첫번째 질문은 모델 구현에 대한 부분입니다. 최초 모델보다 수정 모델이 더 바람직한 방향인지 궁금합니다. #최초 model class Menu(models.Model): author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='author_menu') date = models.DateField(unique=True) breakfast = models.TextField() lunch = models.TextField() dinner = models.TextField() voter = models.ManyToManyField(User, related_name='voter_menu') def __str__(self): return self.breakfast #수정 model TYPE_CHOICES = ( ("아침", "아침"), ("브런치", "브런치"), ("점심", "점심"), ("저녁", "저녁"), ) class Dish(models.Model): dish = models.CharField(max_length=10) voter = models.ManyToManyField(User) def __str__(self): return self.dish class Menu(models.Model): type = models.CharField(choices=TYPE_CHOICES, max_length=3) date = models.DateField() dish = models.ManyToManyField(Dish) 최초 모델은 아무런 고민 없이 TextField로 식사 정보를 모두 받아왔으나 성능 측면에서 비효율적일 수 있다는 생각이 들어 고민을 하고 수정하였습니다. 수정된 설계가 더 바람직한 것인지 의문이 들어 질문드립니다. 더 바람직한 방향이 있다면 가르쳐주세요!! 두번째 질문은, 수정된 model을 통해 값을 받아오는 것이 어려워서 질문드립니다. #forms.py TYPE_CHOICES = ( ("아침", "아침"), ("브런치", "브런치"), ("점심", "점심"), ("저녁", "저녁"), ) class DishMenuForm(forms.Form): date = forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}, format="%Y-%M-%d"),label='date') type = forms.ChoiceField(choices=TYPE_CHOICES, label='type') dish = forms.CharField(label='dish', max_length=10) def save(self, commit=True): menu = Menu(**self.cleaned_data) if commit: menu.save() return menu #menu_form.html {% extends 'layout.html' %} {% load static %} {% block content %} <script src ="{% static 'js/menu.js' %}"></script> <div class="container"> <h5 class="my-3 border-bottom pb-2">메뉴 입력하기</h5> <form method="post"> {% csrf_token %} <div id ="dishMenuForm"> <div class="mb-3"> <label for="date" class="form-label">날짜</label> <input type="date" class="form-control" name="date" id="date" width='50px'> </div> <div class="mb-3"> <label for="breakfast" class="form-label">아침</label> <select name='type' id ='type' class='form-control'> <option value="">시간대를 정해주세요.</option> <option value='아침'>아침</option> <option value='점심'>점심</option> <option value='저녁'>저녁</option> <option value='브런치'>브런치</option> </select> </div> <div class="mb-3"> <label for="dish" class="form-label">요리</label> <textarea class="form-control" name="dish[]" id="dish" rows="1"></textarea> </div> <div class="mb-3"> <label for="dish" class="form-label">요리</label> <textarea class="form-control" name="dish[]" id="dish" rows="1"></textarea> </div> <div class="mb-3"> <label for="dish" class="form-label">요리</label> <textarea class="form-control" name="dish[]" id="dish" rows="1"></textarea> </div> </div> <input type='submit' value='입력' /> </form> </div> {% endblock %} 사진처럼 form.html 화면에서 dish의 form들을 동적으로 추가하여 저장하고 싶습니다. 템플릿 파일에서 dish의 name을 배열로 받아와 view 단에서 반복문을 사용하여 데이터를 저장할 수 있는지 궁금합니다. 성능을 위해 매번 데이터를 저장할때마다 dish 테이블에 이미 값이 있는지를 확인하고 저장해야하는 것인지, 데이터를 저장할때마다 분기를 돈다면 성능에 더 악영향을 미칠 것 같은데 어떤 방향으로 개발해야 하는지 궁금합니다. 이런 식의 방향이 맞는지 아니면 더 잘 쓰이는 방법이 있는지 알려주세요.. 질문이 길고 장황하지만 답변 부탁드립니다.
FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'aniwalk'. > Could not determine the dependencies of null. > Could not resolve all task dependencies for configuration ':classpath'. > Could not find org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.15. Searched in the following locations: - https://dl.google.com/dl/android/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.1.15/kotlin-gradle-plugin-1.1.15.pom - https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.1.15/kotlin-gradle-plugin-1.1.15.pom Required by: project : * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 2s error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup . Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081 FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'aniwalk'. > Could not determine the dependencies of null. > Could not resolve all task dependencies for configuration ':classpath'. > Could not find org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.15. Searched in the following locations: - https://dl.google.com/dl/android/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.1.15/kotlin-gradle-plugin-1.1.15.pom - https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.1.15/kotlin-gradle-plugin-1.1.15.pom Required by: project : * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 2s at makeError (/Users/junghanma/dev/aniwalk/node_modules/execa/index.js:174:9) at /Users/junghanma/dev/aniwalk/node_modules/execa/index.js:278:16 at processTicksAndRejections (node:internal/process/task_queues:96:5) at async runOnAllDevices (/Users/junghanma/dev/aniwalk/node_modules/@react-native-community/cli-platform-android/build/commands/runAndroid/runOnAllDevices.js:109:5) at async Command.handleAction (/Users/junghanma/dev/aniwalk/node_modules/@react-native-community/cli/build/index.js:142:9) info Run CLI with --verbose flag for more details. ✘ ~/dev/aniwalk master ±✚ cd android ~/dev/aniwalk/android master ±✚ ./gradlew clean Starting a Gradle Daemon (subsequent builds will be faster) > Configure project :react-native-gradle-plugin e: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/build.gradle.kts:10:49: Cannot access 'serviceOf': it is internal in 'org.gradle.configurationcache.extensions' e: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/build.gradle.kts:44:11: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: internal inline fun <reified T : Any> TaskInternal.serviceOf(): TypeVariable(T) defined in org.gradle.configurationcache.extensions FAILURE: Build failed with an exception. * Where: Build file '/Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/build.gradle.kts' line: 10 * What went wrong: Script compilation errors: Line 10: import org.gradle.configurationcache.extensions.serviceOf ^ Cannot access 'serviceOf': it is internal in 'org.gradle.configurationcache.extensions' Line 44: serviceOf<ModuleRegistry>() ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: internal inline fun <reified T : Any> TaskInternal.serviceOf(): TypeVariable(T) defined in org.gradle.configurationcache.extensions 2 errors * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 25s ✘ ~/dev/aniwalk/android master ±✚ ./gradlew clean > Task :react-native-gradle-plugin:compileKotlin w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt: (10, 37): 'BaseVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt: (119, 30): 'BaseVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt: (135, 26): 'BaseVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt: (157, 32): 'BaseVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt: (163, 31): 'BaseVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt: (171, 36): 'BaseVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt: (114, 48): 'reactRoot: DirectoryProperty' is deprecated. reactRoot was confusing and has been replace with root to point to your root project and reactNativeDir to point to the folder of the react-native NPM package w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt: (10, 37): 'ApplicationVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt: (11, 37): 'BaseVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt: (12, 37): 'LibraryVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt: (27, 51): 'BaseVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt: (130, 12): 'ApplicationVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt: (131, 12): 'LibraryVariant' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt: (251, 14): 'BaseVariant' is deprecated. Deprecated in Java > Configure project :react-native-seoul_kakao-login :react-native-seoul_kakao-login:android.kotlin using custom value: 1.5.10 :react-native-seoul_kakao-login:kakao.sdk using default value: 2.11.1 :react-native-seoul_kakao-login:kakao.sdk using default value: 2.11.1 :react-native-seoul_kakao-login:kakao.sdk using default value: 2.11.1 :react-native-seoul_kakao-login package.json found at /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/package.json :react-native-seoul_kakao-login:version set from package.json: 5.2.3 (5,2,3 - 5002003) :react-native-seoul_kakao-login:android.compileSdk using custom value: 31 :react-native-seoul_kakao-login:android.targetSdk using custom value: 31 :react-native-seoul_kakao-login:android.minSdk using custom value: 21 :react-native-seoul_kakao-login:reactNativeAndroidDir /Users/junghanma/dev/aniwalk/node_modules/react-native/android Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.5.1/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 32s 9 actionable tasks: 9 executed ~/dev/aniwalk/android master ±✚ npm run ad > aniwalk@0.0.1 ad > react-native run-android info Starting JS server... info Launching emulator... info Successfully launched emulator. info Installing the app... > Configure project :react-native-seoul_kakao-login :react-native-seoul_kakao-login:android.kotlin using custom value: 1.5.10 :react-native-seoul_kakao-login:kakao.sdk using default value: 2.11.1 :react-native-seoul_kakao-login:kakao.sdk using default value: 2.11.1 :react-native-seoul_kakao-login:kakao.sdk using default value: 2.11.1 :react-native-seoul_kakao-login package.json found at /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/package.json :react-native-seoul_kakao-login:version set from package.json: 5.2.3 (5,2,3 - 5002003) :react-native-seoul_kakao-login:android.compileSdk using custom value: 31 :react-native-seoul_kakao-login:android.targetSdk using custom value: 31 :react-native-seoul_kakao-login:android.minSdk using custom value: 21 :react-native-seoul_kakao-login:reactNativeAndroidDir /Users/junghanma/dev/aniwalk/node_modules/react-native/android > Task :react-native-safe-area-context:compileDebugKotlin w: /Users/junghanma/dev/aniwalk/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt: (50, 23): 'getter for uiImplementation: UIImplementation!' is deprecated. Deprecated in Java > Task :react-native-screens:compileDebugKotlin w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/Screen.kt: (77, 22): 'constructor GuardedRunnable(ReactContext!)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt: (64, 28): 'setter for targetElevation: Float' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt: (120, 28): 'setter for targetElevation: Float' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt: (21, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt: (69, 47): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt: (70, 15): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt: (89, 34): 'getter for systemWindowInsetTop: Int' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt: (237, 29): 'setColorFilter(Int, PorterDuff.Mode): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt: (63, 22): 'constructor GuardedRunnable(ReactContext!)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt: (108, 22): 'constructor GuardedRunnable(ReactContext!)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt: (117, 43): 'replaceSystemWindowInsets(Int, Int, Int, Int): WindowInsetsCompat' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt: (118, 47): 'getter for systemWindowInsetLeft: Int' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt: (120, 47): 'getter for systemWindowInsetRight: Int' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt: (121, 47): 'getter for systemWindowInsetBottom: Int' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt: (9, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt: (122, 47): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt: (123, 15): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt: (5, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt: (7, 51): 'constructor Event<T : Event<(raw) Event<*>>!>(Int)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt: (17, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt: (18, 25): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt: (5, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt: (7, 40): 'constructor Event<T : Event<(raw) Event<*>>!>(Int)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt: (13, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt: (14, 25): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt: (5, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt: (7, 43): 'constructor Event<T : Event<(raw) Event<*>>!>(Int)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt: (13, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt: (14, 25): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt: (5, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt: (7, 43): 'constructor Event<T : Event<(raw) Event<*>>!>(Int)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt: (13, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt: (17, 25): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt: (5, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt: (13, 5): 'constructor Event<T : Event<(raw) Event<*>>!>(Int)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt: (22, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt: (27, 25): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt: (5, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt: (7, 44): 'constructor Event<T : Event<(raw) Event<*>>!>(Int)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt: (13, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt: (14, 25): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt: (5, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt: (7, 47): 'constructor Event<T : Event<(raw) Event<*>>!>(Int)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt: (13, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt: (14, 25): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt: (5, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt: (7, 52): 'constructor Event<T : Event<(raw) Event<*>>!>(Int)' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt: (13, 44): 'RCTEventEmitter' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt: (14, 25): 'receiveEvent(Int, String!, WritableMap?): Unit' is deprecated. Deprecated in Java w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt: (7, 42): Parameter 'width' is never used w: /Users/junghanma/dev/aniwalk/node_modules/react-native-screens/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt: (7, 54): Parameter 'height' is never used > Task :react-native-seoul_kakao-login:compileDebugKotlin w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (15, 27): Type mismatch: inferred type is Date? but Date was expected w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (94, 23): There is more than one label with such a name in this scope w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (99, 23): There is more than one label with such a name in this scope w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (102, 17): Condition 'token != null' is always 'true' w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (118, 23): There is more than one label with such a name in this scope w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (128, 23): There is more than one label with such a name in this scope w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (131, 13): The expression is unused w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (140, 23): There is more than one label with such a name in this scope w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (143, 13): The expression is unused w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (188, 53): Unnecessary non-null assertion (!!) on a non-null receiver of type Account w: /Users/junghanma/dev/aniwalk/node_modules/@react-native-seoul/kakao-login/android/src/main/java/com/dooboolab/kakaologins/RNKakaoLoginsModule.kt: (194, 56): Unnecessary non-null assertion (!!) on a non-null receiver of type Account > Task :app:processDebugResources FAILED Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.5.1/userguide/command_line_interface.html#sec:command_line_warnings 87 actionable tasks: 82 executed, 5 up-to-date FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':app:processDebugResources'. > A failure occurred while executing com.android.build .gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction > Android resource linking failed /Users/junghanma/dev/aniwalk/android/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml:14: error: unexpected element <activity> found in <manifest>. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: java.lang.StackOverflowError (no error message) * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. ============================================================================== * Get more help at https://help.gradle.org BUILD FAILED in 1m 33s error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup . Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081 FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':app:processDebugResources'. > A failure occurred while executing com.android.build .gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction > Android resource linking failed /Users/junghanma/dev/aniwalk/android/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml:14: error: unexpected element <activity> found in <manifest>. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: java.lang.StackOverflowError (no error message) * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. ============================================================================== * Get more help at https://help.gradle.org BUILD FAILED in 1m 33s at makeError (/Users/junghanma/dev/aniwalk/node_modules/execa/index.js:174:9) at /Users/junghanma/dev/aniwalk/node_modules/execa/index.js:278:16 at processTicksAndRejections (node:internal/process/task_queues:96:5) at async runOnAllDevices (/Users/junghanma/dev/aniwalk/node_modules/@react-native-community/cli-platform-android/build/commands/runAndroid/runOnAllDevices.js:109:5) at async Command.handleAction (/Users/junghanma/dev/aniwalk/node_modules/@react-native-community/cli/build/index.js:142:9) 에러내용 ..... 패키지.js { "name": "aniwalk", "version": "0.0.1", "private": true, "scripts": { "ad": "react-native run-android", "ios": "react-native run-ios", "start": "react-native start", "test": "jest", "lint": "eslint . --ext .js,.jsx,.ts,.tsx" }, "dependencies": { "@react-native-seoul/kakao-login": "^5.2.3", "@react-navigation/bottom-tabs": "^6.0.9", "@react-navigation/native": "^6.0.6", "@react-navigation/native-stack": "^6.2.5", "react": "18.1.0", "react-native": "0.70.1", "react-native-keyboard-aware-scroll-view": "^0.9.5", "react-native-responsive-screen": "^1.4.2", "react-native-safe-area-context": "^4.4.1", "react-native-screens": "^3.17.0", "react-native-swipe-list-view": "^3.2.9" }, "devDependencies": { "@babel/core": "^7.12.9", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^2.0.0", "@tsconfig/react-native": "^2.0.2", "@types/jest": "^26.0.23", "@types/react-native": "^0.70.0", "@types/react-test-renderer": "^18.0.0", "@typescript-eslint/eslint-plugin": "^5.37.0", "@typescript-eslint/parser": "^5.37.0", "babel-jest": "^26.6.3", "eslint": "^7.32.0", "jest": "^26.6.3", "metro-react-native-babel-preset": "^0.72.1", "react-test-renderer": "18.1.0", "typescript": "^4.8.3" }, "jest": { "preset": "react-native", "moduleFileExtensions": [ "ts", "tsx", "js", "jsx", "json", "node" ] } } 그리들 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext { buildToolsVersion = "31.0.0" minSdkVersion = 21 compileSdkVersion = 31 targetSdkVersion = 31 kotlinVersion = '1.5.10' if (System.properties['os.arch'] == "aarch64") { // For M1 Users we need to use the NDK 24 which added support for aarch64 ndkVersion = "24.0.8215888" } else { // Otherwise we default to the side-by-side NDK version from AGP. ndkVersion = "21.4.7075529" } } repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:7.2.1") classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" classpath("com.facebook.react:react-native-gradle-plugin") classpath("de.undercouch:gradle-download-task:5.0.1") // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url("$rootDir/../node_modules/react-native/android") } maven { // Android JSC is installed from npm url("$rootDir/../node_modules/jsc-android/dist") } mavenCentral { // We don't want to fetch react-native from Maven Central as there are // older versions over there. content { excludeGroup "com.facebook.react" } } google() maven { url 'https://www.jitpack.io' } } } 그리들 프로퍼티스 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 노드버전 v16.13.0 이렇게해서 안드로이드 셋팅하는데 자꾸 코틀린모듈을 번들링되는게없다 뭐이런식으로 뜨길래 1.3.41 , 1.5.10 1.6.2 버전다바꿔보고 빌드햇는데 안되네요... 도와주세여... rn 0.70에 코틀린버전이 호환되는게 없어서 그런건지 vscode 문제에는 : Top-level build file where you can add configuration options common to all sub-projects/modules.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Order result = Optional.ofNullable(query .selectFrom(order) .innerJoin(order.orderProduct, orderProduct).fetchJoin() .leftJoin(orderProduct.review, review).fetchJoin() .innerJoin(orderProduct.product, product).fetchJoin() .where(order.id.eq(orderId)) .fetchOne()).orElseThrow(() -> new IllegalArgumentException("존재하지 않는 주문번호 입니다.")); db에 접근하여 결과가 없을 경우 IllegalArgumentException을 던지도록 하였고 @ControllerAdvice public class GeneralExceptionHandler { ... @ExceptionHandler({ IllegalArgumentException.class, IllegalStateException.class, ConstraintViolationException.class, NoSuchElementException.class, MethodArgumentNotValidException.class //valid 검증 exception }) public ResponseEntity<?> handleIllegalArgumentException(Exception e) { log.info("Bad request exception occurred: {}", e.getMessage(), e); } ExceptionHandler에서 IllegalArgument를 잡도록 한뒤 일부러 존재하지 않는 값으로 조회를 하여 오류를 발생 시켰습니다. 정상적인 경우라면 당연히 ExceptionHandler에서 이를 잡아서 처리를 해야하지만 이상하게 예외가 handler 에서 잡히지가 않아 임의로 컨트롤러에서 이와 같이 잡은 후에 로그를 확인하였습니다. @GetMapping("{id}") public Result<OrderResponse> findById(@PathVariable Long id) { try{ return success(orderService.findById(id)); } catch (Exception e) { log.info("exception {}", e.getClass()); } return null; } 2022-10-18 00:29:26.063 INFO 41493 --- [nio-8080-exec-2] c.g.o.orders.Controller.OrderController : exception class org.springframework.dao.InvalidDataAccessApiUsageException 로그 출력 결과 위와 같은 InvalidDataAccessApiUsageException 이 출력이 되었는데 dispatcher servlet에서 자동으로 exception을 바꿔주나요? Order result = Optional.ofNullable(query .selectFrom(order) .innerJoin(order.orderProduct, orderProduct).fetchJoin() .leftJoin(orderProduct.review, review).fetchJoin() .innerJoin(orderProduct.product, product).fetchJoin() .where(order.id.eq(orderId)) .fetchOne()).orElseThrow(() -> new NotFoundException("존재하지 않는 주문번호 입니다.")); 쿼리 조회하는 부분이 이해가 가질 않아 제가 임의로 만든 NotFoundException 으로 바꿔서 예외를 던질경우 정상적으로 ExceptionHandler에서 처리가 진행됩니다.커스텀 예외를 제외하고 Illegal로 시작하는 일부 예외들에 관하여 InvalidDataAccessApiUsageException 으로 바뀌게 되는데 이 부분이 이해가 잘 가지 않습니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
안녕하세요, 처음보는 문법이 궁금해 질문드립니다. "그래프 기초" 강의에서 12:19 부분에 for (int vertex : adjacent[0]) 라는 문구가 있는데 여기서 for문이 어떻게 동작하는지 모르겠습니다. :이 뭔지도 잘 모르겠습니다.. 설명해주시면 감사하겠습니다.!
앞선 강의를 들으니 max를 이용해서 문제가 풀렸는데, 2중 for문을 이용한 경우 결과가 안나와요... 조건은 만족하는데 i일때 j보다 큰 모든 경우에 푸쉬 되거나 카운팅이 되는데, 한번만 호출 되게 하는 방법이 궁금합니다. function solution(arr) { let answer = []; answer.push(arr[0]); for (let i = 1; i < arr.length; i++) { for (let j = 0; j < i; j++) { if (arr[i] > arr[j]) { answer.push(arr[i]); } } } return answer; } let arr = [130, 135, 148, 140, 145, 150, 150, 153]; console.log(solution(arr));
[질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예] 3. 질문 잘하기 법을 읽어보셨나요? [예] (https://www.inflearn.com/blogs/1719) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. [질문 하기] 강의 1분10초와 2분6초에... 파드가 죽어도 레이블을 그대로 가지고 올라온다고 하셨는데, 디플로이먼트가 아닌 그냥 파드가 죽었는데 어떻게 다시 올라온다는 것인지 이해가 되지 않습니다. 기준 파드(리더파드)가 살아있는 상태에서 그 리더를 따라 생성되게끔 디플로이먼트를 생성하면, 거기서 생성되는 파드들은 기준 파드가 있는 노드에 따라 생긴다는 것은 이해를 했는데, 애초에 기준 파드는 디플로이먼트가 아니라 일반 파드인데, 어떻게 죽어도 다시 올라온다는 것인지 이해가 되지 않습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님. 덕분에 너무 재미를 느끼며 강의를 수강하고있습니다. 다름이 아니라 exec command 관련 내용을 듣고 같은 명령어를 Exec command에 기입을 하였는데 강의에서 말씀하신대로 images, ps war 파일을 다 제거하고 나서 빌드를 하게 되면output에 다음과 같은 Error가 발생합니다. 혹시 어떠한 이유때문에 발생하는지 에러를 찾을 수 있는 방향성을 제시해 주실 수 있을까요..?
안녕하세요. 정성을 다해 만들어주신 강의 잘 듣고 있습니다. kafka 관련 CRUD 문의 드립니다. DB CRUD관련 이벤트를 모두 수집하여 처리하고자 합니다. kafka 및 kafka debezium 플러그인을 활용하여 아래와 같은 DB CRUD 관련 Topic 정보를 수집 하였습니다. ["payload": { "before": { "id": 22, "name": "chp" }, ...중략 ] 이러한 CRUD Topic정보를 DB 에 적용하려면 sinkconnector 를 활용하는 방법외에 어떠한 다른 방법이 있을까요? 해당 json Topic을 java 에서 파싱하여 응용프로그램 레벨에서 DB를 처리해야 하는건지 다른 처리 패턴이나 솔루션 혹은 플러그인이 있을까요? 해외사이트 구글링을 해봐도 debezium을 통해 CRUD Topic 정보를 수집하는 것 까지만 나오고 이후 처리에 대해서는 어떠한 내용도 없어서 문의드리게 되었습니다.
강의와 같은 뷰 템플릿에서 보내는 post요청입니다. 기존 Post /study/path 의 경우 @PostMapping("/study/path") public String updateStudyPath(@CurrentUser Account account, @PathVariable String path, @RequestParam String newPath, Model model, RedirectAttributes attributes) { Study study = studyService.getStudyToUpdateStatus(account, path); if (!studyService.isValidPath(newPath)) { model.addAttribute(account); model.addAttribute(study); model.addAttribute("studyPathError", "해당 스터디 경로는 사용할 수 없습니다. 다른 값을 입력하세요."); return "study/settings/study"; } studyService.updateStudyPath(study, newPath); attributes.addFlashAttribute("message", "스터디 경로를 수정했습니다"); return "redirect:/study/" + getPath(newPath) + "/settings/study"; } 같은 이름의 경로 요청시, 변경이 불가한 메세지를 나타내고, 페이지는 /study//settings/study를 나타내지만 주소창은 post요청의 영향으로 추가적으로 path가 더 붙는 것을 확인했습니다. 이상태에서 의도적일순 있으나 URL자체로 요청을 보내는 경우 /path가 붙은 Get요청을 하게되면 아래와 같은 화면을 보게 됩니다. 따라서 해당 문제점을 해결하기 위해 아래 처럼 변경하였습니다. @PostMapping("/study/path") public String updateStudyPath(@CurrentUser Account account, @PathVariable String path, @RequestParam String newPath, Model model, RedirectAttributes attributes) { Study study = studyService.getStudyToUpdateStatus(account, path); if (!studyService.isValidPath(newPath)) { model.addAttribute(account); model.addAttribute(study); attributes.addFlashAttribute("studyPathError", "해당 스터디 경로는 사용할 수 없습니다. 다른 값을 입력하세요."); return "redirect:/study/" + getPath(newPath) + "/settings/study"; } studyService.updateStudyPath(study, newPath); attributes.addFlashAttribute("message", "스터디 경로를 수정했습니다"); return "redirect:/study/" + getPath(newPath) + "/settings/study"; } 기존의 model에 추가한 attribute는 리다이렉트 요청시 없어지기 때문에 메세지 출력에 필요한 studyPathError는 FlashAttirbute로 변경해주었습니다. 잘못된 경로변경 요청시 결과입니다. redirect 결과로 /path가 붙어 나오지 않음 이 경험으로 위와 같은 상황에서는 Post요청으로 Redirect가 더 안전(?)하다고 생각했습니다. 하지만 매번 Redirect시킬수는 없을 것 같은데 존재하지 않는 API의 경우에 기준 URL로 리다이렉트 시키나요? 예를 들자면 /study/path/settings/study/path 의 경우에 /study/path/settings처럼 예상되는 url들의 경우 getMapping으로 다중처리하는 걸까요?
안녕하세요 강사님 KakaoUserInfoResponseDto 를 작성하실 때 KakaoAccount를 스태틱 이너 클래스로 만드신 이유가 뭔지 알 수 있을까요? 클래스를 새로 생성하는 것과 그렇지 않고 스태틱 이너 클래스로 생성하는 것 두 가지에 대한 장점과 단점이 궁금합니다.
Southwest Airlines Booking Festive Season. The 2022 low fare search of this airline is a planning tool for budgeted trips. If you wish to reserve a flight with this airline in the next month or check the lowest fares, use the low fare search. You may also look at all of your low-cost return and departing options using the Southwest Airlines Low Fares Calendar . If you utilize this calendar, prices will change often, so keep an eye out for the best deal. Always remember that the low fare finder is designed for those people who are willing to sacrifice certain parts of their ticket to save money. These include leaving dates and flight classes.