선생님 제가 정말 완전 노베이스에서 하는데, 왜 모든 값들을 출력할 때 출력문 구조가 System.out.println("d1 == d2: " + (d1 == d2)); 이렇게 되어있는데 출력은 +를 뺀 내용만 출력을 하는건가요? d1 == d2: false +의 경우는 " "에 있는 내용도 아니고 단지 두개의 식을 이어주는 역할이라고 생각하면 될까요?
super()가 없어지면 기본 생성자를 호출 해야한다는건 이해 했습니다. ElectricCartesla-new ElectricCar("Tesla",2021,75); 라는 변수가 있기때문에 자식 기본생성자인 부분은 건너뛰고 2번쨰인 ElectricCar로 바로 넘어가는건가요? 이후에 부모기본생성자 출력하고 남은 Capacity를 출력하는 순서... 이렇게 이해하면 되는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 선생님 SQL 중심적 개발의 문제점에 대해 궁금증이 많아 글 남겨 봅니다. 선생님의 강의를 들으면서 결국 애플리케이션의 핵심 역할은 DB라는 종착지에 가기 전 데이터를 정제하고 그 정합성을 책임지는 것이라고 생각합니다. 애플리케이션이 이 책임을 다하려면, 데이터를 담는 DB설계에 끌려다는 것이 아닌 데이터를 가공하는 주체인 객체지향 설계가 우선되야 한다고 생각이 듭니다. 하지만 현실에서는 여전히 DB무결성을 이유로 DB설계를 최우선되고 객체는 그저 데이터의 운반책으로 쓰는 경우가 많았는데, 데이터 정합성의 책임을 다하기 위해 객체지향 설계가 DB설계보다 앞서야 한다는 제 생각이 맞는지 , 혹시 이런 관점이 실무에서 DB 무결성을 놓치는 위험한 발상은 아닌지 시니어 개발자이신 선생님의 고견을 듣고 싶습니다.
AttributeError AttributeError: 'Cursor' object has no attribute 'count' Traceback (most recent call last) File "D:\PM_WebService\venv\Lib\site-packages\flask\ app.py ", line 1536 , in __call__ return self.wsgi_app(environ, start_response) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\PM_WebService\venv\Lib\site-packages\flask\ app.py ", line 1514 , in wsgi_app response = self.handle_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\PM_WebService\venv\Lib\site-packages\flask\ app.py ", line 1511 , in wsgi_app response = self.full_dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\PM_WebService\venv\Lib\site-packages\flask\ app.py ", line 919 , in full_dispatch_request rv = self.handle_user_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\PM_WebService\venv\Lib\site-packages\flask\ app.py ", line 917 , in full_dispatch_request rv = self.dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^ File "D:\PM_WebService\venv\Lib\site-packages\flask\ app.py ", line 902 , in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\PM_WebService\main\ board.py ", line 105 , in lists tot_count = board.find(query).count() ^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'Cursor' object has no attribute 'count' The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error. To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it.
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4-8 여기까지 이해하신 내용은 무엇인가요? 외래키 제약조건으로 인해 발생한 데드락 문제를 해결하기 위해 INSERT 하려는 테이블에 외래 키를 제거한다. 2. 어려움을 겪는 부분 외래키를 만약에 제거한다면, 어플리케이션 레벨에서 직접 관리한다고 했는데, 구체적으로 어떻게 관리를 하는 건지 궁금합니다! INSERT 하려는 테이블과 연관된 테이블들을 먼저 조회( findXXX() )를 하고, 만약에 없다면 예외를 발생시켜서 트랜잭션을 롤백시키는 방식으로 처리하나요? 실무에서 주로 어떻게 해결하는지 궁금합니다. 그리고 외래키를 사용하지 않는 첫 번째 방법은 이미 테이블이 생성된 시점( INSERT 하려는 테이블에 외래키가 추가되어 있는 상황)에서도 적용할 수 있는건가요? 예를 들어, 이미 테이블에 데이터가 추가되어 있는 상황에서 첫 번째 방법을 적용하려면, 테이블 구조를 아예 바꿔야 할텐데 이 경우에는 두 번째 방법인 쿼리 순서를 바꾸는 걸 대안으로 사용하는 건가요?
// 1) 모든 입력 아이템의 json을 순서대로 병합 let merged = {}; for (const item of $input.all()) { Object.assign(merged, item.json); } // 2) 'IMG - 시트 행 가져오기' 노드의 첫 번째 아이템에서 ID를 가져와 추가 merged.ID = $('IMG - 시트 행 가져오기').first(). json.ID return [{ json: merged }]; 코드 사용했을때 60초 이상 실행되어 타임아웃 에러가 납니다. 메시지 : Problem in node ‘Code in JavaScript‘ Task request timed out after 60 seconds
한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)
아직 강의 전체는 안보고 우선적으로 MCP가 궁금해서 이 부분부터 봤습니다. 아래 문장 질문드려요. "기존에는 agent를 사용하는 개발자가 직접 툴을 사용/개발했는데, MCP프로토콜이 나오면서 agent를 사용하는 개발자가 직접 툴을 개발하는게 아니라 application 공급자가 MCP를 만들어서 사용자와 agent개발자에게 연결해서 쓰면된다는 식으로 추세가 변화했다. 그러니까 공급자가 MCP를 개발해서 서버에 올려도 어느정도 api가 변경되면 application 공급자가 전부다 MCP규칙에 맞춰서 코드를 수정해줘야 한다. 즉 원래는 agent 개발자가 툴개발(application사용)에 있어서 부담이 있었다면 지금은 application 공급자가 직접 MCP를 만들어서 사용자에게 제공해줘야 하는거니 더 부담이 커졌다." 제가 이해한게 맞는지 확인해주세요. 크게보면 보면 주체가 3가지인가요? 1) LLM 2) Tool 개발자(agent 개발자) 3) 어플리케이션 개발자(구글 드라이브, 네이버메일 등) MCP가 나오기 전에는 Tool 개발자가 LLM API와 어플리케이션 API를 통해서 agent툴을 만들었다면 MCP가 등장한 후에는 Tool 개발자가 LLM API만 알고 있으면 Tool(agent) 개발을 할수 있다는 말인거죠? 결국에는 툴 개발자가 Application API는 공부할 필요가 없지만 LLM API는 공부해야 agent를 만들수 있다는 말이죠? LLM과 application이 MCP로 통신(연동)하는 건 이미 application 개발자가 별도의 MCP서버를 만들었으니 연동부분은 만들필요가 없음
'섹션 5. 클라우드에서 내 서비스 띄우기: AWS로 배포하기' - '26. AWS EC2 서버에 애플리케이션 배포' 강의를 듣던 중 문제가 생겨 AI를 활용해 문제를 해결해보다가 해결을 못 했습니다. 이미 너무 많이 만져서 원래 상태로 복구하긴 힘들 거 같네요. 강의를 처음부터 다시 들으면서 다시 만들어야 할까요? 깃허브 같이 중간 결과물을 다운 받을 수 있는 곳은 없나요?
안녕하세요, 토비님. 강의 초반에 말씀해 주신 것처럼, 리팩토링 과정에서 “제가 했다면 어떻게 했을까”를 계속 생각해 보며 토비님의 의사결정 과정을 따라가고 있습니다. MemberService.register() 메소드에서 emailSender.send(...) 를 sendWelcomeEmail() 로 분리하시는 과정을 보며 두 가지 고민이 생겼습니다. 첫째, 환영 이메일의 내용이나 정책이 변경될 때마다 MemberService 의 코드가 함께 변경되어야 한다면, 이는 SRP 위반에 해당하지 않는지에 대한 고민입니다. 이 경우 환영 이메일 전송에 대한 책임을 EmailSender 인터페이스 쪽으로 옮기는 것이 더 적절한지 궁금해졌습니다. 둘째, 만약 EmailSender 인터페이스에 해당 메소드를 추가한다면, 구현체가 늘어날수록 인터페이스가 비대해지거나 향후 구현 복잡도가 증가할 수 있다고 느꼈습니다. 이런 경우 default method 로 제공하는 방식에 대해서는 어떻게 생각하시는지도 궁금합니다.