묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
생성자 주입 방법이 아닌 필드 주입 방법일 때 @Autowired
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]컴포넌트 스캔과 자동 의존 관계 설정 방법을 통했을 때는 MemberService가 아래 코드와 같았었는데@Service public class MemberService { private final MemberRepository memberRepository; @Autowired public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } } MemberService를 SpringConfig에 등록한 이후로는 아래 코드와 같이 @Service와 @Autowired를 지웠잖아요?public class MemberService { private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; }이 경우엔 생성자 주입 방식의 경우인데 만약 필드 주입 방식을 사용한다면 @Autowired를 어떻게 해야 하나요? 1) 컴포넌트 스캔과 자동 의존 관계 설정 방법일 땐 필드에 @Autowired를 붙이고@Service public class MemberService { @Autowired private MemberRepository memberRepository; } 2) 자바 코드로 직접 스프링 빈 등록하기 방법(SpringConfig에 등록)일 땐 필드에 @Autowired를 붙이지 않아도 되나요?public class MemberService { private MemberRepository memberRepository; }
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
socketio 질문 있습니다.
안녕하세요. 마이크로 서비스를 만들어 보고있습니다. 서버끼리는 gRPC 통신을 사용하고, 클라이언트는 게이트웨이를 통해서 HTTP통신을 하는 형태로 만들고있습니다.요구사항은 이제 어느정도 다 구현이 된 상태인데요. 데이터베이스의 데이터를 모두 보여주는 화면에서 새로운 데이터가 입력됐을때 실시간으로 보여주기 위해서 웹 소켓을 사용하려고 합니다.그래서 게이트웨이에 웹소켓 게이트웨이를 추가했습니다. import { Inject, OnModuleInit } from '@nestjs/common'; import { MessageBody, SubscribeMessage, WebSocketGateway, WebSocketServer, } from '@nestjs/websockets'; import { Server } from 'socket.io'; import { CounselServiceClient } from './../../../proto/src/counsel'; import { ClientGrpc } from '@nestjs/microservices'; import { firstValueFrom } from 'rxjs'; @WebSocketGateway({ cors: { origin: '*' } }) export class EventsGateWay implements OnModuleInit { counselService: CounselServiceClient; constructor(@Inject('COUNSEL_PACKAGE') private clientCounsel: ClientGrpc) {} onModuleInit() { this.counselService = this.clientCounsel.getService<CounselServiceClient>('CounselService'); } @WebSocketServer() server: Server; @SubscribeMessage('getAllCounselAdmin') async getAllCounselAdmin() { const result = await firstValueFrom( this.counselService.getAllCounselAdmin({}) ); this.server.emit('allCounselAdminData', result); } @SubscribeMessage('getCounselAdmin') async getCounselAdmin(@MessageBody() data: any) { const counselId = data.counselId; const result = await firstValueFrom( this.counselService.getCounselAdmin({ counselId }) ); this.server.emit('counselData', result); } }이게 지금 웹소켓 게이트웨이의 코드입니다. 클라이언트와 연결하기 위해서'use client'; import { useEffect, useState } from 'react'; import { CounselProto } from './../../../proto/src/counsel'; import axios from 'axios'; import Long from 'long'; import Link from 'next/link'; import { io } from 'socket.io-client'; export const statusInfoMap: { [key: number]: string } = { 1: '', 2: '', 3: '', 4: '', 5: '', }; export default function GetAllCounselByAdmin() { const [counselData, setCounselData] = useState<CounselProto[]>([]); const [isLoading, setIsLoading] = useState(false); useEffect(() => { const socket = io('http://localhost:3000'); socket.on('connect', () => { console.log('Connected to the server'); }); socket.on('allCounselAdminData', (data) => { console.log('Received data: ', data); setCounselData(data); }); socket.on('disconnect', () => { console.log('Disconnected from the server'); }); return () => { socket.disconnect(); }; }, []); return ( <div> {isLoading ? ( <p>Loading...</p> ) : ( <> <h1>모든 상담 내역 조회</h1> <table> <thead> <tr> <th>[상담 기록 번호]</th> <th>[상담 접수 내용]</th> <th>[상담 진행 상황]</th> <th>[상담 접수 날짜]</th> <th>[고객 고유 번호]</th> <th>[고객 성함]</th> <th>[고객 연락처]</th> </tr> </thead> <tbody> {counselData?.map((item, i) => ( <tr key={i}> <td> <Link href={`/admin/counsel/${item.counselId}`}> {item.counselId} </Link> </td> <td>{item.content}</td> <td>{statusInfoMap[item.statusInfo]}</td> <td>{item.createdAt.toLocaleString()}</td> <td>{item.counselUserId}</td> <td>{item.name}</td> <td>{item.phone}</td> </tr> ))} </tbody> </table> </> )} </div> ); }이렇게 적고 서버를 실행해서 해당 페이지에 접속을 하니까 콘솔에 Connected to the server라고는 뜨는데, 데이터가 꽂히지 않고있습니다.서버로 부터 데이터를 못 받아오고있는것같은데요. 어떤 부분을 손대야할지 모르겠습니다. 해당 소켓 게이트웨이는 공식문서를 참고해서 적었습니다..
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
A.11.018. kDbench 실행 오류 질문입니다.
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://www.inflearn.com/questions/992407/comment/281901)6. ARM 계열의 m1 , m2 계열은 VirtualBox를 통한 구성이 원할하지 않고, 실습 환경의 다변화는 추후 대처하기 어려워서 현재 과정에서는 지원하지 않습니다. (https://www.inflearn.com/questions/915529) [질문 하기]안녕하세요? 먼저 좋은 강의 제공해 주셔서 감사합니다. 정말 많이 배우고 있습니다. 저는 개인적으로 프로젝트를 해보려고 현재 쿠버네티스 클러스터를 구성중입니다. ESXi 호스트와 Synology NAS로 인프라를 구성중입니다.Ubuntu 20.04.6 LTS / Kubernetes 1.26.1 / Containerd 1.6.22 / Calico 3.24.3 버전을 사용중입니다. kbanch 명령어를 시행하면 퍼미션 문제가 있어 sudo로 진행하려고 아래와 같이 명령어를 치니 오류가 발생합니다. I$ sudo kdbench managed-nfs-storageE0921 23:38:12.683467 153026 memcache.go:238] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refusedE0921 23:38:12.683708 153026 memcache.go:238] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refusedE0921 23:38:12.684940 153026 memcache.go:238] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refusedE0921 23:38:12.686207 153026 memcache.go:238] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refusedE0921 23:38:12.687548 153026 memcache.go:238] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refusedThe connection to the server localhost:8080 was refused - did you specify the right host or port?물론 현재 API 서버 호출은 잘 되는 상태인데 갑자기 왜 로컬 호스트에 8080을 호출하면서 안된다고 하는지 모르겠습니다. 도움 간절히 기다립니다. 감사합니다.
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
SRT Rotate 부분 값이 이상한 것 같습니다
1번값이 나오려면 2번에서 s와 -s가 바뀌어야 하는것 아닌가요? 1번의 X = xcos - ysin 이 나와야 하면 v와 M의 첫번째 행을 곱해야 X가 나오는데지금의 RotationZ행렬은 xcos + ysin이 나올것 같은데요...
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
뉴스 기사 크롤
위 페이지에서 기사 제목: 김혜수 "실패 없을 것 같은 내 이력..."<span class="text">를 출력하고자 합니다. select를 이용해서 출력하고자 하는데, 어떤 것이 잘못되었는지 모르겠습니다. items = soup.select('ol#topViewArticlesContainer p.title span.text') ol id가 topViewArticlesContainer 밑에p 태그의 class가 title인 것의 밑에span 태그의 class가 text인 것을 뽑으려고 했는데,, 어떤게 잘못 된건지 알 수 있을까요?
-
미해결언리얼 엔진4 입문 (C++ 기반)
델리게이트 함수를 쓰고 플레이버튼 실행시 언리얼이 꺼집니다
델리게이트 함수를 쓰면 코드상에 오류가 없고컴파일도 되는데 플레이버튼을 누르면 크래시가 나면서 언리얼이 꺼집니다UE4Editor_gameFramework!TMulticastScriptDelegate<FWeakObjectPtr>::Add() [C:\Program Files\Epic Games\UE_4.26\Engine\Source\Runtime\Core\Public\UObject\ScriptDelegates.h:324]UE4Editor_gameFramework!AMyCharacter::BeginPlay() [C:\Users\plusu\OneDrive\gameFramework\Source\gameFramework\MyCharacter.cpp:43]UE4Editor_EngineUE4Editor_EngineUE4Editor_EngineUE4Editor_EngineUE4Editor_EngineUE4Editor_UnrealEdUE4Editor_UnrealEdUE4Editor_UnrealEdUE4Editor_UnrealEdUE4Editor_UnrealEdUE4Editor_UnrealEdUE4Editor_UnrealEdUE4Editor_UnrealEdUE4EditorUE4EditorUE4EditorUE4EditorUE4Editorkernel32ntdll 뭐가 문제일까요...??
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기간 연장 요청드립니다..!
안녕하세요. 강사님.직장과 병행하다보니 잊고 있었는데 수강기간이 거의 만료됐네요..죄송하지만 10월달에 자격증 도전하려고 하는데 수강 연장 가능할까요!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
캘린터만들기 오류질문입니다.
수업을 계속 반복해서 암기하고 있습니다.달력 수업도 현재까지 10번 이상 반복하고 있는 것 같은데요,일주일전만해도 잘 완성됐었습니다.그런데 오늘 flutter pub run build_runner build를 하려고 하니, g.dart 파일 생성이 안되고 이렇게 에러가 뜹니다.버전 문제인가 싶어 flutter upgrade도 해보고 여러 세팅값들을 버전에 맞도록 업그레이드 시도해봤는데 그래도 여전히 같았습니다.혼자 해결방법을 찾으려고 몇시간째 서치해봤는데 방법을 못찾겠네요, 조언 부탁드립니다. PS C:\Users\haK\StudioProjects\calendarmaking> flutter pub run build_runner buildDeprecated. Use dart run instead.Resolving dependencies... (1.0s)Got dependencies.Building package executable... (6.8s)Failed to build build_runner:build_runner:../../AppData/Local/Pub/Cache/hosted/pub.dev/watcher-1.0.2/lib/src/constructable_file_system_event.dart:7:57: Error: The class 'FileSystemEvent' can't be extended, implemented, or mixed in outside of its library because it's a sealed class.abstract class _ConstructableFileSystemEvent implements FileSystemEvent {
-
미해결[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편
11:48초 부분 질문입니다.
interface A { talk: () => void; } const a: A = { talk() { return 3; } // 타입스크립트는 메서드의 void니까 리턴값 3을 무시해버린다. } const b = a.talk(); // b의 타입이 void가 된다. console.log(b) // 3플레이 그라운드에서 돌려보니 b의 타입만 void 로 추론하고b의 값은 3으로 찍히던데 리턴값을 아예 무시하는건 아닌가요? 타입스크립트 내부에서만 타입추론할때 무시한다는 뜻이겠죠?!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
오브젝트 풀링 질문
선생님 이부분에서 parent를 null 로 설정하면 생성된 유니티찬이 베이스씬컴포넌트를 상속받은 로그인씬이 부착된 @Scene 오브젝트 하위로 부착되어야 되는거아닌가요? 근데왜 이런식으로 유니티찬이 바깥에 생성되는거죠?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1781번 질문있습니다
https://www.acmicpc.net/source/share/60c52b6bc2b540bb8d1b1a57d4ce090d기존에 문제를 풀었던 2109번과 동일한 로직이라고 생각되어처음풀때 사용했던 제 로직을 이용하니 문제가 틀렸다고 나와서요, 추후에 큰돌님이 2109번강의해주셨을때 사용했던 로직도 같은로직이라 생각되어 해당 소스를 사용시 정답이 되어서 이부분이 잘이해가 안가서 질문을 남깁니다
-
미해결리눅스 커널 해킹. A부터 Z까지
build_result가 안보입니다
커널과 cpio 를 하라는데로 했음에도 Build_result는 find를 써도 찾을수가 없습니다. 제가 어느 부분에서 누락된 걸까요?아니면 폴더를 따로 만들어서 복붙한건가요? 복붙의 경우 bimage에 우분투 기준으로X표시가 생깁니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberServiceIntegrationTest에서 필드 주입 방식에 @Autowired를 쓰는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의를 쭉 따라왔습니다.궁금한 점이 있는데 통합 테스트 클래스인MemberServiceIntegrationTest에서 필드 주입 방식으로@Autowired MemberService memberService; @Autowired MemberRepository memberRepository; 이렇게 선언했잖아요?그런데 SpringConfig에서 MemberService랑 MemberRepository를 스프링 빈으로 등록했으니깐여기서도 @Autowired를 빼도 될 것 같았는데오류가 나더라구요. 이유를 뭔가 알 것 같기도 하면서 개념이 좀 헷갈리는데 @Autowired를 붙여야 하는 이유가 뭔가요?
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
선생님 강의 책만으로 면접 준비 끝나나요?
선배들이 CS공부 많이 하라는데 어떻게 하죠테이블 짜봐라 이런 기능 만드려면 어떻게 설계 해야 하냐이런 문제 터지면 뭐부터 확인해야겠냐 이런 질문 한다는 데 강의만 들은 입장에서 솔직히 대답 못하겠어요 추가로 더 준비 해야하나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2차원 배열 회전 강의 올려주시면 안될까요
교안만 봐서 잘 모르겠습니다 ㅠㅠ
-
미해결스프링 부트 - 핵심 원리와 활용
강사님이 올리신 테스트 코드 실행해도 다음과 같은 오류가 뜨네요
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'hello.member.MemberRepositoryTest'. at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:53) at java.base@17.0.8/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base@17.0.8/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base@17.0.8/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base@17.0.8/java.lang.reflect.Method.invoke(Method.java:568) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71) at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Caused by: org.gradle.internal.UncheckedException: java.lang.ClassNotFoundException: hello.member.MemberRepositoryTest at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:68) at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:41) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:112) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.access$100(JUnitPlatformTestClassProcessor.java:54) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:89) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:79) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51) ... 18 more Caused by: java.lang.ClassNotFoundException: hello.member.MemberRepositoryTest at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:467) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:110) ... 23 more
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
dummyList 변수 선언 위치 질문
안녕하세요 dummyList라는 변수 선언이 App함수 밖에 선언이 되어있는데App함수 안에 선언을 하는거랑 결과상으로는 같더라구요 jsx문법에서 보통 이런 변수선언은 함수 안에 하나요 밖에 하나요?혹시 차이가 있을까요? 이런 변수선언을 함수 밖에 선언하는 경우와 안에 선언하는 경우의 차이가 궁금합니다
-
미해결메타스플로잇(Metasploit) 활용한 취약점 분석(초중급과정)
VMware 용 WIN XP IE8 이미지 다운로드
안녕하세요...VMware 용 WIN XP IE8 이미지 다운로드 를 해서실습을 해야 합니다. URL을 급히 알려주세요.. 감사합니다.
-
해결됨스프링 부트 웹 개발 입문 - 따라하며 배우기
@RequestParam
제가 이해한 게 확신이 안 들어서 질문드립니다. @RequestParam은url을 통해서 데이터를 전달하는 방식인 거죠? 즉vi/menu_up?no=8처럼이렇게 데이터를 ?뒤에서 key=value 형식으로 나르는 거죠? 그리고 html에서 링크를 /v1/menu_del(no=..) 이런 식으로 지정하거나,html 태그 form+input이 저런 url을 만들어주는 거죠? (태그 안에 action="/v1/menu_ins"을 적어줄 경우 그 뒤 url에 ?no=8 이런 식의 데이터를 붙여주는 거죠?)
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
17장 코드 설명
안녕하세요 맛비님! 강의 잘 듣고 있습니다! 다름이 아니라 verilog 문법 강의를 막 듣고 이 강의를 바로 수강해서인지 .. 살짝 어려운 감이 없지 않아 있지만 그래도 재밌게 듣고 있습니다! 하지만,, 질문거리는 많네용.. 16~17장의 FSM 관련해서 질문을 드리려고 합니다! 17장에서 always @(*)begin n_state = S_IDLE; // To prevent Latch.case(c_state) S_IDLE: if(i_run) n_state = S_RUN; S_RUN : if(is_done) n_state = S_DONE; else n_state = S_RUN; S_DONE: n_state = S_IDLE; endcase end굵게 표시된 부분을 추가하셨는데 제가 알기로는 if 구문에서 else를 정의하지 않으면 이전 상태를 계속 유지하는 걸로 알고 있는데, 그럼 여기서 else를 정의하지 않으면 S_RUN 상태를 계속 유지하니까 굳이 else를 추가할 필요가 없지 않나요? // Step 4. Registering (Capture) number of Countreg [6:0] num_cnt;always @(posedge clk or negedge reset_n) begin if(!reset_n) begin num_cnt <= 0; end else if (i_run) begin num_cnt <= i_num_cnt; end else if (o_done) begin num_cnt <= 0; endend 17장에서 이 코드를 설명하실 때 굵게 표시한 부분을 '사용자가 i_num_cnt 를 쭉 100으로 유지 못하는 경우를 방지하기 위해 이렇게 코드를 작성했다' 라고 하셨는데 사실 이 부분이 이해가 잘 안 돼서.. 혹시 어떤 상황인지 좀 더 자세하게 설명 가능할까요?? 그리고 17장 코드 step 4,5에서 굳이 내부 F/F를 만들어서 input을 담는 이유가 궁금합니다. 제가 생각하기엔 F/F를 만들면 그만큼 delay가 생기게 되고 이는 손해라고 생각이 들어서요 num_cnt, cnt_always를 말씀 드린겁니다! 17장 DUT step5 코드 중에서 마지막에 else를 쓰지 않으셨던데 이유가 뭔지 알 수 있을까요?? 이때는 is_done, o_running 이외에 경우가 없어서 그런가요? 마지막으로 맛비님의 코딩 스타일을 알고싶습니다. 솔직히 counter 까지는 verilog 문법을 공부하면서 설계해봤던 모듈이고 직관적으로 이렇게 설계하면 되겠다! 라는 생각이 들었는데 FSM을 설계할 땐 step1,2 이런 식으로 code를 짜기 까지 어떤 생각의 흐름으로 coding 하셨는지가 궁금합니다! 읽어주셔서 감사하고 긴 글이지만 꼭 답변 부탁드리겠습니다 ㅜㅠㅜㅠ 감사합니다!!