묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
Access denied for user 'root'@'localhost' (using password: YES)
https://www.inflearn.com/community/questions/1364596/access-denied-for-user-root-localhost-using-password-yes위 글에서 재성님이 제시해주신 해결방법을 적용해보았습니다. 하지만 여전히 root 계정에 접속이 안됩니다. docker compose down -v 명령어를 통해 볼륨을 제거해도 여전히 해결이 안됩니다. 스프링부트 역시 데이터베이스와 연결되지 않았다는 오류가 로그에 남습니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Appbar 의 my_location 버튼을 눌러도 현재위치로 이동하질 않습니다.
강의 정말 잘 듣고있습니다! 오늘도 출근 프로젝트에서 앱바 액션 버튼의현재 위치로 시점 이동 버튼 기능이 동작하지 않습니다. 중간에 기능 확인할때 잘 작동하는것을 확인했는데강의 다 듣고 나서 다시 확인하니 작동을 하지 않습니다. Geolocator.getCurrentPosition() 여기서 데이터를 못받아와서 그런것 같은데 뭐 때문에 갑자기 못 받아오는건지 알수가 없습니다... import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({super.key}); @override State<HomeScreen> createState() => _HomeScreenState(); } class _HomeScreenState extends State<HomeScreen> { final CameraPosition initialPosition = CameraPosition( target: LatLng( 37.5214, 126.9246, ), zoom: 15); late final GoogleMapController controller; bool choolCheckDone = false; bool canChoolCheck = false; final double okDistance = 100; final testPosition = LatLng(37.5214, 126.9246); @override initState() { super.initState(); Geolocator.getPositionStream().listen((event) { final start = testPosition; final end = LatLng(event.latitude, event.longitude); final distance = Geolocator.distanceBetween( start.latitude, start.longitude, end.latitude, end.longitude, ); setState(() { if (distance > okDistance) { canChoolCheck = false; } else { canChoolCheck = true; } }); }); } checkPermission() async { final isLocationEnabled = await Geolocator.isLocationServiceEnabled(); if (!isLocationEnabled) { throw Exception('위치 기능을 활성화 해주세요.'); } LocationPermission checkedPermission = await Geolocator.checkPermission(); if (checkedPermission == LocationPermission.denied) { checkedPermission = await Geolocator.requestPermission(); } if (checkedPermission != LocationPermission.always && checkedPermission != LocationPermission.whileInUse) { throw Exception('위치 권한을 허용 해주세요.'); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text( '오늘도 출근', style: TextStyle( color: Colors.blue, fontWeight: FontWeight.w700, ), ), actions: [ IconButton( color: Colors.blue, onPressed: myLocationPressed, icon: Icon(Icons.my_location), ), ], ), body: FutureBuilder( future: checkPermission(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasError) { return Center( child: Text(snapshot.error.toString()), ); } return Column( children: [ Expanded( flex: 2, child: _GoogleMaps( testPosition: testPosition, okDistance: okDistance, canChoolCheck: canChoolCheck, initialPosition: initialPosition, onMapCreated: googleMapController, ), ), Expanded( flex: 1, child: _Bottom( choolCheckDone: choolCheckDone, canChoolCheck: canChoolCheck, onChoolCheckPressed: onChoolCheckPressed, ), ) ], ); }, ), ); } googleMapController(GoogleMapController controller) { // state에 선언한 controller에 방금 선언한 controller 넣음 this.controller = controller; } onChoolCheckPressed() async { final result = await showDialog( context: context, builder: (BuildContext context) { return CupertinoAlertDialog( title: Text('출근하기'), content: Text('출근을 하시겠습니까?'), actions: [ TextButton( onPressed: () { Navigator.of(context).pop(false); }, child: Text('취소'), style: TextButton.styleFrom(foregroundColor: Colors.red), ), TextButton( onPressed: () { Navigator.of(context).pop(true); }, child: Text('출근하기'), style: TextButton.styleFrom(foregroundColor: Colors.blue), ) ], ); }, ); if (result) { setState(() { choolCheckDone = true; }); } } myLocationPressed() async { print('before'); final location = await Geolocator.getCurrentPosition(); print('after'); controller.animateCamera( CameraUpdate.newLatLng( // 이 위치로 구글맵 카메라를 애니메이션과 함께 움직여라! LatLng( location.latitude, location.longitude, ), ), ); } } class _GoogleMaps extends StatelessWidget { final LatLng testPosition; final double okDistance; final bool canChoolCheck; final CameraPosition initialPosition; final MapCreatedCallback onMapCreated; const _GoogleMaps({ super.key, required this.testPosition, required this.okDistance, required this.canChoolCheck, required this.initialPosition, required this.onMapCreated, }); @override Widget build(BuildContext context) { return GoogleMap( initialCameraPosition: initialPosition, mapType: MapType.normal, myLocationEnabled: true, myLocationButtonEnabled: false, zoomControlsEnabled: false, onMapCreated: onMapCreated, markers: { Marker( markerId: MarkerId('123'), position: testPosition, ), }, circles: { Circle( circleId: CircleId('inDistance'), center: testPosition, radius: okDistance, fillColor: canChoolCheck ? Colors.blue.withOpacity(0.5) : Colors.red.withOpacity(0.5), strokeColor: canChoolCheck ? Colors.blue : Colors.red, strokeWidth: 1, ) }, ); } } class _Bottom extends StatelessWidget { final bool choolCheckDone; final bool canChoolCheck; final VoidCallback onChoolCheckPressed; const _Bottom({ super.key, required this.choolCheckDone, required this.canChoolCheck, required this.onChoolCheckPressed, }); @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( choolCheckDone ? Icons.check : Icons.timelapse_outlined, color: choolCheckDone ? Colors.green : Colors.blue, ), SizedBox( height: 16, ), if (!choolCheckDone && canChoolCheck) OutlinedButton( onPressed: onChoolCheckPressed, child: Text('출근하기'), style: OutlinedButton.styleFrom( foregroundColor: Colors.blue, ), ), ], ); } }
-
미해결파이썬 기초 라이브러리부터 쌓아가는 머신러닝
섹션1의 마지막 강의(DataFrame에서 자주 사용하는 전처리 기법)의 오류 해결방법
안녕하세요 거친코딩님!우선 강의 너무 재밌게 잘 듣고 있습니다. 섹션 1의 마지막 강의를 듣다가 오류가 발생하는데 무엇이 원인인지 잘 모르겠어서 질문드립니다. 해당 강의 11분 50초에서 설명해주시는 nan_abalone_df.mean()을 하면 자꾸 타입에러가 발생합니다TypeError Traceback (most recent call last) <ipython-input-138-677ba292c7ae> in <cell line: 1>() ----> 1 nan_abalone_df.mean() /usr/local/lib/python3.10/dist-packages/pandas/core/nanops.py in _ensure_numeric(x) 1676 if inferred in ["string", "mixed"]: 1677 # GH#44008, GH#36703 avoid casting e.g. strings to numeric -> 1678 raise TypeError(f"Could not convert {x} to numeric") 1679 try: 1680 x = x.astype(np.complex128) TypeError: Could not convert ['MMFMIIFFMFFMMFFMIFMMMIFFFFFMMMMFMFFMFFFMFFIIIIMFIFIMMFMFMMIFMMFMMMFFFIMFFMFFMFFFFMFMMFMMFFMMMFMMMMMFIMMMMFFFFFMMIMFFFMFMFIFMIIIIMMMFFIIFFMFMFFMMMFMIIIMFFFFMFMFFMFMFFMFFMFMFMFIIIIIMMMFFFMFFFFMMMIFMFMMMFMFFMFIIFIFMFMFMMIMFFFFFIFFIFFMMMIIIIIIIMIIIIIIIIIIMFFMMMMFFFFMIMFMMMFFMMMMMFMMFFIFMMFMFMFMFMFMIIIMMFFMMFIIMMMFMMFMIFMFIIIMIMIIMMIMFIIFMMMMFMFMFFMFIIMFFMMMMMFMFMFFFFMMFMFFFFFMFMFMFMMMMMFMMMIIMFIIIFMMMFMFFIFMMMMMMFMFFFMFMFIFIIMFMFFFMMMIMIIMMIIFIFFMMMFMFFFFMFIIFMFIIIIFMFMFFIFFMFMMMFMMFMFMFMFMMFMMFFFFMFFFFFMMMMIIFFMFMMMMFMFIMMMMFFMIFIFIIIMMFFFMMFMMMFIIIIIIIIFFIFIFFFMIIMFIIFFIFIFIFFIFIFIIFMFIFIFMIFIIFIFFIIIMIMMFMMIIMFMMMMIFFIFFFIMIFMIMMMMIFMIFMMIMMIFMIIMFMFFIFIIFFIFMFMFMFFMFFMFFFIMFMMMFFMMMIFMIIIMFFMFFMMMMFMIIMIMMIIIIIIMMMMFMFMFMMMMMMMFMMMFFFMFFMMMFMFFMMMFMMMFFMFMFMFFFIMMMMMMMFMMMIIMFMFFFFMMMMMMMFMMMIMMIFFFMFIIIIIIIIIIIIIIIIIIMIIIIIMIFIMFMMMMFFFMFMMMMFMMFFFFMFMFMFFMMFMFFMMFFFMMMMMFFFFFFMIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFIIIIIIIIIIIIFMFMFMMMMFMMMMIMMFIMIMIIMMFMFMFFMFMMFFFFMMFMMMFFFMFMMMFFFMFMFMMMMFFFMFFFMFMMMMFFFMMFMFFMMMFFFMMFMFFMMMFFMMFFMIIIIIIIIIIIIIIIIIIIIIIIIIIIMIIIIIIIIIIIIMIIIIMIIIMFIFIIIMIIFIIMIIIIMMMFFMMMFMMMFMFIFFMFMIMMMMMMMFMMMFMFMFMMFMMMMFFMMFFMMMFMMFFMMFFMIFFMFMFMMMFFFMMFFMMFMMFFMFIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFIIIFIIIIIIIIIIIIMIMIIIIIIIIIIIIIMIIIIIIFMFIIFIIIFMIIMIIIIIFIIFMMIIFMIMFFMMMFMMIMMMMIMMFFMMIFFMIMIFFMMMIMMFMMFMMFMMFFMFFFFIMIMMFFMMMMMMMFFMMFFMFMFFFFFMMFFMMFFFMFFFFFFIIIIIIIIIIIIIIMIIIMIMIIIII... 강의를 다시 돌려보고 거친코딩님과 똑같이 코드를 쳤는데 자꾸 저 부분에서 오류가 발생하네요.nan_abalone.df의 성별 열이 문자라서 mean함수를 호출할 수 없는 것일까요? 근데 왜 선생님 강의에서는 성별 컬럼이 존재해도 mean이 실행이 될까요..저 부분이 안되니 당연히 nan_abalone_df.fillna(nan_abalone_df.mean())도 안되네요.. 똑같은 타입에러를 일으킵니다 아직 데이터 전처리 걸음마단계라 미숙하지만 잘 부탁드립니다..! 좋은 강의 감사합니다
-
미해결2시간으로 끝내는 코루틴
completing의 존재의의가 궁금합니다.
안녕하세요? 강의 정말 잘 듣고 있습니다. 세심한 답변도 감사드립니다. 강의를 듣던중 궁금증이 생겼는데요,completing이라는 status의 의의가 좀 궁금합니다. 강의예시로 보여주신 코드는 대략 아래와 같은 느낌이였는데요, 이경우 두번째 자식 코루틴 취소 -> 부모로 전파 -> 다른 자식으로 전파(취소요청) -> 취소 된다는 부분은 이해했습니다.fun main(): Unit = runBlocking { launch { delay(700L) printWithThread("First Child Corutine") } launch { delay(500L) throw IllegalArgumentException("Second Child Corutine Exception~~~!") } } 그런데 강사님이 말씀해주신 completing은 마치 특정 코루틴의 작업이 완료되어도, 다른 코루틴의 작업이 실패했을 때 다시 취소처리하기 위한(그래서 Structured Concurrency를 달성하기 위한) 수단인것처럼 말씀해주셨는데, 실제로 어떤식으로 동작하는지를 잘 이해가 안갑니다 예를 들어 제가 처음 강의를 들었을 때는, 아래의 코드에서 우선적으로 첫번재 launch 실행 -> completing상태 -> 두번째 launch 실행 -> 예외발생 -> 첫번재 코루틴이 다시 cancelling이 되어야 한다고 이해했는데..그러면 아래 코드에서 첫번째 코루틴에서 cancellationException이 잡혀서 "First Child Coroutine caught an exception: ${e.message}" 가 출력되어야 할 것 같은데 그러지 않더라구요. 아마 첫번째 코루틴이 completing이 아닌 completed상태가 되어서 더이상 영향을 받지 않게 되는 것 같은데.. completing이 정확히 어떤 상태인지가 궁금합니다fun main(): Unit = runBlocking { launch { try { delay(500L) println("First Child Coroutine Completed Successfully") } catch (e: Exception) { println("First Child Coroutine caught an exception: ${e.message}") } } launch { delay(700L) throw IllegalArgumentException("Second Child Corutine Exception~~~!") } } // 출력결과 First Child Coroutine Completed Successfully Exception in thread "main" java.lang.IllegalArgumentException: Second Child Corutine Exception~~~! ...
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
동시 세션 제어 - sessionManagement().maximumSessions 강의
동시 세션 제어 - sessionManagement().maximumSessions 강의에서 이상한 부분이 있습니다.maxSessionsPreventsLogin가 true인 경우를 24:30초에 테스트 하실때 비밀번호를 틀려서 강의에서는 테스트가 정상적으로 안된거 같습니다.비밀번호가 1111인데 값을 3개만 입력해서 말씀드립니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
작성완료 버튼 오류
12.14)New 페이지 구현하기 2. 기능 강의를 따라 코드를 작성했는데작성 완료 버튼을 누르면 데이터가 추가되지 않고 아래 사진과 같은 에러가 뜹니다. 왜 그런지 이유를 몰라 질문 드립니다. 소스코드는 깃헙에 올려놨습니다!https://github.com/dooheeyaa/section12
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-L 문제가 이해가 안됩니다 ㅠ
안녕하세요 선생님 🙂 문제가 이해가 안되어서 질문 드립니다. N = 4일 경우, 팀에 2명씩 속하기 때문에 arr[i][j] + arr[j][i] 차이의 최소값을 구하면 간단하게 풀어지는데요, N = 6일 경우, 팀에 3명씩 속해야 하는데, 배열만 봤을 때 팀이 이루어질 수 있는 경우의 수가 무엇인지 도통 모르겠습니다.. ㅠㅠ 문제의 힌트를 봐도 모르겠네요.. 도움 부탁드립니다 :)
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
궁금한게 있습니다.
실제 일기장 프로젝트를 보면요 App.js 에 return ( <> <DiaryStateContext.Provider value={data}> <DiaryDispatchContext.Provider value={{ onCreate, onUpdate, onDelete }}> <Routes> <Route path="/" element={<Home />} /> <Route path="/new" element={<New />} /> <Route path="/edit/:id" element={<Edit />} /> <Route path="/diary/:id" element={<Diary />} /> <Route path="*" element={<Notfound />} /> </Routes> </DiaryDispatchContext.Provider> </DiaryStateContext.Provider> </> );이렇게 되어있고 다른 페이지 ( Diary,Ediit,Home,New) 등 페이지에서는 Header 을 공통적으로 include 하고 있는데요 .혹시 이걸 시작하는 App에서다가 추가하고 실제 Diary에 적용되도록 하는 방법이 혹시 있을까요 ..? 먼가 페이지 마다 인클루드 할려니깐 .중복되는코드 같아서요
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Part2 umap import 에러
안녕하세요 Part2 1강에서 Step1.umap이 Editor에서 불러와지지 않아서 다른 세팅법이 있는지 궁금합니다.5.1.1 똑같이 사용중이고 다른 에셋들은 불러와졌는데 umap만 안불러와져서 질문 글 올립니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
제공해주신 문제 풀이가 시간초과가 되어 문의드립니다!
안녕하세요 선생님! 강의 잘 듣고 있습니다.[실전 문제풀이1 : BOJ 3085 사탕 게임] 문제에서 선생님이 제공해주신 "풀이1-O(N^4)" 으로 python3 답을 제출했는데 시간 초과가 되는 걸로 나옵니다. 시간 복잡도가 O(N^4)인데 왜 시간 초과가 나는 것인지 궁금해서 문의드립니다!
-
미해결
앱에 PG결제 넣을 때, 보통 심사 순서가 어떻게 되나요?
안녕하세요.현재 외주 개발사를 통해서 앱을 개발중이고, 실질적인 개발은 다 마무리되었는데PG랑 카드사 심사에서 막혀서 진도가 안나가고 있습니다. 앱은 웹으로 제작해서 안드로이드랑 ios로 앱패키징을 하는 웹앱 형태입니다. 외주 개발사는 "PG심사 > 카드사 심사 > 구글플레이 입점 > 애플 앱스토어 입점" 순서로 한다고 하는데지금 PG사 및 카드사에서는 심사를 위해서는 구글플레이나 애플 앱스토어에 정식으로 등록된 어플만 심사를 한다고 계속 반려를 당하고 있습니다. 외주 개발사 말로는 결제가 정상적으로 되어야 구글플레이든 애플앱스토어든 심사를 받지 어떻게 결제도 없이 심사를 받냐고 반문하는 중입니다. 일반적으로 뭐가 맞는건지 잘 몰라서 문의 올립니다. 앱에 결제 기능이 들어가야 될 때, 구글 및 애플 자체 인앱결제가 아닌 PG사 결제모듈을 통해 결제를 하는 경우에 일반적인 심사 순서가 어떻게 되나요??
-
미해결게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (4) - 좌표 변환, 회전, 가상 트랙볼
외적 공식 문의
강사님 궁금한 점이 있어서 문의 드립니다. 외적 공식에 대해서 이 부분이 맞는지 확인 부탁 드립니다.제가 알고 있기론 가운데 j 행렬에서는 +가 아니라 - 부호가 되어야 맞는 것으로 알고 있는데 이 부분에 대해서 문의 드립니다. 제가 잘못알고 있는게 아닌지에 대해서 궁금해서 문의 드립니다.
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
AWS VPC 과금 문제(탄력적 IP)
탄력적 IP 설정 이후, 리눅스용 도커 설치 영상에 따라 우분투 서버에 docker를 설치했습니다. 그런데 과금이 되었더군요. 프리티어라 과금이 안될줄 알았는데, 정책이 바뀌어 탄력적 IP 설정에 비용이 청구됩니다.https://dev.classmethod.jp/articles/rate-policy-for-aws-public-ipv4-addresses-will-change-kr/탄력적 IP 사용을 안하면 과금이 된다는 말씀도 하셨던거 같은데 그냥 탄력적 IP를 해제하면 될까요? 서버 사용은 동적으로 바뀌는 IP로 접속하면 되는건지...
-
미해결3. 웹개발 코스 [Enterprise Architecture(EA) X 전자정부프레임워크]
스프링 프레임워크+전자정부 표준프레임워크 강의 쿠폰요청 메일
안녕하세요, [EA + Egovframework] 강의를 먼저 수강한 수강생입니다. 무료쿠폰은 [스프링 프레임워크+전자정부 표준프레임워크] 에 해당하는 쿠폰으로 알고 있지만, 저의 경우 [EA+Egovframework] 만 들었기 때문에 혹시 [스프링 프레임워크+전자정부 표준프레임워크] 관련 쿠폰을 받을 수 있는지요? [EA+Egovframework] 를 매우 유익하게 들어서 다른 강의도 꼭 듣고 싶습니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
스킬 구현 질문
잘 듣고 있습니다 강사님. 롤로 치면 그레이브즈 Q 를 구현하고 싶은데 Action을 Spawn Skill Object Action으로 하고 비슷한 파티클을 써서 해보니제 위치에서 나가는게 아니라 클릭한 기준으로 직선으로 나가더라구요 여러가지 방법을 시도 해보고 있는데 어떻게 해야할지 조언 부탁 드립니다!
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
hwp.open()에서 경로에서 에러가 나는거 같습니다.
한/글 문서를 불러오고, 저장하고, 닫기 이 챕터에서 에러가 hwp.open 명령어를 사용했는데경로에서 에러가나는 것 같습니다. ㅠㅜ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
distinct 질문 드립니다.
안녕하세요.강의 잘 보고 있습니다. em.createQuery에서 distinct를 사용해도 DB에서 받아올 때는 뻥튀기된 데이터를 받아오는 것이 맞을까요?em.createQuery의 반환값으로 List<Order>에 담을 때 Order의 id 중복을 제거해서 담은 뒤 반환한다는 것이 맞을까요?결국 distinct를 사용하나 안 하나 DB에 나가는 쿼리는 같을까요?public List<Order> findAllWithItem() { return em.createQuery( "select distinct o from Order o" + " join fetch o.member m" + " join fetch o.delivery d" + " join fetch o.orderItems oi" + " join fetch oi.item i", Order.class) .getResultList(); } 참고한 질문과 답변입니다.https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-API%EA%B0%9C%EB%B0%9C-%EC%84%B1%EB%8A%A5%EC%B5%9C%EC%A0%81%ED%99%94&unitId=24332&tab=community&category=questionDetail&q=555554
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
윈도우 에뮬레이터창 오류
에뮬레이터터 세팅하기 강의 잘 따라하다가 에뮬레이터 실행하면 아래 그림처럼 최소화된 상태에서 클릭도 안되고 더이상 진행이 안됩니다. 강의에서처럼 구글디바이스 기본화면이 별도창으로 나와야하는데 말이죠 ㅜ 진도는 나가야하기 때문에 다시 '체크헤제'취소하고 아래처럼 사용하고 있습니다. 코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[C#/.NET 6.0]어서와, Blazor WebAssembly는 처음이지?
데이터 입력 Razor Page Design Part.1 부분
안녕하세요. 현재 데이터 입력 Razor Page Design Part.1 부분을 보고 있는데, 강의 내용이 누락된 것 같아 글 남깁니다. 이전 강의 까지는 Interface, Service, Controller 를 작성하였었고, 이제 UI 부분을 해보겠다 하신 후에 강의 9분 30초 즈음에 DataInput.razor 파일을 보여주시는데 강의 내용에 없던 코드가 작성되어 있습니다. 그리고 서버 프로젝트쪽 Program.cs에 dbContext와 서비스에 의존성 주입하는 내용도 빠져있어 강의대로 따라가면 실행 중 API가 호출되지 않아 문제가 발생합니다. 확인 부탁 드립니다.
-
해결됨스프링 핵심 원리 - 기본편
재질문->클라이언트코드가 아니라 서버코드아닌가요?
OCP: 변경하지 않고 확장할 수 있다고 했는데!**지금 코드는 기능을 확장해서 변경하면, 클라이언트 코드에 영향을 준다!** 따라서 OCP를 위반한다.라는 pdf자료에 이해가 안되서 질문드립니다. 한서버내부에서도 특정클래스나 모듈이 다른 클래스나 모듈의기능을 요청하는 코드는 클라이언트 코드(appconfig),요청을 받아 처리하는 코드는 서버코드(serviceImpl)라고 볼수있다. 라고 전에 ai를 통해 답변을 받았는데여기서 serviceImpl을 변경한거아닌가요?그럼 서버코드가 변경이되고 서버코드에 영향을 준거 아닌가요?잘이해가 안되여