묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
api를 받아올 때, async에 대해 질문 있습니다.
늘 선생님의 강의를 보며 감사히 배우는 중입니다.강의에서는 created를 통해 api를 받아오셨는데구글에서 async mounted로 api를 받아오는 경우를 종종 봤습니다. mounted에서 비동기적으로 async로 감싸서 사용하는 경우는 보통 어떤때인가요???그리고 이런 라이프사이클 앞에 async를 붙이는 목적은 무엇때문인가요?? 제가 비동기는 많이 약해서 여쭤봅니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
th:each 작성후 html 테이블에 값이 나오지 않습니다.
안녕하세요. html이 잘 작동되고 있었으나 아래의 코드를 작성 후 목록 값이 나오지 않고 있습니다ㅠㅠ<tr th:each="item : ${items}"> <td><a href="item.html" th:href="@{/basic/items/{itemId}(itemId=${item.id})}" th:text="${item.id}">회원id</a></td> <td><a href="item.html" th:href="@{|/basic/items/${item.id}|}" th:text="${item.itemName}">상품명</a></td> <td th:text="${item.price}">10000</td> <td th:text="${item.quantity}">10</td> </tr>혹시 몰라 전체 코드도 함께 첨부하겠습니다.<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <link href="../css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"> </head> <body> <div class="container" style="max-width: 600px"> <div class="py-5 text-center"> <h2>상품 목록</h2> </div> <div class="row"> <div class="col"> <button class="btn btn-primary float-end" onclick="location.href='addForm.html'" th:onclick="|location.href='@{/basic/items/add}'|" type="button">상품 등록</button> </div> </div> <hr class="my-4"> <div> <table class="table"> <thead> <tr> <th>ID</th> <th>상품명</th> <th>가격</th> <th>수량</th> </tr> </thead> <tbody> <tr th:each="item : ${items}"> <td><a href="item.html" th:href="@{/basic/items/{itemId}(itemId=${item.id})}" th:text="${item.id}">회원id</a></td> <td><a href="item.html" th:href="@{|/basic/items/${item.id}|}" th:text="${item.itemName}">상품명</a></td> <td th:text="${item.price}">10000</td> <td th:text="${item.quantity}">10</td> </tr> </tbody> </table> </div> </div> <!-- /container --> </body> </html>
-
미해결Data Engineering Course (1) : 빅데이터 하둡 직접 설치하기
특정 부분에서의 미동작
안녕하십니까 ㅎㅎㅎ이 고개만 넘기면 하둡을 본격적으로 학습할 수 있을 것 같아서 기대하며 질문 남깁니다!참고로, 하둡 버전의 경우 말씀 주신 사이트에 가서 확인해보니 3.2.1 버전이 현재 없어서, 기존 질문 글 참고해 3.2.3 버전으로 다운 받고 실행했습니다...!현재 제 상황을 화면으로 보여드리면 다음과 같습니다.sbin/start-dfs.sh를 실행하고, start-yarn.sh를 각각 실행하고 jps로 현재 진행 상황을 확인해보니, start-yarn을 통해 NodeManager와 ResourceManager는 실행이 되는데, namenodes, datanodes 그리고 secondary namenodes가 실행이 되지 않습니다..ㅎㅎㅎ혹시 sbin/start-dfs.sh를 통해 namenodes, datanodes, secondary namenodes들이 실행되지 않는다면 어떤 스크립트를 중점적으로 다시 확인해봐야하는지 알 수 있을까요? (전체적으로 다시 다 리뷰하긴 했지만..)추가적으로, 저는 강의에서 나오는 파일 경로상의 neuavenue를 전부 joshuaj로 수정해놓은 상태인데 마지막에 start-dfs에서 terminal에서 나오는 건 [joshuaj-VirtualBox]라.. 혹시 파일 경로상의 joshuaj를 joshuaj-VirtualBox로 바꿔야하나요...?또한 오류 발생 원인으로 의심되는 부분이 또 있는데, 강의 상에서는 들여쓰기가 이렇게 되어있는데 저는 어떻게 하는지 몰라서Tab키를 활용해이렇게 스크립트를 적었는데 이것이 문제의 원인일 수도 있을까요?
-
미해결스프링 핵심 원리 - 기본편
NullPointerException 질문입니다.
[오류 내용][AutoAppConfig.class][OrderServiceImpl.class][AllBeanTest]그리고 RateDiscountPolicy와 FixDiscountPolicy 모두 @Component 애너테이션이 달려 있습니다.[질문]자동 주입시 충돌이 발생되서 RateDiscountPolicy는 @Primary 애너테이션을 붙였습니다. 그리고 AllBeanTest를 테스트 한 결과 fixDiscountPolicy 값이 null 값으로 할당이 되었어요..RateDiscountPolicy의 @Primary 때문이라고 생각되는데요.. null 값을 받지 않도록 AppConfig.class를 넘겨서 수동적으로 하면 테스트는 성공합니다. [의식의 흐름]OrderServiceImpl의 생성자에 DiscountPolicy의 의존관계를 주입하려고 보니 자식 타입이 두 개여서 충돌이 발생한다.이를 해결하기 위해 rateDiscountPolicy에 @Primary를 붙여주었다.따라서 OrderServiceImpl의 생성자에 의존관계 주입시 RateDiscountPolicy의 타입을 선택한다. 따라서 스프링 빈 이름인 fixDiscountPolicy에는 null값이 들어가는 것이 맞다(?)null 값이 안들어가기 위해서는 수동적으로 주입하는 방법밖에 떠오르지 않습니다. 영한님께서는 자동의존관계 주입으로 fixDiscountPolicy와 rateDiscountPolicy 모두 테스트에 성공하셨는데 제가 어떤 부분을 놓쳤는지 모르겠습니다. null 뜨는 것은 맞는 것 같은데 null 안뜨게 하기 위해서 어떻게 바꿔야하는지에 대한 물음표입니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest 에러가 납니다
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jpabook.jpashop.MemberRepositoryTest': Unsatisfied dependency expressed through field 'memberRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'jpabook.jpashop.MemberRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}에러가 납니다MemberMemberRepositoryapplication.ymlMemberRepositoryTest
-
미해결스프링 시큐리티
스프링 신버전 : 유저 생성 코드 공유합니다
@Bean public UserDetailsManager users() { UserDetails user = User.builder() .username("user") .password("{noop}1111") .roles("USER") .build(); UserDetails sys = User.builder() .username("sys") .password("{noop}1111") .roles("SYS") .build(); UserDetails admin = User.builder() .username("admin") .password("{noop}1111") .roles("ADMIN", "SYS", "USER") .build(); return new InMemoryUserDetailsManager( user, sys, admin ); }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
이동 동기화 관련
안녕하세요. 항상 좋은 강의 감사합니다.이 강의를 통해서 포트폴리오를 제작하려고 하고 있습니다.그런데 이동 관련에서 문제가 생겼습니다.2D 횡스크롤 처럼만들어서 캐릭터를 이동시키려고 합니다.캐릭터가 이동할 때마다 패킷을 보내고 있고상대방에게는 방향과 애니메이션은 잘 전송이 되는데posX와 posY는 적용이 되지 않습니다.movePacket에는 State, Dir, posX, posY 값이 잘 들어가 있습니다.서버와 클라간의 패킷값들도 정상적으로 잘 전달이 되어 있습니다.혹시 유니티 선생님 강의와 다르게 박스콜라이더와, 리지드바디를 적용을 했는데이것이 이동패킷에 영향을 주기도 하나요..?breakpoint를 계속 찍어가면서 오류발생구간을 찾고 있는데도값이 매우 잘 들어가 있어서 더 혼란입니다.어떻게 해결을 해야 하는지 여쭙고 싶습니다..
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
갑자기 127.0.0.1:8000/user-service/** 가 작동하지 않습니다..
안녕하세요 현재 Microservice간 통신의RestTemplate 사용 강의를 듣던중에 포스트맨으로 테스트를 하는데POST 방식 요청인127.0.0.1:8000/user-service/users127.0.0.1:8000/user-service/login 은 잘됩니다.<br>하지만 GET 방식 요청인127.0.0.1:8000/user-service/users127.0.0.1:8000/user-service/users/welcome127.0.0.1:8000/user-service/users/health_check127.0.0.1:8000/user-service/users/{userId} 가 먹히지 않습니다.즉 디버깅 브레이크 포인트도 안걸리고 그냥 401 에러가 발생합니다...즉,127.0.0.1:8000/user-service/login 으로 얻은 response의 Header에 있는 token을가지고요청할 때 Bearer Token에 넣어도 401 에러가 발생합니다...난감합니다...갑자기 잘 되다가 왜이런지 모르겠네요..분명 apigateway-service의 application.yml에get방식은 AuthorizationHeaderFilter 를 걸어줬습니다..- id: user-service uri: lb://USER-SERVICE predicates: # 조건절이다. - Path=/user-service/** - Method=GET filters: - RemoveRequestHeader=Cookie - RewritePath=/user-service/(?<segment>.*), /$\{segment} - AuthorizationHeaderFilter<br>그런데 정말 이해가 안가는것이get 방식으로127.0.0.1:8000/user-service/** 요청을 하면 Bearer Token을 정상적으로 넣어도 401 에러가 발생하는데get 방식으로 user-service의 자체 포트번호를 넣고127.0.0.1:67026/** 이런식으로 요청하면 BearerToken을 잘못 넣어도 정상적으로 작동합니다...대체 왜이런거죠??<br>참고로 현재 저는 대칭키 방식을 이용한 암호화를 사용하고 있습니다.(비대칭키 암호화는 적용하지 않았습니다.)그런데 이것은 user-service에서 get방식으로 요청하는데 문제가 있어보이지는 않습니다..어떻게 하면 get방식에서 401 에러를 발생하지 않도록 할 수 있을까요?아니면 더 확인해야할 정보가 뭐가 있을까요?감사합니다.<br>현재 apigateway-service의 application.yml이 아래와 같이 되있고spring: cloud: config: uri: http://127.0.0.1:8888 name: ecommerce # ecommerce.yml 파일을 가져온다.native에 있는 ecommerce.yml 은 다음과 같습니다.token: expiration_time: 86400000 secret: user_token_native_ecommerce gateway: ip: 192.168.45.163참고로 token.secret이 user_token_native_ecommerce는 해당 ecommerce.yml 파일 밖에 없기 때문에 경로는 확실합니다. ( 확실히 config-service 의 application의 search-locations 경로 안에 ecommerce.yml 파일이 있습니다.)대체 뭐가 문제여서 get 방식으로127.0.0.1:8000/user-service/** 요청이 401 에러가 발생하는 것일까요?<br>혹시나해서 UserController도 같이 올려봅니다.@RestController @RequestMapping("/") public class UserController { private Environment env; private UserService userService; @Autowired private Greeting greeting; @Autowired public UserController(Environment env, UserService userService) { this.env = env; this.userService = userService; } @GetMapping("/health_check") public String status() { return String.format("It's Working in User Service" + ", port(local.server.port)="+ env.getProperty("local.server.port") + ", port(server.port)="+ env.getProperty("server.port") + ", token secret="+ env.getProperty("token.secret") + ", token expiration time="+ env.getProperty("token.expiration_time")); } @GetMapping("/welcome") public String welcome() { //return env.getProperty("greeting.message"); return greeting.getMessage(); } @PostMapping("/users") // 제네릭타입으로 반환할 형태도 명시할 수 있다. public ResponseEntity<ResponseUser> createUser(@RequestBody RequestUser user) { ModelMapper mapper = new ModelMapper(); mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); // RequestUser를 UserDto로 매핑한다. UserDto userDto = mapper.map(user, UserDto.class); userService.createUser(userDto); // userDto 를 ResponseUser 형으로 변경한다. ResponseUser responseUser = mapper.map(userDto, ResponseUser.class); // rest api 식으로 반환하자 return ResponseEntity.status(HttpStatus.CREATED).body(responseUser); // 201번 성공코드 반환 } @GetMapping("/users") public ResponseEntity<List<ResponseUser>> getUsers() { Iterable<UserEntity> userList = userService.getUserByAll(); List<ResponseUser> result = new ArrayList<>(); userList.forEach(v -> { result.add(new ModelMapper().map(v, ResponseUser.class)); }); // v를 ResponseUser 클래스로 변경 return ResponseEntity.status(HttpStatus.OK).body(result); } @GetMapping("/users/{userId}") public ResponseEntity<ResponseUser> getUser(@PathVariable("userId") String userId) { UserDto userDto = userService.getUserByUserId(userId); ResponseUser returnValue = new ModelMapper().map(userDto, ResponseUser.class); return ResponseEntity.status(HttpStatus.OK).body(returnValue); } }
-
미해결실무에서 바로 쓰는 영어 이메일
강의자료요청
수업 잘 듣고 있습니다강의자료 전송 부탁드립니다lovezktl500@gmail.com 입니다
-
미해결홍정모의 따라하며 배우는 C++
구구단 코드 리뷰 부탁드립니다!
(사진)
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
항상 좋은 강의와 답변 감사합니다.
강사님께서 알려주신 컬렉션 최적화 강의 덕분에 querydsl 가지고 각종 조회 쿼리들을 편안하게 짜고 있습니다. 감사합니다. 사용 중에 궁금한 점이 생겨 질문을 하게 되었습니다. 만약에 테이블이 두 개의 toMany 관계로 있을 때, one에 해당하는 테이블을 먼저 조회하고 알려주신 방식대로 컬렉션 조회를 할 때, toMany에 있는 테이블을 orderby를 사용해서 정렬을 하게 될 경우toMany를 디비에서 끄집어 내고 정렬을 하고, 먼저 조회를 한 테이블도 정렬을 한 테이블의 정렬 순서대로 되는 것인지 궁금하여 질문을 하게 되었습니다.좋은 강의를 찍어주셔서 정말 감사합니다.!!!!
-
미해결타입스크립트 입문 - 기초부터 실전까지
eslint format on save 설정을 안하는 이유가 뭔지 궁금해요!
eslint 처음 설정부터 궁금했던 건데 .eslintrc.js 파일에는 "source.fixAll.eslint": true 설정도 돼있는데 왜 format on save는 체크 안하시는건지 궁금합니다..!저는 어떻게 해도 eslint 옵션이 하나도 적용되지 않고 있어요ㅜㅜ 그래서 그냥 prittier 켜고 했는데 eslint로만 하려고하면 자동으로 줄바꿈되고 자동으로 코드가 예쁘게 정리되지않아요원래 그런건가요? 감사합니다..!
-
미해결MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React
500번오류가뜹니다.
삭제된 글입니다
-
미해결홍정모의 따라하며 배우는 C++
bitset<>() 은 정수형 변수에만 적용되나요?
bitset<>() 이 단순하게 메모리에 저장된 bit 를 보여주는 함수라고 생각했는데 float 형 변수 몇개를 사용해보니 전부다 00000..000000이 나와서 질문 드립니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
마지막 토막 부분 생각할 때.
마지막 토막을 1,2 각각 생각할 때 궁금한 점이 생겼습니다. 마지막 토막이 2일때 (dp[i-2]) 토막이 1짜리 2개를 고려하지 않아도 되는 이유는 마지막 토막이 1일때 그 부분이 고려되기 때문인가요??
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
저도 계속 회원가입이 안됐는데 해결이 됐어요
npm install -g node-gypbcrypt 지웠다가 다시 깔았음둘 중 뭐때문에 정상작동하는지는 모르겠지만 저렇게 해서 해결했습니다.
-
미해결스프링 시큐리티
스프링 기초 질문 같아서 조금 부끄럽지만 어떻게 한 유저가 같은 쓰레드를 계속 쓰는지..
++추가적으로 찾아보다가 이제 조금 이해가 된 것 같습니다제 생각대로 매 요청 시마다 쓰레드가 바뀌는 것이 맞고, 그렇기 때문에 SecurityContextHolder를 clear해주는 것이며 요청 시마다 세션을 이용해서 요청을 인가받는 게 맞는 것이죠?SecurityContext를 매번 요청 시마다 불러와야야하는 건 요청에 대한 인가 정보를 불러오기 위함이고, 세션이라는 건 Security Context를 불러올 수 있는 키값으로 브라우저 종료, 혹은 일정 시간마다 만료되기 때문에 다시 로그인을 해줘야하는 것이구요.조금 멍청한 질문이였던 것 같은데 그래도 아직 확신을 못해서 확인받고자 질문을 그대로 두었습니다! 확인만 한 번 해주시면 감사하겠습니다!-안녕하세요 선생님 유익한 강의 너무 잘 듣고 있습니다.오늘 제가 처음으로 Thread Local에 대해 배우고, 공식 문서도 찾아봤지만 제가 기존에 배운 지식과는 상충되는 부분이 있어 도저히 잘 이해가 되지 않아 질문 올리게 되었습니다.다만 이 부분은 스프링 시큐리티 질문이 아니라 스프링 기초와 관계된 부분이라, 답변을 주지 않으셔도 할 말은 없습니다 ㅜㅜ 관련 검색어 혹은 링크라도 알려주실 수 있다면 정말 감사할 것 같습니다.제가 기존에 알기로 HTTP 연결은 매 요청, 응답 단위마다(Three Hand Shake)혹은 Keep-Alive 지속 시간 동안 연결되는 것이고 또한 WAS에서 제공하는 Dispatcher Servlet은 미리 쓰레드풀에 쓰레드를 생성해놨다가 이 요청 단위마다 쓰레드를 주고 반환하는 것을 반복하는 것으로 알고 있었습니다. 그리고 또한 쓰레드로 인해 정보가 원치 않게 공유되는 것을 막기 위해 매번 쓰레드 반환 시 해당 쓰레드를 클리어하는 것으로 알고 있습니다.그런데 어떻게 한 유저가 접속해서 브라우저를 종료하거나 혹은 만료 시간이 될 때까지 같은 쓰레드의 로컬 스토리지에 있는 정보를 이용할 수 있는 것인지가 너무 혼란스럽습니다.. ㅜㅜ;아니면 계속해서 세션을 반복적으로 불러오는 것인가요?제가 디버깅 경험이 부족하여 직접 확인하고 싶어도 어디를 건드려야할지 몰라 실천해보지는 못했습니다. ㅜㅜ
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
질문 있습니다
order service1, order service 2 에 각각 db가 있는경우(MQ로 동기화)order service1, order service2 - MQ server - db 2번 방법은 db는 한개 1, 2의 경우를 설명해주셨는데 ,2번에 경우에도 특정 시점에서는 MQ server에서 db로 주문이 저장 안되서 총 5개 저장했을 때 DB에 3개 저장되고 MQ server에 아직 2개가 있을 때 사용자를 검색했을 때 해당 사용자의 order이 3개일 수도 있지 않나요 ?
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
script package install 이슈
Settings>Install에서 script를 검색하면 강의 영상과는 다른 결과가 뜹니다.이전 질문을 보니 다음과 같이 답변이 있던데, URI Handling에서 Default Registration을 Prompt로 바꿔주어야하는것인가요? 여전히 script package가 보이지 않습니다.조금 더 상세한 설명 부탁드립니다.
-
해결됨따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
7강 AWS 관련 질문있습니다
안녕하세요! 7강 강의를 듣다가 궁금한 점이 생겨서 질문 드립니다!7강 제일 마지막에 AWS nginx 포트 맵핑 때문에 오류가 발생하였었는데요, 근데 travis.yml 파일을 살펴보니까 이미지 빌드는 Dockerfile.dev를 사용해서 했더라구요. travis CI를 통해 AWS에 소스파일을 전달해준다 하셨는데, 그럼 Dockerfile.dev 파일은 단지 AWS에 전달하기 전 test하는 이미지 빌드에서만 이용하는 거고 AWS에 소스파일이 전달 된 이후에는 AWS에서 자동으로 Dockerfile.dev말고 Dockerfile 파일을 찾아서 다시 이미지를 빌드해서 배포하는 건가요???항상 배포부분을 공부하려다 막막한 느낌이 있었는데 johnahn님 강의 덕분에 감이 좀 잡혀가는 것 같습니다! 앞으로도 열심히 공부해보겠습니다.