묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티
스프링 신버전 : 유저 생성 코드 공유합니다
@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님 강의 덕분에 감이 좀 잡혀가는 것 같습니다! 앞으로도 열심히 공부해보겠습니다.
-
미해결스파크 머신러닝 완벽 가이드 - Part 1
StringIndexer와 IndexToString (vectorassembler)
스파크 환경에서 모델링 단계(VectorAssembler부터 이해가 안되어서 일단 쭉 듣고 있습니다.) 대한 개념이 모호해서 쭉 몇회씩 돌린다는 느낌으로 듣는 중인데요,[인코딩 개요 및 레이블 인코딩 실습]의 8:00 ~ 8:45 구간에서(StringIndexer는 fit이 있지만)"IndexToString 는 fit 없이 transform만 있다. VectorAssembler와 같이 transform만 있다." 라는 식으로 말씀을 주셨는데 이 transform만 가능하다는 점이 모호해서 질문드립니다.fit을 해줘야 하는 경우(StringIndexer)와 transform만 해줘도 되는 경우(IndexToString)를 바로 구분할 수 있을 만한 포인트(차이점)가 있을지 궁금합니다. 이런 경우들을 일일히 다 외워줘야 하는걸까요, 아니면 어떤 규칙성 같은 게 있을까요?
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
ansible server 에서 tomcat 작동 문의드렵니다.
안녕하세요 훌륭한 강의를 만들어주셔서 열심히 수강중입니다.궁금한 사항이 있어서 문의드립니다.playbook 실행하면 status 가 exited 로 나오고 실행이 안되어 로그를 보면 아래와같이 setclasspath.sh 가 실행 안된다고 하는데 진행이 안되어 문의드립니다. ^^[root@a8bb52dfa2b3 ~]# docker logs bd8ccc0ef6b5Cannot find /usr/local/tomcat/bin/setclasspath.shThis file is needed to run this program
-
미해결빠르게 git - 핵심만 골라 배우는 Git/Github
브랜치를 main(master) 와 동기화 하고 싶을 때
안녕하세요. main에만 commit 된 내용이 있는상황에서 branch를 main과 상태를 같이 하려면 branch에서 main을 머지시키면 되나요? $ git checkout main$ git pull코드수정 commit이후 branch1을 main과 코드 상태를 같이만드려면 아래와 같이 하면 될까요? $ git checkout branch1$ git merge main$ git push현업에서 브랜치에서 코드수정+ 테스트 후 main에 머지를 하는 방향으로 하고 싶은데,요약하면 main에는 이미 변경사항이 많이 적용되어 있고, branch에는 main의 변경사항이 모두 반영되어 있지 않은 경우, main과 branch를 같이 만든 후 branch 에 코드 변경작업을하고 싶습니다.
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
스타일관련문의드립니다
선생님 강좌 하다보니까 스타일 관련이 좀어려운 부분이 있는데요혹시 스타일 쉽게 구현하는 법이 있나요? 미디어쿼리 z인덱스니 포지션 이런거 한번에 해결해주는 툴은없는지요?
-
미해결스파크 머신러닝 완벽 가이드 - Part 1
mlflow 관련
MLFlow 강의 보며 실습해보았는데요, mlflow 링크 메시지가 확인되지 않습니다. 혹시 어떤 이유 때문인지 알 수 있을까요?