묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
pipeline 질문
질문 1. pipeline 부분에서 설계 프로젝트가 pipeline 구조로 된 8제곱 계산기잖아요?그때 설계 spec이 0~99까지의 입력을 넣어 0^8~99^8을 결과로 만들어내는 모듈인데 이때 궁금한 점이 앞 전에 설계했던 counter를 8제곱 계산기 앞에 붙여도 되나요?0~99까지만 cnt 하는 counter를 앞에 놓고 그 출력을 입력으로 하는 8제곱 계산기로 설계해도 상관없는 건가요? 질문 2. 그리고 testbench에서 @(posedge clk) //afor(i=0;i<100;i=i+1) begin@(negedge clk)i_valid = 1;i_value = i;@(posedge clk) //bend@(negedge clk)i_valid = 0;i_value = 0;라고 코드를 작성하셨는데 이런 문법이 따로 있나요?? 이 코드 자체가 잘 이해되지 않습니다.. (지피티한테 물어봐도요 ㅜ)//a에서 posedge를 받으면 for 문으로 들어간다i=0 을 받고 negedge clk 가 되면 할당한다.//b에서 다음 클럭의 posedge clk를 받으면 다시 //a로 돌아간다.1~3을 반복수행한다. 이런 순서가 맞나요??저는 이런 순서로 생각하고코드를always @(posedge clk) beginfor(i=0;i<100;i=i+1) begin@(negedge clk)i_valid = 1;i_value = i;end 로 바꿔서 해봤거든요 근데 에러나서 돌아가질 안길래.. 제가 보기에는 다른 점이 없어보이는데어떤 점이 문제일까요?
-
해결됨Vue.js + TypeScript 완벽 가이드
composition API에서의 ref
회사에서 사용하고 있는 ref가 너무 궁금해서 영상을 보니 많이 다르네요. 역시 vue2와 vue3의 차이로군요. vue3로 강의 새로 만들어 주시면 좋을것 같습니다. 기대하고 있겠습니다. ^^
-
미해결파이썬을 이용한 IT 해킹과 보안
reg_add.exe 실행이 안됩니다
가상머신에서 reg_add.exe 를 관리자로 실행하려는데 the version of this file is not compatible ... whether you need an x86(32-bit) or x64 version of the program.. 오류가 발생합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
URL요청 마지막에 "/" 을 포함하니 같은 URL로 매핑 안됩니다
안녕하세요!package hello.springmvc.basic.requestmapping; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping("/hello-basic") public String helloBasic(){ log.info("helloBasic"); return "ok"; } }이렇게 /hello-basic으로 매핑 되어있습니다 /hello-basicURL로 요청하면 잘 되지만 강의 3분대 내용처럼 '/'를 추가했더니 같은 요청으로 매핑이 안되고 404 오류가 발생합니다
-
해결됨독하게 시작하는 C 프로그래밍
예제 다운 후 한글 깨짐
안녕하세요, Visual Studio 2022 Community 버젼을 사용하고 있는데 다운 후 파일들을 보니깐 파일이 깨져 있는데 혹시 해결법이 있을까요?
-
미해결스프링 핵심 원리 - 기본편
[IntelliJ] java.lang.ClassNotFoundException:문제 해결
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Build and run using과 Run tests using을 IntelliJ로 바꿔준다 그래도 해결이 안되면 project structure를 들어간다.modules에서 중복된 main과 test를 제거 한다.문제 해결 됐다.
-
미해결대세는 쿠버네티스 [초급~중급]
macOS에서 UTM을 통해 실행에러 문제
혹시 저같이 실습환경을 구축하다가 헤매고 계신분들이 있을까봐 글을 등록해둡니다!필자: Apple M1 Pro / macOS Sonoma 14.2.1강사님께서 v1.27 k8s 설치 가이드에서Rocky Linux minimal version으로 링크를 달아주셨습니다! UTM을 통해 실행할때 Error가 발생하시는 분들은 CD/DVD iso 이미지를 설치하셔야 정상적으로 실행됩니다ARM64 - DVD 를 클릭하시면 됩니당
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
강의노트 내용
수업자료 파트에서 강의노트 파일을 받았는데 비어 있는 파일이라고 나옵니다.
-
해결됨비전공자도 이해할 수 있는 AWS 입문/실전
S3를 활용해 Express 서버에 이미지 업로드 시 Error: Region is missing 발생할 경우
.env 파일에 아래와 같이 리전 변수가 추가되어야 합니다.AWS_REGION=ap-northeast-2
-
미해결Next + React Query로 SNS 서비스 만들기
소켓 사용시 메시지 저장 방식에 대해 궁금합니다!
백엔드 서버에서는 소켓에서 메시지를 받으면 DB에 따로 저장하는 식으로 관리가 되는걸까요?? 아니면 프론트의 저장 공간에 저장하는 방식으로도 해결하는 방법이 있을까요??
-
미해결[2024 개정판] 코딩 입문자를 위한 파이썬 완벽가이드
'와"의 차이
질문에 대한 답변은업무가 바쁘지 않으면, 보통 2~3일 내에 드립니다. 다만 이해하기 어려운 질문은 답변 드리기 어려우니,코드와 오류 메시지를 같이 첨부해 주시기 바랍니다. 별찍기 강의에서 '를 사용하시던데 '와 "의 차이점이 궁금하고, 역으로 별찍기에서 앞에 1칸이 띄어진 상태로 그림이 그려지던데 앞에 띄어진 1칸을 없앨 수 가 있나요?for j in range(1,6): print(' '*(5-j),'*'*j) for h in range(1,6): print(' '*(h-1),'*'*(6-h))
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
안녕하세요 수강기간 연장 부탁드리겠습니다.
안녕하세요업무가 늘어서 강의를 수강하기 어려워졌습니다..강의 연장을 부탁드려도 될까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
port 가 계속 살아있는 문제.
전에 했던 포트가 계속 살아있네요. 왜 그런거죠..? 나갈때 ctrl+z했는데.
-
미해결Spring Boot JWT Tutorial
jjwt 버전을 올렸더니 jwt가 유효하지 않다고 합니다
강의 예제를 보면 springboot 3.2.0 버전이고 java도 17버전으로 기준하여 작성된 것 같습니다.제 jdk 환경도 17버전이고요. cmd 창에서 java -version으로 확인도 했습니다.내려받아 돌려보면 잘 작동합니다. 그런데 jjwt 0.11.5 버전이 아닌 jjwt 0.12.3 버전을 사용해보고 싶어서 코드를 일부 수정했습니다.또한 Bcrypt알고리즘이 이제는 더 이상 안전하지 않다는 얘길 들어서 Argon2 알고리즘을 사용해보고자 했습니다.dependency에 jjwt 0.12.3 버전으로 변경하였고Jwts 이하 메서드가 jjwt에서는 바뀌어서 key에 타입을 명시해주어야 했습니다.PostMan에서 JWT Bearer로 설정하고 encode체크를 하지 않은 채로(이미되어있으니) HS512알고리즘으로 Secret을 입력하고 localhost:8080/api/authenticate 로 요청을 보내봤습니다.{"username": "user","password", "user"}하지만 jjwt 0.11.5 버전일 때는 잘 오던 token 내용이 500error를 내면서 토큰이 유효하지 않다고 합니다;제 코드에서 잘못 한 점이 있을까요? P.S 스스로 gradle refresh, clean build 등을 한 후에 테스트해본 결과jjwt 0.12.3은 0.11.5와 vscode의 REST Client로 api 테스트 시에 강의와 동일한 결과를 보여주었습니다. 그러나 Argon2 알고리즘을 사용하여 생성한 비밀번호를 사용하면 엉뚱하게도 jwt토큰이 유효하지 않다며 401 에러가 났습니다. 강의대로 Bcrypt 알고리즘을 쓰면 없는 일입니다...다만 이런 오류를 내는 연관성을 모르겠습니다 ;; package com.gyull.jwt.jwt; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.crypto.argon2.Argon2PasswordEncoder; import org.springframework.security.crypto.keygen.BytesKeyGenerator; @ExtendWith(MockitoExtension.class) @SpringBootTest class JwtApplicationTests { private static final Logger logger = LoggerFactory.getLogger(JwtApplicationTests.class); @Mock private BytesKeyGenerator keyGeneratorMock; private Argon2PasswordEncoder encoder = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8(); @Test void contextLoads() { } //argon2알고리즘으로 비밀번호를 생성하기 위해 테스트를 했습니다 //data.sql로 table에 insert하기 위함. @Test public void encodeWhenEqualPasswordWithCustomParamsThenMatches() { encoder = new Argon2PasswordEncoder(16, 32, 4, 65536, 3); String result = encoder.encode("admin"); logger.info("인코딩완료: "+result); assertTrue(encoder.matches("admin", result)); } } package com.gyull.jwt.jwt.security.config; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.crypto.argon2.Argon2PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.web.filter.CorsFilter; import com.gyull.jwt.jwt.security.filter.JwtFilter; import com.gyull.jwt.jwt.security.filter.JwtSecurityConfig; import com.gyull.jwt.jwt.security.handler.JwtAccessDeniedHandler; import com.gyull.jwt.jwt.security.handler.JwtAuthenticationEntryPoint; import com.gyull.jwt.jwt.security.provider.TokenProvider; import lombok.RequiredArgsConstructor; @Configuration @EnableWebSecurity @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAccessDeniedHandler jwtAccessDeniedHandler; private final CorsFilter corsFilter; //Bcrypt 알고리즘은 예제 연습할 때는 쓰지만 연산속도가 발전한 지금은 //취약점이 있기 때문에 Argon2를 비롯한 대체 알고리즘을 더 권장하고 있다. @Bean public PasswordEncoder passwordEncoder(){ return new Argon2PasswordEncoder(16, 32, 4, 65536, 3); } //Spring Security 6.1.x 버전부터는 Lambda DSL의 사용으로 .and()와 같은 메서드가 불필요하다 //Spring Security 7을 염두로 두고 deprecated, removal 되는 메서드가 무척 많았다 @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .csrf((csrf) -> csrf.disable()) // .addFilterBefore(corsFilter, UsernamePasswordAuthenticationFilter.class) .exceptionHandling((exceptionHandling) -> exceptionHandling .authenticationEntryPoint(jwtAuthenticationEntryPoint) .accessDeniedHandler(jwtAccessDeniedHandler) ) .headers(headers -> headers.frameOptions(frameOptions -> frameOptions.sameOrigin())) .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .authorizeHttpRequests( authorize -> authorize .requestMatchers("/").permitAll() .requestMatchers("/api/hello", "/api/authenticate", "/api/signup").permitAll() .requestMatchers("/admin/**").permitAll() .requestMatchers("/favicon.ico").permitAll() .requestMatchers(PathRequest.toH2Console()).permitAll() .anyRequest().authenticated() ) //Spring Security 6.2.0 javadoc에서는 .apply()메서드가 deprecated되었으니 .with()을 대신 쓰라고 되어있다. //다른 github 예제들은 jwtSecurityConfig를 따로 작성하지 않고 //addFilterBefore을 사용하여 직접 추가해주고 있는데, jwtSecurityConfig 또한 내부적으로 addFilterBefore을 사용해서 httpSecurity에 추가해줄 수도 있다. .with(new JwtSecurityConfig(tokenProvider), customizer -> {}); return http.build(); } } implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.12.3' runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.12.3' runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.12.3' import javax.crypto.SecretKey; //나머진 동일하여 생략 public String createToken(Authentication authentication){ String authorities = authentication.getAuthorities().stream() .map(GrantedAuthority::getAuthority) .collect(Collectors.joining(",")); long now = (new Date()).getTime(); Date validity = new Date(now + this.tokenValidityInMilliseconds); return Jwts.builder() .subject(authentication.getName()) .claim(AUTHORITIES_KEY, authorities) .signWith((SecretKey) key, Jwts.SIG.HS512) .expiration(validity) .compact(); } public Authentication getAuthentication(String token){ Claims claims = Jwts .parser() .verifyWith((SecretKey) key) .build() .parseSignedClaims(token) .getPayload(); Collection<? extends GrantedAuthority> authorities = Arrays.stream(claims.get(AUTHORITIES_KEY).toString().split(",")) .map(SimpleGrantedAuthority::new) .collect(Collectors.toList()); User principal = new User(claims.getSubject(), "", authorities); return new UsernamePasswordAuthenticationToken(principal, token, authorities); } public boolean validateToken(String token){ try { Jwts.parser().verifyWith((SecretKey) key).build().parseSignedClaims(token); return true; } catch(SecurityException | MalformedJwtException e){ logger.info("잘못된 JWT 서명입니다."); } catch(ExpiredJwtException e){ logger.info("만료된 JWT 토큰입니다."); } catch(UnsupportedJwtException e){ logger.info("지원되지 않는 JWT 토큰입니다."); } catch(IllegalArgumentException e){ logger.info("JWT 토큰이 잘못되었습니다."); } return false; }
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ServletInitializer
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의와 상관없지만 궁금해서 여쭤봅니다! 이전 기본편과 다르게 프로젝트 생성 후 ServletInitializer class가 별도로 생성된 이유는 무엇인가요?
-
해결됨Microservice 내부 아키텍처 와 EventStorming 설계
VO 관련 궁금한점
VO Money 에서 add(money:Money) 함수에 대해서 궁금합니다.VO는 불변인데 Money를 초기화 해서 값을 재할당 하는건지 어떤식으로 이해하면 좋을지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpingConfig가 궁금합니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의 중 SpingConfig 클래스의 작동방식이 궁금해서 질문 올립니다!@Autowired 아래 생성자에 매개변수에는 bean에 있는 객체이거나 @Service, @Repository 등의 아래의 인스턴스가 들어가는 것 아니었나요?SpringConfig 생성자의 매개변수에 MemberRepository를 구현한 JpaMemberRepository의 인스턴스가 들어가야하는 것으로 알고있습니다.어떠한 구조로 스프링 컨테이너가 JpaMemberRepository의 인스턴스를 넣어서 호출해주는 것인지 궁금합니다!!+찾아보던 중 스프링 데이터 JPA는 JpaRepository와 같은 인터페이스를 상속받은 인터페이스를 스캔하여 자동으로 빈으로 등록한다는 사실을 확인하였습니다
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다!
강의자료 부탁드리겠습니다 ~ julie2452@naver.com 감사합니다. :)
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
섹션1 - 외워야 할 단위 체계 #2 부분 질문
안녕하세요. 최호성 선생님.현재 좋은 강의 잘 수강하고 있습니다.넓고 얕게 외워서 컴공 전공자 되기 강의중섹션1 - 외워야 할 단위 체계 #2 부분에서 이해가 안 되는 부분이 있습니다.비슷한 질문을 강의 내 커뮤니티에서도 참고를 했는데도 약간 이해가 안 돼서 직접 문의드립니다.16비트의 경우 65,536가지의 경우의 수가 있고, 65,536 Bytes로 단위가 올라가면서 64KB가 된다고 하셨는데단위가 올라가는 개념은 이해가 되나메모리에서 데이터를 다루기 위한 최소 단위가 1바이트이고 1바이트는 곧 8비트를 의미하는 것으로 압니다.그럼 16비트 자체는 2바이트라고 볼 수 있을 텐데 강의에서 알려주시는 16비트는 65,536가지의 경우의 수가 65,536 Bytes가 되는 개념이 '1바이트를 관리하기 위한 메모리 주소가 총 65536개 있음'이라고 질문 글에 답변 주신 것을 봤습니다.16비트 -> 2바이트16비트 -> 65,536바이트(메모리 주소 개수)이렇게 놓고 본다면 위의 16비트 -> 65,536 바이트라는 개념에서 바이트->비트 단위로 다시 계산해 본다면 524,288비트로 계산이 되어서 위 2개의 경우가 서로 다른 개념이라고 생각이 되기는 하는데.. 어떻게 다른 개념인지 이해가 잘 안됩니다.'16비트 -> 2바이트'는 단순 메모리 저장 단위 개념?'16비트 -> 65,536바이트'는 운영체제 내부에서 메모리 사용되는 값의 개념?이렇게 두 가지가 다른 경우라고 이해하는 게 맞을까요?말씀처럼 넓고 얕게 외우고 싶은데 이 부분은 헷갈려서 어떻게 얕게 외워야 할지 모르겠습니다...개념이 제대로 안 잡혀서 질문을 제대로 드렸는지도 모르겠습니다..도움 부탁드립니다!감사합니다.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
npx sequelize db:create시 오류발생
npx sequelize db:create 명령어 실행 시이러한 오류가 발생합니다. npm i 와 mysql이 시작된 걸 확인한 후에npx sequelize db:create 명령어를 실행해도위의 오류가 발생합니다.구글링을 통해 찾아서 해결해보려했지만 , 해결이 잘 되지않아 질문을 드립니다.