묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결CAN 통신 - 자동차 신입이 알아야 할 모든 것
통신 타이밍을 비교하는 시점
통신 타이밍이 맞지 않을 경우 Tseg1, Tseg2을 조절하여 타이밍을 맞춘다고 하셨는데자신의 보내는 타이밍이 정확한지 확인하려면다른 ECU에서 데이터가 전송되어야타이밍 비교가 가능할 것이라고 생각합니다. 제가 알기로는 여러개의 ECU 중하나의 ECU만 데이터 전송이 가능하나고 앍고 있고예외 적인 상황읜 CAN ID를 비교하는 arbitration 영역에동시에 보낼 수 있다고 알고 있습니다. 그러면 arbitration 영역에서 타이밍을 비교한 후Tseg1, Tseg2을 이용해 타이밍을 맞추는 것인지확인 부탁 드립니다. 간단하게 얘기해서 이 통신 타이밍을 비교하는 시점이arbitration 영역에서 하는지 Data 영역에서 하는지궁금합니다!
-
미해결개발자를 위한 쉬운 도커
도커 데스크탑을 설치하고 실행시킬려니 WSL오류가 나는데 ...
window11에서 도커를 설치하고 실행할려니 위의 에러가 나옵니다. 어떻게 해결해야 될지 몰라서 문의드립니다.
-
미해결[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
goRouter
안녕하세요현재 get으로 toNamed를 사용해서화면이동을 하고있는데goRouter와 어떤 차이점이 있을까요? 공수를 들여서 변경해야 할 가치가 있는걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-H 맵 관련 질문있습니다 :)
안녕하세요 선생님 🙂 시간복잡도가 굉장히 타이트해서 이분탐색으로 푸는 문제인 것은 알고 있으나, 테스트 겸 map으로 다시 풀어보다가 이해가 되지 않는 부분이 있어서 질문드립니다. 30번째 줄의 mp[vecA[i]]++; 이 부분때문에 틀리는건데요, mp[vecA[i]] = 1;이라고 하면 맞더라구요. 둘이 연산 차이가 없어보이고, 테스트케이스도 정상적으로 출력이 되는데요, 제가 놓치고 있는 부분이 있을까요? http://boj.kr/076e9301948a40c9afb2262e5e4c26c0
-
미해결Practical Testing: 실용적인 테스트 가이드
TDD 를 적용하면 구현하려는 기능에 필요한 객체들을 설계하고 들어가야 하는건가요?
안녕하세요 강사님. 요즘 질문을 많이해서 대단히 죄송하게 생각하고 있습니다! 우선 질문 계기를 들어보시죠. [질문을 하게 된 이유]처음에 최소한으로 돌아가는 쓰레기 코드를 만들었고, 리팩토링으로 객체를 쪼개며 단위 테스트를 작성하고 있었습니다. 근데 갑자기 이런 고민이 들더군요. "TDD 를 적용하려면 어떻게 해야하지?" 하지만 아무리 생각을 해봐도 TDD 를 적용하려면 "쓰레기를 만들고, 여러 객체들로 쪼개 개선해나가는" 형태의 개발방식에은 사용할 수 없다는 결론에 도달하게 되었습니다. 애초에 TDD 를 적용하려면 "처음부터 구현하려는 기능에 필요한 객체들을 생각하고 만들어나가야 하는건가?" 아니 이러면 너무 피곤하지 않나? 라는 생각이 들었습니다. [본격적인 질문][질문 1]처음부터 돌아가는 쓰레기 코드(하나의 클래스에 몰빵) 를 만들고, 리팩토링을 통해 여러 객체로 책임을 분산시키는 형태의 개발 방식은 애초에 TDD 를 적용할 수 없는 것인가요? (TDD 를 적용하면 애초에 스파게티 코드가 나올 수 없는건가요?) [질문 2]TDD 가 애초에 구현하려는 기능에 필요한 객체들을 처음부터 설계하고 들어가는 방식인건가요? [질문 3]TDD 를 적용하려면 구현하는 기능에 필요한 도메인 지식들을 완벽하게 숙지하고 들어가야 코드를 수정하는 일이 별로 없을거라고 생각됩니다. 그렇지 않으면 "일단 쓰레기 구현 -> 리팩토링 -> 테스트" 개발 방식보다 시간이 훨씬 오래 걸릴거라고 생각하는데.. 강사님 생각은 어떠신지 궁금합니다. [질문 4]TDD 를 적용하면 코드 품질이 좋을 수 밖에 없는 이유가 [질문 2] 때문인가요? (한국말 너무 어렵습니다..)
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
최신화하기
#include <iostream> #include <ctime> using namespace std; struct TM { int tm_year; }; int main() { time_t timer = time(NULL); struct tm* t = localtime(&timer); int yeardb, year = t->tm_year + 1900, age; char Id[20]; cin >> Id; // 주민번호 입력 // 성별 계산 if (Id[7] == '1' || Id[7] == '2') { yeardb = 1900 + ((Id[0]-48) * 10 + (Id[1]-48)); // 특정 문자열의 문자숫자를 숫자로 변환하기 위해서는 '0' 문자0의 아스키 십진수인 48을 뺀다. } else { yeardb = 2000 + ((Id[0]-48) * 10 + (Id[1]-48)); } age = year - yeardb + 1; printf("%d ", age); if (Id[7] == '1' || Id[7] == '3') printf("M\n"); else printf("W\n"); return 0; }24년 기준 53세
-
미해결5개 거래소별 코인차익알림봇, 구체적인 개발 가이드 with Python
이벤트 참가합니다.
별점, 리뷰 작성 완료하였습니다.파이썬 전자책, 업그레이드 소스 부탁드립니다.ljs.stier@gmail.com
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
현재 예제에서 error 발생
3-2-2.py 17liner = s.get('https://jsonplaceholder.typicode.com/posts/1')=> requests.exception.SSLError 발생 3-3.py 49liner = requests.put('https://jsonplaceholder.typicode.com/posts/1', data=payload)=> requests.exception.SSLError 발생 변경시 r = requests.put('https://jsonplaceholder.typicode.com/posts/1', data=payload, verify=False)=> InsecureRequestWarning 발생 후 print(r.text) 결과: {}
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
싸이월드 과제 쪽이 궁금합니다.
혼자할때 요런식으로 진행했는데 강의를 보니 아예 다르게 하시더라구요 피그마 여백쪽을 margin 으로 일일히 계산했는데 틀린방법일까요?weight 100% 주면서 쉽게쉽게 하시길래 보면서 제 생각에는 미리 div들 따로 해놔서 maring 굳이 줄 이유가 없는것일까요?
-
미해결Flutter로 SNS 앱 만들기
섹션8 게시글 정보 가져오기
데이터를 가져오지 못하고 있습니다.파일은 멜로 보냈어요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
수치형 데이터 스케일링
기출5회 작업형 2번 수치형 데이터 스케일링은 필요없나요? 언제 스케일링을 해야하는지 잘 모르겠어요..
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
각 세션에 보충강의로 Spring Boot에 적용하는 것도 올려주세요.
저는 Spring boot 개발자라 express는 잘 몰라서 Spring boot도 올려주시면 좋을 것 같아용.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
환경 셋팅 관련 질문있습니다.
안녕하세요! 우선 저는 현재 윈도우 사용중이고요, 그런 의미에서 꾸역꾸역 3강을 거의 끝나가는 시점입니다~처음엔 쥬피터로 했는데, 커널이 계속 죽는 이슈로.. 코랩 엔터프라이즈로 돌리는 중입니다. 쥬피터를 활용해서 가상환경으로 하고 싶었는데 실패해서 결국 base에서 구동했어요ㅠㅠ 커널 죽는것도 이거 때문인가 싶기도하고.. 가상환경이 필수인건가요? 잘 돌아가면 일단 한숨 돌려도 되는거죠..? + vscode랑 쥬피터 연동하면 선생님처럼 .env파일을 쉽게 만들 수 있는건가요? 아님 pyenv한정 가능한 건가요? 저도 vscode로 쥬피터 연동까진 됐는데 .env파일 생성에서 막혀서 그냥 웹에서 돌리고 있었습니다 그마저 커널 이슈로 gcp로 돌렸지만.. ++ Open-AI 대신 gemini를 사용하는건 어떻게 생각하시나요? 본 강의에는 부적합한가요? 구글 크래딧이 있어서 이걸 활용하고 싶은데 꽤 장벽에 부딪히는거(가령 tiktoken이 안된다든지 ) 같은데 이게 제가 잘 몰라서 그런건지 보통 그런건지 모르겠네요. +++ 원래 정말 환경 얘기만 여쭤보려고했는데 적다보니 그동안 몰랐던거를 다 여쭤보게 됐네요.. 강의 잘 듣고 있습니다! 감사합니다~
-
미해결스프링 핵심 원리 - 기본편
@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())로 사용하면 안되던데, 왜그런 건가요?