묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
@AllArgsConstructor에 대해 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@AllArgsConstructorclass Order{ private final orderId; private OrderStatus orderStatus = Order.ACCEPTED}@AllArgsConstructor 사용 시위의 orderStatus와 같이 초기화된 필드 또한 생성자의 파라미터로 생성되나요?
-
미해결파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편
pip 설치시 에러가 발생합니다.
Cannot install -r requirements.txt (line 5) and requests==2.28.2 because these package versions have conflicting dependencies.에러가 발생합니다. github 저장소의 requirements.txt를 확인해 주시면 감사드리겠습니다. 2.26.0 버전 설치도 문제가 되네요. poetry로 변경하는데도 의존성 문제는 해결이 안되고 에러가 여전히 발생합니다. 파이썬 버전이 3.12인데 혹시 파이썬 버전이 문제가 될까요?파이썬 버전이 현재 3.13이 나왔는데.. 아임포트의 해당 패키지는 2021이 마지막 업데이트였고 이후 업데이트가 없는데... 계속 업데이트되는 django와 python 버전이 문제가 될 수 있는건지도 걱정이 되네요..개별로 하나씩 패키지를 설치하면 requests가 설치되는것 같네요.. 그런데 requirements.txt를 pip으로 설치하면 호환성 에러가 그대로 발생합니다. 물론 poetry로는 개별 설치가 안됩니다. 정말 이상하네요. 혹시 문제가 무엇인지 확인을 하시게 되면 말씀 남겨 주시면 감사드리겠습니다.
-
미해결개발자를 위한 쉬운 도커
leafy 로그인이 되지 않습니다!
강사님 안녕하세요 leafy 애플리케이션 강의 중에 로그인이 되지 않는 문제로 질문 드립니다!프론트엔드, 백엔드, db 컨테이너 모두 실행시켰는데, 백엔드 컨테이너에 로그가 안남고 프론트엔드 컨테이너 로그를 보니 , "POST /api/v1/users/login HTTP/1.1" 404 555 "http://localhost/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/이러한 에러가 발생하는 걸로 보아 프론트엔드 - 백엔드 간 api 요청이 제대로 안됩니다.
-
미해결
플러터 Streambuilder질문
import 'dart:async'; import 'dart:convert'; import 'package:carwash/common/theme/theme.dart'; import 'package:carwash/community/view/community_screen_bak.dart'; import 'package:carwash/firebase/provider/pushRoute_provider.dart'; import 'package:carwash/user/view/splash_screen.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:get/get.dart'; import 'package:go_router/go_router.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:kakao_flutter_sdk_user/kakao_flutter_sdk_user.dart'; import 'common/provider/go_router.dart'; import 'package:firebase_core/firebase_core.dart'; import 'firebase_options.dart'; //! Notification을 위한 StreamController 전역 변수 선언 String pushRoute = ''; final streamController = StreamController<String>(); Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { print("백그라운드 메시지 처리.. } void initializeNotification() async { FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); await flutterLocalNotificationsPlugin .resolvePlatformSpecificImplementation< AndroidFlutterLocalNotificationsPlugin>() ?.createNotificationChannel(const AndroidNotificationChannel( 'high_importance_channel', 'high_importance_notification', importance: Importance.max)); DarwinInitializationSettings iosInitializationSettings = const DarwinInitializationSettings( requestAlertPermission: true, requestBadgePermission: true, requestSoundPermission: true ); // IOSInitializationSettings iosInitializationSettings = // IOSInitializationSettings( // requestAlertPermission: true, // requestBadgePermission: true, // requestSoundPermission: true // ); await flutterLocalNotificationsPlugin.initialize( InitializationSettings( android: AndroidInitializationSettings("@mipmap/ic_launcher"), iOS: iosInitializationSettings ), //앱이 켜져있을때 푸쉬 알림 클릭시 해당 경로로 이동 설정 onDidReceiveNotificationResponse: (NotificationResponse details) async { print('onDidReceiveNotificationResponse - payload: ${details.payload}'); final payload = details.payload ?? ''; final parsedJson = jsonDecode(jsonEncode(payload)); if(payload!=''){ pushRoute = payload; streamController.add(payload); } } ); await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions( alert: true, badge: true, sound: true, ); } void main() async{ SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: SystemUiOverlay.values); await WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); await initializeDateFormatting(); KakaoSdk.init(nativeAppKey: '7d131476e9dd71890bf99ffa94dec12d'); // 이 줄을 runApp 위에 추가한다. //푸쉬알림설정 initializeNotification(); runApp( const ProviderScope(child: _App()) ); } class _App extends ConsumerWidget { const _App({Key? key}) : super(key: key); @override Widget build(BuildContext context,WidgetRef ref) { final router = ref.watch(routerProvider); return MaterialApp.router( // 시스템 설정에 따른 Theme // themeMode: ThemeMode.system, theme: TAppTheme.lightTheme, // darkTheme: TAppTheme.darkTheme, debugShowCheckedModeBanner: false, routerDelegate: router.routerDelegate, routeInformationParser: router.routeInformationParser, routeInformationProvider: router.routeInformationProvider, ); } } 위는 제 메인 함수입니다. onDidReceiveNotification을 통해 넘겨온 정보를 streamcontroller에 저장시켜주고 import 'dart:io'; import 'package:carwash/car/view/carwash_record_screen.dart'; import 'package:carwash/common/layout/default_layout_v2.dart'; import 'package:carwash/common/provider/go_router.dart'; import 'package:carwash/common/view/main/main_screen.dart'; import 'package:carwash/community/view/community_screen.dart'; import 'package:carwash/firebase/provider/pushRoute_provider.dart'; import 'package:carwash/user/provider/user_me_provider.dart'; import 'package:carwash/user/view/profile/profile_screen.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:iconsax/iconsax.dart'; import 'package:permission_handler/permission_handler.dart'; import '../../community/view/community_detail_screen.dart'; import '../../main.dart'; import '../const/colors.dart'; class RootTab extends ConsumerStatefulWidget { static String get routeName => 'home'; const RootTab({Key? key}) : super(key: key); @override ConsumerState<RootTab> createState() => _RootTabState(); } class _RootTabState extends ConsumerState<RootTab> with SingleTickerProviderStateMixin { late TabController _tabController; int _selectIndex = 0; int _nowscreen = 0; var messageString = ""; @override Widget build(BuildContext context) { Stream route = streamController.stream; if(route!=null){ print(route); print('푸쉬 경로'); } return StreamBuilder( stream: route, builder: (BuildContext context,AsyncSnapshot snapshot){ print(snapshot.data); if(snapshot.data!=null){ Navigator.pop(context); } return DefaultLayoutV2( bottomNavagtionBar: Theme( data: ThemeData( splashColor: Colors.transparent, highlightColor: Colors.transparent, ), child: BottomNavigationBar( type: BottomNavigationBarType.fixed, selectedItemColor: PRIMARY_COLOR, unselectedItemColor: Colors.black, elevation: 0, backgroundColor: Colors.white, onTap: (int index) { _tabController.animateTo(index); }, currentIndex: _selectIndex, items: const [ BottomNavigationBarItem(icon: Icon(Iconsax.home), label: '홈'), BottomNavigationBarItem(icon: Icon(Iconsax.message_edit), label: '세차기록'), BottomNavigationBarItem(icon: Icon(Iconsax.messages_3), label: '커뮤니티'), BottomNavigationBarItem(icon: Icon(Iconsax.user), label: '내정보'), ], ), ), child: DefaultTabController( length: 4, child: TabBarView( physics: const NeverScrollableScrollPhysics(), controller: _tabController, children: [ MainScreen(tabController: changeTab), CarWashRecordScreen(), CommunityScreen(nowscreen: _nowscreen), UserProfileScreen(), ], ), ), );} ); } } //각종 권한 요청 Future<void> _requestPermission() async { if (Platform.isIOS) { // iOS에서 알림 권한 요청 코드 final IOSFlutterLocalNotificationsPlugin? iosImplementation = FlutterLocalNotificationsPlugin().resolvePlatformSpecificImplementation<IOSFlutterLocalNotificationsPlugin>(); if (iosImplementation != null) { bool? result = await iosImplementation.requestPermissions( alert: true, badge: true, sound: true, ); if (result != null && result) { print('Notification permission granted.'); } else { print('Notification permission denied.'); } } } else if (Platform.isAndroid) { await Permission.notification.request(); // Android에서 알림 권한 요청 코드 PermissionStatus status = await Permission.notification.status; if (status.isGranted) { // 권한이 허용되었을 때 추가 작업 수행 } else if (status.isDenied || status.isPermanentlyDenied) { // 권한이 거부되었거나 영구적으로 거부된 경우 } else { await Permission.notification.request(); } } }메인화면에서 위와 같이 streambuilder를 통해 메인화면을 호출하고 있습니다.print(snapshot.data); if(snapshot.data!=null){ Navigator.pop(context); } 위의 부분이 푸쉬알림을 클릭했을때 streamController에 값이 넘어가 들어오는 부분인데 저 코드를 실행시키면 항상 setState() or markNeedsBuild() called during build. 과 같은 에러가 뜹니다 언제 화면을 push해줘야할까요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 1번 모의문제 2 질문드립니다
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요소수점 나이를 제거할 때cond = df['age'] == round(df['age'],0) 이 코드로 반올림한 값과 age가 같은 것을 조건으로 걸었는데요 소수점 자리0.5미만인 애들은 제거가 안되지 않았을가요?예시:32 와 32.3 반올림한 값을 비교해도 같다고 나옴
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
함수 오적용 시 데이터 변경되었을 때, 원복 문의
변수 지정을 잘못 하여, 가격 프레임의 데이터가 완전 바뀌었는데다시 이전 데이터로 원복하려면 어떻게 해야하나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
퀴즈 1번 문의
min_price 변수 지정없이 바로df['이벤트가'].fillna(df['이벤트가'].min())로 사용하면 안되던데, 왜그런 건가요?
-
미해결AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
goopang-target-group 에서 unhealthy
안녕하세요 강사님.private-ec2-instance 의 Inbound Rules 에 goopang-alb 의 http 요청을 허용해주었는데, 여전히 goopang-target-group 에서 unhealthy 로 표시됩니다. Health status details 에는 Health checks failed 로만 나옵니다..이전 강의에서 NAT Gateway, Elastic IP 를 비용 문제로 삭제를 했었는데, 이후에 강의 들의 실습을 정상 진행하려면 2개를 삭제하면 안되었나요? 이번 강의도 2개를 삭제해서 문제가 발생한 경우일까요? NAT Instance 는 삭제하지 않았습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
댓글 내용 수정 중 문제 / inputs 리팩토링 중 질문
안녕하세요~ 포트폴리오 과제하다가 질문 생겨 남겨요 첫번째는 댓글 내용 수정할 때 댓글 내용을 지우다가 다 지워지면 수정 전 원래 댓글 내용으로 도로 바뀌는 문젠데요댓글부분 리팩토링 끝마치고나서 발견해서 처음엔 뭘 잘못했나? 했는데 계속 보니 그냥 value에서 defaultValue를 대체하여 작성해주던 아래 부분 때문인 것 같더라고요value={ props.inputs.contents !== "" ? props.inputs.contents : props.el?.contents ?? "" }수정을 시작할 땐 props.inputs.contents === ""이니까 댓글 내용인 props.el?.contents를 불러와서 띄워주고, 지우는 중엔 state가 빈 문자열이 아니니까 props.inputs.contents대로 표시되다가 댓글 내용을 전부 지우면 props.inputs.contents가 다시 빈 문자열이 되어서 바로 기존 댓글 내용을 띄워버려요아예 댓글 내용을 지우고 싶어도 지울수가 없게 되어버리는데 어떻게 바꾸면 될까요? 좀 생각해봤는데 감이 안와서요 혹시 나중에 고치는 내용이 나오나요 두번째는 이번 포트폴리오 과제의 댓글부분 리팩토링 진행하다가 궁금했던 건데요// BoardCommentWrite.container.tsx // ... const onClickWrite = async (): Promise<void> => { // ... // setWriter(""); // setPassword(""); // setContents(""); setInputs( (prev) => Object.fromEntries( Object.keys(prev).map((key) => [key, ""]), ) as typeof prev, ); // ... }댓글 작성 끝날때 writer, password, contents를 비워줄 수 있도록 빈 문자열로 초기화시켜주던 걸 이런식으로 바꾸었는데 리팩토링 마치고 나서 잘 돌아가긴 했는데요위 부분을 너무 어거지로 바꾼 것 같아서 좀 그래요...사실setInputs({ writer: "", password: "", contents: "" })그냥 이렇게 하는게 여기선 가장 좋은 방법인 것 같긴 한데, 더 많은 state들을 묶는 경우도 있다고 생각하면 것도 좀... 그래서요이번 댓글 부분 코드에서는 setInputs({ writer: "", password: "", contents: "" }) 이렇게 하는게 가장 적당할까요? 그리고 더 많은 걸 초기화해야한다고 치면 어떻게 하는게 좋을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
함수별 ()와 [] 구분
함수별로 어떤것은 ()를 사용하고, 어떤것은 []를 사용하는데구분하는 법이 따로 있나요? 매번 헷갈리네요
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
시간 복잡도 O(n)과 O(c)의 차이
안녕하세요, 잘 듣고 있습니다! 0.준비 운동에서의 자료구조 정리 - python 강의 부분의 노션을 보니, 해시테이블의 경우 시간 복잡도가 O(c)로 적혀있던데, O(n)과의 차이가 무엇인가요? O(c)를 구글링 해보았는데 나오지 않아 질문드립니다.
-
해결됨한 입 크기로 잘라먹는 타입스크립트(TypeScript)
tsx src/index.ts 무반응
오류없이 코드는 작동되는데 hello Typescript가 안뜨네요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
알듯말듯하네요
앞에 띄어쓰기도 없고, 몇번을 해봐도 시즌 컬럼이 드랍이 안됩니다.. ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
df.mode()에서 []의 의미
20:14초에서 df['원두'].mode() [0]에서[0] 의 의미가 무엇인가요? [] 안에 다른 숫자를 넣어도 되는가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
PRIMARY KEY와 CLUSTERED INDEX의 차이
CLUSTERED INDEX의 내용을 학습하다 보니, PRIMARY KEY가 단순히 CLUSTERED INDEX 세팅과 NOT NULL, UNIQUE의 옵션 설정을 한번에 해주는 것 뿐이라고 생각이 듭니다..제가 생각하는 것과는 달리 PRIMARY KEY만의 추가적인 차이점이 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-F 재질문드립니다 :)
안녕하세요 선생님 🙂해당 문제 재질문드립니다. 이 글은 아래의 순서로 이루어져있습니다.문제를 풀이한 내용이해되지 않는 부분 설명궁금한 부분이 무엇인지 3 2 1 65 5 23 2 99 10 2위의 예시는 문제의 2번 테스트케이스인데요, 풀이를 해보면 아래와 같습니다. 무게가 2인 가방에 알맞는 1과 2의 무게를 가지고 있는 요소들의 가치를 pq에 넣어 내림차순 정렬하면 99, 65 순으로 가치가 저장되어, 반복문 안에서 result값에 99를 더하고 빼면 65가 남아있다.이미 pq에 65가 저장되어있고, 99는 사용되었기 때문에 무게가 10인 가방에 알맞는 크기인 5의 무게를 가지고 있는 요소의 가치인 23을 pq에 저장하여 내림차순하면 65, 23 순으로 정렬되어있고, 1번을 반복하면 result에 65를 더하고 pq에 23이 남아있는채로 마무리된다. 위와 같이 이해했습니다. 정확히 이해한거 같은데요, 이해가 되지 않는 조건이 하나 있습니다. // 한유태 코드 for (; j < N; j++) { if (C[i] >= vec[j].first) pq.push(vec[j].second); }// 선생님 코드 for (; j < N && C[i] >= vec[j].first; j++) { pq.push(vec[j].second); } 디버깅을 해보니, 제 코드는 vec[j].first가 테스트케이스의 1, 2, 5가 나왔구요, 선생님 코드는 1과 5가 나왔습니다. j++이라는 후위증감연산자에 초점을 맞춰서 분석을 해봤는데요, 저는 이거때문에 문제가 생겼다면 1을 제외한 2와 5가 나와야 한다고 생각합니다. 질문은 아래와 같습니다. 어떻게 해서 2가 스킵된 것인지 궁금합니다.조건문을 for문에 넣지 않고 if문 안에 넣게 되면 어떤 문제가 생기는지 궁금합니다. 테스트케이스는 정답처리가 되어서 오히려 더 헷갈립니다. http://boj.kr/b7ff0aa67f734625837cddfcf08e7abe
-
미해결[C#/.NET 7.0]어서와, WPF는 처음이지?
visual studio 2022버전인데 wpf-ui가 확장관리자에 없습니다
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!마크다운, 단축키를 이용해서 편리하게 글을 작성할 수 있어요.먼저 유사한 질문이 있었는지 검색해보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문상품 양방향
주문상품과 주문은 다대일 양방향인데주문상품과 상품은 다대일 단방향으로 하셨는데첫번째는 양방향으로 설정하신 이유가 뭘까요?
-
미해결[C#/.NET 7.0]어서와, WPF는 처음이지?
확장에 WPF-UI라고 쳐도 안나와요
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!마크다운, 단축키를 이용해서 편리하게 글을 작성할 수 있어요.먼저 유사한 질문이 있었는지 검색해보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨친절한 블렌더 - [LV.0] 입문 필수
렌더링 중 GPU 발열 질문
안녕하세요.오브젝트를 만들고 뷰포트 쉐이딩 Rendered 상태에서 색을 바꾸는 도중에 블랜더 프로그램이 꺼졌습니다. 또한 Rendered 상태에서 Render Properties-View Port-Max sample:1로 맞추고 화면을 돌릴 때도 CPU와 GPU 온도 최대 90도까지 올라갑니다.영상에서 볼 때는 Max sample 1으로 맞출때 Done 나오는게 빠르고 자글자글?거리는게 거의 없었는데 저는 1로 맞춰도 자글저거림이 오래 지속되고 Done이 되는데 4초정도 걸립니다. 3D 프로그램을 돌리는게 처음이라 원래 이런건지 아니면 제 그래픽 카드를 올려야하는 건지 궁금합니다. 저는 RTX 4070Ti를 사용하고 있습니다.강사님이 이 강의를 찍으실 때 사용하신 그래픽 카드 또는 컴퓨터 사양이 어떻게 되는 알려주실 수 있나요?