inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

need more stock

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 상품주문 test에서 코드를 똑같이 따라 쳤는데 need more stock exception이 나요 그리고 그 아래 상품주문_재고수량초과 테스트를 적을 때 @Test 에 expected를 적는데 expected라는 메소드를 해결할 수 없다고 빨간줄이 떠요링크 공유합니다 https://drive.google.com/file/d/1Yr0w6SZWSH3Usqd8Gbx8bhQTcfRmmWHz/view?usp=sharing

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
영한공유 댓글 1 좋아요 0 조회수 302

DB Lock 대신 Redis를 이용하는 이유

미해결

실습으로 배우는 선착순 이벤트 시스템

DB Lock을 이용하면 시간이 오래 걸린다는 성능 저하 문제가 발생하기 때문에 Redis를 써야 한다고 이해하였습니다. 하지만 강의 영상에서는 Redis가 싱글스레드를 이용한다고 하셨는데 그럼 똑같이 DB Lock과 마찬가지로 시간이 오래걸리는 것이 아닌가요..?

  • java
  • docker
  • spring-boot
  • kafka
  • redis
응애 나 아기 개발자 댓글 1 좋아요 0 조회수 640

새로운 Authentication 객체 생성 코드 작성 시 error

미해결

안녕하세요. spring security 를 이용하여 회원가입을 하고 회원수정부분을 하고 있는 중입니다. 문제는 UserController.java 에서 Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(userDto.getUsername(), userDto.getPassword())); SecurityContextHolder.getContext().setAuthentication(authentication); 이 코드를 작성하면 error 메세지가 아래와 같이 뜹니다;; 2024-02-27T15:58:28.207+09:00 WARN 85046 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' is not supported] 수정페이지에서 버튼을 눌렀을 경우 js에서 put으로 잘보낸것같고 @PutMapping으로 잘 받은것 같은데 뭐가 문제일까요..? UserController에서 위의 코드를 지우면 error메세지는 나오지않지만 authentication 객체정보가 변경되지않아 update.html에 변경된 정보로 나오지않고 있습니다.;; update.html <div class="row justify-content-center" sec:authorize="isAuthenticated()"> <section> <div class="col-12 mb-30 text-center"> <h3>회원수정</h3> </div> <div class="col-12 mb-15"> <form> <input type="text" name="id" Id="id" placeholder="id" th:value="${#authentication.principal.id}" > <input type="text" name="role" Id="role" placeholder="role" th:value="${#authentication.principal.role}" > <input type="text" name="provider" Id="provider" placeholder="provider" th:value="${#authentication.principal.provider}" > <input type="text" name="providerId" Id="providerId" placeholder="providerId" th:value="${#authentication.principal.providerId}" > <div class="form-group"> <label for="username">아이디</label> <input type="text" name="username" Id="username" placeholder="id" th:value="${#authentication.principal.username}" pattern="[A-Za-z]+" > </div> <div class="form-group"> <label for="password">비밀번호</label> <input type="password" name="password" id="password" placeholder="password" onkeyup="pwCheck()"> <div id="pw-result"> 5자 이상이어야합니다. </div> </div> <div class="form-group"> <label for="email">이메일</label> <input type="email" name="email" id="email" placeholder="email" th:value="${#authentication.principal.emial}" readonly> </div> <div class="form-group"> <label for="email">닉네임</label> <input type="text" name="nickname" id="nickname" placeholder="nickname" th:value="${#authentication.principal.nickname}" onkeyup="nicknameCheck()" required> <div id="nickname-result"> 3~8글자여야합니다. </div> </div> </form> <div class="text-center"> <button class="btn bg_03A3F1 color-fff" id="btn-update">회원수정</button> </div> </div> </section> </div> update.js let index = { init: function(){ $("#btn-update").on("click", ()=>{ // function(){} , ()=>{} this를 바인딩하기 위해서!! this.update(); }); }, update: function(){ //alert('user의 save함수 호출됨'); let data = { id: $("#id").val(), username: $("#username").val(), password: $("#password").val(), email: $("#email").val(), nickname: $("#nickname").val(), role: $("#role").val(), provider: $("#provider").val(), providerid: $("#providerid").val() }; $.ajax({ type: "PUT", url: "/update", data: JSON.stringify(data), // http body데이터 contentType: "application/json; charset=utf-8",// body데이터가 어떤 타입인지(MIME) dataType: "json" // 요청을 서버로해서 응답이 왔을 때 기본적으로 모든 것이 문자열 (생긴게 json이라면) => javascript오브젝트로 변경 }).done(function(resp){ alert("회원수정이 완료되었습니다."); //console.log(resp); location.href = "/"; }).fail(function(error){ alert(JSON.stringify(error)); }); }, } index.init(); UserController.java @RestControllerpublic class UserController { @Autowired private UserService userService; @Autowired private BCryptPasswordEncoder bCryptPasswordEncoder; @Autowired private AuthenticationManager authenticationManager; @PutMapping("/update") public ResponseDto<Integer> update(@RequestBody UserDto userDto){ System.out.println(userDto); String rawPW = userDto.getPassword(); String encPW = bCryptPasswordEncoder.encode(rawPW); System.out.println("1"); userDto.setPassword(encPW); userService.update(userDto); System.out.println("2"); Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(userDto.getUsername(), userDto.getPassword())); SecurityContextHolder.getContext().setAuthentication(authentication); // System.out.println("authentication 정보 : "+authentication); System.out.println("3"); return new ResponseDto<Integer>(HttpStatus.OK.value(), 1);//자바오브젝트를 JSON으로 변환해서 리턴 } } SecurityConfig.java @Configuration // @EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터체인에 등록 //@EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled = true) @EnableMethodSecurity(securedEnabled = true) public class SecurityConfig{ @Autowired private PrincipalOauth2UserService principalOauth2UserService; private final PrincipalDetailsService userDetailsService; public SecurityConfig(PrincipalDetailsService userDetailsService) { this.userDetailsService = userDetailsService; } @Bean public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception { return authenticationConfiguration.getAuthenticationManager(); } protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailsService) .passwordEncoder(encodePwd()); } @Bean public BCryptPasswordEncoder encodePwd() { return new BCryptPasswordEncoder(); } @Bean public LoginSuccessHandler loginSuccessHandler(){ return new LoginSuccessHandler(); } @Bean public LoginFailureHandler loginFailureHandler(){ return new LoginFailureHandler(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http.csrf(CsrfConfigurer::disable).cors(Customizer.withDefaults()); http.formLogin((formLogin) -> formLogin.loginPage("/loginForm").loginProcessingUrl("/login").successHandler(loginSuccessHandler()).failureHandler(loginFailureHandler())) .authorizeHttpRequests(authorize -> authorize .requestMatchers("/admin/**").hasAnyRole("ADMIN") // /center/** url => admin 권한이 있는 사용자만 접근 가능 .anyRequest().permitAll() // 권한을 주지않은 url 이 아니면 접근 허용 ).oauth2Login((oauth2) -> oauth2 .loginPage("/loginForm").userInfoEndpoint(userInfoEndpoint -> userInfoEndpoint .userService(principalOauth2UserService)).successHandler(loginSuccessHandler()).failureHandler(loginFailureHandler())) ; return http.build(); } } 이렇게 작성이 되어있는 상태인데요.

볼빵빵오춘기 댓글 1 좋아요 0 조회수 301

결제창 출력이 되지 않습니다.

미해결

파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편

<script src=" ">https://cdn.iamport.kr/v1/iamport.js"></script> <script>(function(){const IMP = window.IMP;const code = "iamport";IMP.init(code);const merchant_uid = "merchant_" + new Date().getTime();IMP.request_pay({merchant_uid: merchant_uid,name: "주문 테스트",amount: 100, }, function(response){// 결제 끝났을 때console.log(response); }); })();</script> KGINICIS Standard Pay Call Failed V901 : 잘못된 접근 방식입니다. 잠시 후 다시 시도해주세요. => 영상과 동일하게 진행하였지만 잘못된 접근이라며 결제창이 뜨지 않습니다.영상 시점과 지금 시점의 api 링크나 접근 방법이 달라진 것일까요?

  • python
  • django
최은택 댓글 2 좋아요 0 조회수 914

칩에 대해서 공부해봅시다 1분 41초 질문

해결됨

[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.

'자원이 풍부한편'이라고 되어있는데 여기서 자원이 어떤 의미인지 궁금합니다.

  • Raspberry-Pi
  • arduino
  • 임베디드
난다요 댓글 1 좋아요 0 조회수 216

amazon EKS 원클릭 배포 및 기본 스토리지 실습 문의.

미해결

CloudNet@ - Amazon EKS 기본 강의

https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-2#/stacks/new?stackName=myeks&templateURL=https:%2F%2Finflearnaeb.s3.ap-northeast-2.amazonaws.com%2Feks-oneclick2.yaml 해당 파일을 다운로드 받아 region만 수정하여 CloudForatmation을 실행하면 다음과 같은 Stack만 생성되고 다른 stack이 생성되지 않습니다. 앞선 실습에선 node도 생성이 되고 했는데요...지금은 저것만 생성이 되고 다른건 생성이 안됩니다.

  • 네트워크
  • aws
  • kubernetes
  • amazon-eks
  • eks
Cheonho 댓글 2 좋아요 0 조회수 311

외래키 On Delete SET NULL 관련

해결됨

비전공자의 전공자 따라잡기 - 데이터베이스,SQL

안녕하세요~ 타임어택 2주차 수강하고 있습니다~ "섹션2의 처음 만나는 DDL" 강의 9분 32초에서 employee 테이블에서 외래키 생성에 필요한 role_id 컬럼 만드실 때 NOT NULL을 체크하셨는데요~ 그 다음 강의(on update, on delete)에서는 이게 해제되었더라구요. 외래키 설정에서 On Delete - SET NULL을 하면 NOT NULL 속성이 문제가 되는데 강의에서는 그 설명이 없어 보이더라구요. 아마 강의 편집 과정에서 NOT NULL을 적용하면 중간에 서로 모순되어 에러가 나는 부분을 덜어낸 것으로 보여집니다. SET NULL을 하면 employee.role_id의 값만 지워지는 점을 강의시간 때 설명 해주셨기 때문에 NOT NULL을 선택하면 안되는 게 맞을거라 생각합니다. 제가 맞게 알고 있는지 궁금해서 질문 드립니다. 감사합니다!

  • sql
  • mysql
  • dbms/rdbms
  • mysql-workbench
Yonggu Choi 댓글 1 좋아요 1 조회수 416

키보드 소리가 너무커요

미해결

Jenkins를 이용한 CI/CD Pipeline 구축

강의인데 키보드 소리가 너무 커서 거슬려요 조용한 키보드좀 써서 찍으면 안될까요?

  • ansible
  • jenkins
  • kubernetes
  • ci/cd
  • sonarqube
jwleesh 댓글 1 좋아요 1 조회수 416

mariadb 접속 관련해서 질문 있습니다.

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

강의에서 권한을 주는 부분을 보기 전에 작성해주신 아래와 같은 Dockerfile을 사용하였을 경우 실행이 되지 않았습니다. 1번 FROM mariadb ENV MYSQL_ROOT_PASSWORD rlaxogjs8312 ENV MYSQL_DATABASE mydb COPY ./mysql_data/mysql /var/lib/mysql EXPOSE 3306 그래서 저는 복사하는 폴더가 문제인가 해서 COPY부분을 아래와 같이 바꿔서 mydb만을 복사하도록 하였습니다. 2번 FROM mariadb ENV MYSQL_ROOT_PASSWORD rlaxogjs8312 ENV MYSQL_DATABASE mydb COPY ./mysql_data/mysql/mydb /var/lib/mysql EXPOSE 3306 이렇게 하였더니 db가 제대로 복사가 되지는 않았지만 로컬에서 접속이 가능하였습니다. 그래서 왜 복사가 안되는거지.. 고민하다가 나머지 강의를 듣고 다시 1번으로 빌드 후 실행한 뒤에는 복사도 잘 되었음을 확인하였습니다. 궁금한 점은 다음과 같습니다. 왜 2번 Dockerfile의 경우 복사는 제대로 되지 않았는데 로컬호스트에서 DB에 접속이 가능했었던 건지 궁금합니다. 만약 COPY가 아니라 VOLUME을 적용해서 한 과거 기억을 되살려보면 권한은 문제가 없었던 것 같은데 권한은 해당 Docker Container에 어떤 이유때문에 적용해야하는 것인지 궁금합니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
김태헌 댓글 2 좋아요 0 조회수 582

에러

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 내용] 위와 같이 application.properties 도 공백없이, 빠짐없이 작성하고 나머지 코드도 강의교재 복붙해서 넣었는데 이름 등록 버튼 누르면 다음과 같은 에러가 뜹니다... 도움 부탁드립니다! 2024-02-27T15:02:44.697+09:00 INFO 10564 --- [nio-8080-exec-7] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2024-02-27T15:02:46.290+09:00 ERROR 10564 --- [nio-8080-exec-7] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-224] 2024-02-27T15:02:46.293+09:00 ERROR 10564 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection] with root cause org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-224]

  • java
  • spring
  • mvc
  • spring-boot
최은영 댓글 3 좋아요 -1 조회수 974

graphQL 오류 질문

미해결

요청하기 버튼을 클릭하면 이와 같이 오류가 계속 뜹니다. 강의와 똑같이 코드를 입력했는데도 계속 오류가 발생되는 이유가 뭘까요? ㅜㅜ 오타를 발견해 오타를 모두 수정했는데도 똑같은 오류가 생깁니다. 혹시 제가 발견 못한 오타라도 있을까요?ㅜㅜ

융융 댓글 1 좋아요 0 조회수 145

이게 될지 잘 모르겠어서 질문드립니다.

해결됨

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

안녕하세요 일코님 덕분에 많이 해결되고 있는 작업들이 기쁩니다. 다름이 아니라 누름틀에 SetTextFile를 통해 작업을 하고 있습니다. 그러다보니 [누름틀 시작]과 [누름틀 끝] 사이에 페이지가 바뀌는 경우가 생기는데 이 경우 [누름틀 시작] 부분도 다음 페이지로 넘어가도록 설정하고 싶은 경우가 생기게 되었습니다. 혹시 이 같은 경우도 좋은 방법이 있을지 의견을 구해봅니다.

  • python
  • 한컴오피스
YongJun(Passion) 댓글 1 좋아요 1 조회수 278

안녕하세요! 강의를 듣다 궁금한 점이 생겨 질문드립니다!

해결됨

포트폴리오 초간단 배포하기

nginx 실습 중, 방화벽으로 포트번호가 막혀있어 직접 포트를 열어주는 작업을 하게되는데요. 이 부분이 혹시 aws 에서 인바운드 규칙을 설정해주는 작업과 동일한 부분인지 궁금합니다!

  • linux
  • github
  • nginx
진승현 댓글 1 좋아요 2 조회수 378

강의하신 강의자료

해결됨

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)

안녕하세요 해당 강의들에 대한 강의자료는 강사님께서 언제쯤 올려주시는지 여쭤봅니다~~!

  • 임베디드
  • arm-architecture
  • microprocessors
  • cortex-a
Blaire 댓글 1 좋아요 0 조회수 289

환경구축

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님. 이전에 학교 수업때문에 visual studio 만 써왔고 이번에 visual stduio code를 사용하고 싶어서 인터넷에서 gcc도 다운하고 구글링과 youtube보면서 이것저것해서 했는데 가끔 오류가 뜨더라구요.. 혹시 window에서 vs code 환경 구축하는 방법 알려주실 수 있으신가요? 교안에는 mac에서만 하는 방법이 있어서.. 그리고 dev++ 대신 visual studio 로 하면 환경이 달라서 안될까요?? 코테는 주로 dev++로 진행되나요??

  • c++
  • 코딩-테스트
Eunwoo 댓글 2 좋아요 0 조회수 399

윈도우 db 끄기

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의에서 선생님이 db끄면 실행안된다면서 보여주셨는데, 윈도우에서는 db 끄는 명령어가 뭔가요?

  • java
  • spring
  • mvc
  • spring-boot
최은영 댓글 1 좋아요 0 조회수 399

unit count 초기화 관련 질문있습니다.

해결됨

초보자도 쉽게 따라하는 블록체인 프로그래밍(코인제작포함)

안녕하세요! 컨트랙트 개발 쪽에 관심이 생겨서 어제부터 수업 수강하고 있는데 너무 잘 듣고 있습니다:) 좋은 수업 감사합니다. '카운터 컨트랙트를 통해서 블록체인 기록여부 확인하기' 강의의 코드에 대해 궁금한 점이 있어 글 남깁니다. unit count; 이렇게 작성하면 저절로 count 변수에 0이 할당되는 걸까요? 따로 0 초기화를 안 해줘도 상관없는 건지 궁금합니다! getCount 함수에서 view 키워드를 반드시 적어줘야 하는 건가요? 감사합니다.

  • 블록체인
  • ethereum
  • solidity
pingu 댓글 1 좋아요 1 조회수 355

강의시 참조하는 노션 문서 질문 합니다.

해결됨

Vue3 완벽 마스터: 기초부터 실전까지 - "기본편"

안녕하세요. 강의가 귀에 쏙쏙 들어오고 이해하기 쉽게 설명해주셔서 감사합니다. 다름이 아니고 강의에서 참조하는 노션 문서를 볼 수 있나요? 볼 수 있으면 어디서 볼 수 있나요? 감사합니다.

  • vue.js
김훈기 댓글 1 좋아요 0 조회수 329

프로젝트 생성시 Srping MVC Project 없음

미해결

스프링 프레임워크는 내 손에 [스프1탄]

안녕하세요 선생님. 전자정부프레임워크 4.0 다운받고, 스프링 레거시 -> Spring MVC Project 하려고하는데 보이지가 않습니다... Template Project에서 spring-defaults 제외하고 나머지도 다 지워봤는데 계속 안나오고, 혹시 몰라서 자바 버전도 변경해봤는데 안나옵니다.. 혹시 어떻게 해야할까요?

  • jsp
  • spring
  • mvc
  • spring-security
최봉준 댓글 6 좋아요 0 조회수 4780

인기 태그

인프런 TOP Writers

주간 인기글