묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello.html을 실행했을때 포트번호와 주소창에 다른 내용이 추가되어 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]별다른걸 건드리지 않았음에도 포트번호가 8008에서 63342로 변경되어 나옵니다.추가로 그전과는 다르게 포트번호가 바뀌고 hello.html의 경로가 전부 출력되면서 뒤에 쿼리스트링? 같은 문구도 추가되는데 어떤 점이 잘못된건지 궁금합니다
-
미해결
firebase 연결 파일 재다운로드 관련
지금 저희 회사에서 개발하고 있는 앱에 푸시메세지와 애널리틱스, 다이나믹 링크를 사용하기 위해 파이어베이스를 사용하고 있는데, 파이어베이스 설정시에 다운받게 되는 google-service.json 파일 또는 GoogleService-Info.plist 파일을 콘솔에서 다시 다운받아서 연결해도 기존 설정에 문제가 없을까요?
-
미해결대세는 쿠버네티스 (초급~중급편)
노트북 minikube 환경에서 추가 node 설정 및 dashboard 확인 방법
$ minikube start \ --driver='docker' \ --profile='multinode-lab' \ --cni='calico' \ --kubernetes-version='stable' \ --nodes=3위에 처럼 노드 추가를 실행하고 $ minikube status -p multinode-lab 명령어 실행 및 Docker Desktop에서도 pods(containers)들이 running 되는것을 확인 하였습니다. 그런데 minikube dashboard를 실행하면 보이지 않고 기존의 kinikube 노드만 확인 됩니다. 추가된 노드들을 dashboard에서 확인할 수 있는 방법에 대해 알려 주시면 감사하겠습니다.
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
각 회차 문제지 파일 어디서 다운 받습니까?
문제 출력해서 보고 하려고 하는데 각 회차 문제지 파일 어디서 다운 받습니까?
-
미해결제대로 파는 Git & GitHub - by 얄코(Yalco)
대체 이메일 알려주세요 카카오이메일 먹통일 거 같은데...
질문은 강의페이지에 안내해놓은 이메일로 보내주세요!(이 페이지에 질문 X)현재 데이터센터로 티스토리마저 안되는데, 카카오 이메일 활용되어지고 있는지 궁금하네요, 저는 네이버로 질문할 거 보냈는데, 이메일 상태 보니 계속 발송 중이라고 뜨네요. 못받았으면, 대체 이메일 좀 알려주시면 감사하겠습니다.
-
미해결[리뉴얼] 타입스크립트 올인원 : Part2. 실전 분석편
Mac OS 에서는 F12 버튼 뭘로 입력하면 될까요?
5분 16초 즈음에 해당 타입이 선언되어 있는 리스트를 팝업 창 으로 보여주고 있는데요. 윈도우 에서는 F12 버튼을 클릭하면 보이는 걸로 알고 있는데, Mac OS 에서는 fn + F12 버튼을 클릭하면 해당 타입이 사용중인 File 로 이동되어 버리더라구요. 해당 타입이 선언되어 있는 팝업 형식으로 보려면 어떻게 해야 할까요??
-
미해결[D.P.(DappProject)] 디앱 프로젝트(NFT 생성, NFT 구매 및 판매)
블록체인 내의 데이터를 서버에 계속 update 시킬 수 있을까요?
안녕하세요!강의 외적인 질문을 드려도 될 지 모르겠네요.. 여쭤볼 곳이 마땅치 않아 프로젝트 진행 중 강의를 보고 많이 도움이 되어 여기에 올리게 되었습니다..ㅠㅠ NFT 관련 프로젝트를 진행 중에 있는데, 서비스에서 발생하는 NFT 거래 정보를 따로 서버에도 저장해주려고 합니다. 이럴 경우에는 서버에서 블록체인에 요청을 보내는 방법으로 구현해야 하나요..?블록체인에서 거래하는 과정이 서버와 별개다 보니, 프론트에서 블록체인에 대한 요청을 하거나 처리를 할 시 새로고침을 하거나 웹사이트를 꺼버릴 경우 서버에게 요청을 보내지 못하는 상황이 발생하더라구요..ㅠ즉, 컨트랙트가 성공해도 서버에 알려줄 수 없는 상황이 발생하는데, 이는 서버가 블록체인과 통신하는 방법으로 구현하는 방법 밖에 없을까요? 그리고 이렇게 구현한다면 지갑은 서버가 관리해야 하는지 궁금합니다..
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
ResultSet Cursor 방식 관련 질문 드립니다.
ResultSet 은 내부에 있는 커서 "cursor" 를 이동해서 다음 데이터를 조회할 수 있는데이 때 전체 결과 데이터는 DB 서버 내부의 메모리에 저장되는지 아니면 애플리케이션 서버 메모리에 저장되는 지가 궁굼합니다.
-
미해결스프링부트 시큐리티 & JWT 강의
구글 로그인 후, 구글 계정 선택 페이지
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님질 좋은 강의 올려 주셔서 잘 듣고 있습니다 ❤❤제가 지금 8강 수업을 듣고 있습니다.궁금한 점이 있습니다. 현재 로그인 창에서 구글 로그인 버튼을 누르면 구글 계정 중에서 선택하는 창이 떠야 하는데 이 과정 없이 바로 인덱스 페이지로 넘어가는 상태입니다. 어제까지는 구글 계정 선택하는 페이지가 중간에 떴는데 오늘은 갑자기 안되네요. 어제도 오늘과 마찬가지로 선택할 수 있는 구글 계정은 하나뿐이었습니다.어떤 부분이 문제일지 궁금합니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
Dockerfile 설정과 외부 리소스 의존성 관계
안녕하세요Dockerfile.dev나 Dockerfile 작성시RUN npm install 로 node.js 또는 react.js 등의 프레임워크 리소스파일을 받아오는데요물론 해당 프로젝트는 public cloud 를 이용한 예제이므로 전혀 상관없겠지만,만약 private cloud 또는 외부 리소스를 사용하기 어려운 제한된 환경에서는 어떤 방식으로 도커를 띄울 수 있나요?(java의 경우 gradle, maven 의존성을 private nexus repo에서 가져오는것처럼요)아키텍쳐 설명을 해주시면 감사하겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
유니찬이 전 왜 쓰러질가요?
맥북에서 유니티를 사용하고 있습니다.몇차례 스크립트도 확인하고 강의도 확인했는데 새로운 지점에 마우스를 클릭 하면 도착 후 유니찬이 쓰러집니다.맥북만 그런 현상이 생기는 건지 제가 뭘 체크 안한 것인지 문의 드립니다.감사합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
멀티쓰레드와 동시성문제
객체는 싱글톤으로 관리가 되는데 동시에 쓰레드로 요청하면 어떻게 작동하는 것인지 궁금합니다.첫번째 쓰래드가 사용하고 그 다음에 그 다음쓰레드가 사용되는 건가요??
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 요청 드립니다.
안녕하세요.강의자료 요청 드립니다.wine3354@naver.com 입니다.좋은 강의 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
libs파일이 없네요...
[질문 내용]gradle환경 만드는 과정에서 말씀해주신 대로 윈도우 환경에서 gradle.build를 하여서build successful이 나왔는데, 자꾸 cd build에 있는 libs파일이 없다고 나오네요. 실제로 들어가보니 libs파일이 없는데재 설치해도 마찬가지입니다. 환경변수 모두 java11로 되어있고 모든 setting이 java11로 되어있는데도 에러가 나니, 다음 과정으로 넘어갈 수가 없네요..
-
미해결아이폰 앱 개발 입문 1편
이미지 리소스 다운로드 불가
이미지 리소스 다운로드시 '링크된 파일 다운로드' 를 어떻게 선택하면 될까요? '다른 이름으로 링크 저장'시 다운로드가 불가해서 문의 드립니다.
-
해결됨스프링 시큐리티
2) 필터 초기화와 다중 보안 설정 강좌
WebSecurityConfigurerAdapter가 deparcated된 후 SecurityFilterChain을 빈으로 등록하여 사용중인데, @Order를 사용하지 않아도 두 개의 SecurityConfig 클래스가 충돌이 나지는 않습니다.그런데 순서를 명시적으로 보장하기 위하여 @Order를 사용해도 원하는 순서대로 등록이 되지 않고 클래스 이름의 오름차순으로 먼저 호출되어 Bean으로 등록 됩니다. 이렇게 하는 것이 좋은 방법은 아닌 거 같아 여쭤봅니다. 다른 방법이 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉처 2개 적용하기
안녕하세요!!!!제목 그대로 인터셉터를 2개 등록해서 사용하려고 했더니 Error creating bean with name 'memberApiController' defined in file [/Users/gimnayeon/Desktop/GreenProject/GrinGreen/out/production/classes/com/grin/GrinGreen/api/MemberApiController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberService': Unsatisfied dependency expressed through field 'passwordEncoder'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'webSecurityConfig': Unsatisfied dependency expressed through method 'setContentNegotationStrategy' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration': Unsatisfied dependency expressed through method 'setConfigurers' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'webConfig' defined in file [/Users/gimnayeon/Desktop/GreenProject/GrinGreen/out/production/classes/com/grin/GrinGreen/login/WebConfig.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'loginService': Unsatisfied dependency expressed through field 'passwordEncoder'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'getPasswordEncoder': Requested bean is currently in creation: Is there an unresolvable circular reference?위와 같은 오류가 발생합니다.상황을 대략 적자면1번 인터셉터로 로그인 제외 url을 설정2번 인터셉터로 api 작동 전 로그인 후 세션 주입이렇게 처리를 하려고 하는데 @Autowired 문제일까요?구글링을 해보려고 했으니 지금 티스토리 등이 정상적으로 열리지 않아 이렇게 질문 남깁니다ㅠ.ㅠMemberApiController@Slf4j @RequiredArgsConstructor @RequestMapping("/api") @RestController public class MemberApiController { private final MemberService memberService; private final LoginService loginService; /** 회원 등록 API **/ @PostMapping("/members") public CreateMemberResponse saveMember(@RequestBody @Valid CreateMemberRequest request) { Member member = new Member(); member.setNickname(request.nickname); member.setMail(request.mail); member.setPassword(request.password); member.setMember_type(request.member_type); member.setMember_status(request.member_status); member.setHint_password(request.hint_password); member.setAnswer_password(request.answer_password); member.setUpdated_at(now()); member.setCreated_at(now()); String mail = memberService.join(member); return new CreateMemberResponse(mail); } /** 회원 수정 API **/ @PutMapping("/members/{mail}/edit") public UpdateMemberResponse updateMember(@PathVariable ("mail") String mail, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(mail, request.getNickname(), request.getAnswer_password()); Member findMember = memberService.findOne(mail); return new UpdateMemberResponse(findMember.getNickname(), findMember.getMail(), findMember.getHint_password(), findMember.getAnswer_password()); } /** 회원 탈퇴 API **/ @PutMapping("/members/{mail}/delete") public DeleteMemberResponse deleteMember(@PathVariable ("mail") String mail, @RequestBody @Valid DeleteMemberRequest request) { Member member = memberService.findOne(mail); memberService.delete(mail, request.getPassword()); return new DeleteMemberResponse(member.getMail(), member.getMember_status()); } /** 회원 로그인 API **/ @PostMapping("/login") public LoginMemberResponse loginMember(@RequestBody @Valid LoginMemberRequest request) { Member login = loginService.login(request.getMail(), request.getPassword()); return new LoginMemberResponse(login.getMail()); }MemberService@Slf4j @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class MemberService { @Autowired private final MemberRepository memberRepository; @Autowired private PasswordEncoder passwordEncoder; /** 회원가입 **/ @Transactional public String join(Member member){ //비밀번호 암호화 후 레포지토리에 넘기기 String encodedPassword = passwordEncoder.encode(member.getPassword()); member.setPassword(encodedPassword); validateDuplicateMember(member);//중복회원검증 memberRepository.save(member); return member.getMail(); } /** 중복회원검증 **/ private void validateDuplicateMember(Member member) { List<Member> findMembers = memberRepository.findByMail(member.getMail()); if (!findMembers.isEmpty()){ throw new IllegalStateException("이미 존재하는 회원입니다"); } } private void validateDuplicateNickname(Member member) { Member findMembers = memberRepository.findOndByMail(member.getMail()); if (!findMembers.getNickname().equals(member.getNickname())){ throw new IllegalStateException("이미 존재하는 회원입니다"); } } /** 회원전체조회 **/ public List<Member> findMembers(){ return memberRepository.findAll(); } public Member findOne(String mail) { return memberRepository.findOndByMail(mail); } /** 회원 수정 **/ @Transactional public void update(String mail, String nickname, String answer_password){ Member member = memberRepository.findOndByMail(mail); if(nickname.equals(member.getNickname())) { validateDuplicateNickname(member); } member.setNickname(nickname); member.setAnswer_password(answer_password); member.setUpdated_at(now()); } /** 회원 탈퇴 **/ @Transactional public String delete(String mail, String password){ Member findUser = memberRepository.findOndByMail(mail); if(!passwordEncoder.matches(password,findUser.getPassword())){ //throw new IllegalStateException("비밀번호가 맞지 않습니다."); System.out.println("암호 실패"); return null; } findUser.setUpdated_at(now()); findUser.setMember_status("D"); return findUser.getPassword(); } }LoginService@Service @Transactional(readOnly = true) @RequiredArgsConstructor public class LoginService { @Autowired private final MemberRepository memberRepository; @Autowired private PasswordEncoder passwordEncoder; public Member findOne(String mail){ return memberRepository.findOndByMail(mail);} /** 로그인 **/ @Transactional //public String login(Member member){ public Member login(String mail, String password){ List<Member> findMember = memberRepository.findByMail(mail); Member findUser = memberRepository.findOndByMail(mail); if (findMember==null){ //throw new IllegalStateException("해당 이메일의 유저가 존재하지 않습니다."); //System.out.println("이메일 실패"); return null; } if(!passwordEncoder.matches(password,findUser.getPassword())){ //throw new IllegalStateException("비밀번호가 맞지 않습니다."); return null; } System.out.println("로그인 완료 :"+findUser.getNickname()); //세션 표시를 위해 닉네임값 넘기기 return findUser; } /** 비밀번호 매치 **/ @Transactional public String passwordMatches(Member member){ Member findUser = memberRepository.findOndByMail(member.getMail()); if(!passwordEncoder.matches(member.getPassword(),findUser.getPassword())){ //throw new IllegalStateException("비밀번호가 맞지 않습니다."); System.out.println("암호 실패"); return null; } return findUser.getPassword(); } /** 비밀번호 변경 **/ @Transactional public void updatePassword(String mail, String editPassword){ Member member = memberRepository.findOndByMail(mail); if (editPassword.equals(member.getPassword())) { throw new IllegalStateException("이전 비밀번호와 동일합니다."); } member.setPassword(editPassword); member.setUpdated_at(now()); } }WebConfig@Configuration @RequiredArgsConstructor public class WebConfig implements WebMvcConfigurer { private final LoginService loginService; @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { resolvers.add(new LoginMemberArgumentResolver()); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginCheckInterceptor()) .order(1) .addPathPatterns("/**") .excludePathPatterns("/", "/members/new", //"/login", "/logout", "/css/**", "/*.ico", "/error", "/api/**"); "/login", "/logout", "/css/**", "/*.ico", "/error"); registry.addInterceptor(new ApiLoginCheckInterceptor(loginService)) .order(2) .addPathPatterns("/api/business") .excludePathPatterns("/api/members/**"); } }ApiLoginCheckInterceptorpublic class ApiLoginCheckInterceptor implements HandlerInterceptor { private final LoginService loginService; public ApiLoginCheckInterceptor(LoginService loginService) { this.loginService = loginService; } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Member loginMember = loginService.login("test2@test.com", "test1234!"); HttpSession session = request.getSession(); session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); return true; } }
-
미해결구글 스프레드시트로 배우는 업무 자동화(직장인 코딩)
강의 자료부탁합니다!
dhcnf123@gmail.com메일로 공유부탁드리겠습니다!
-
미해결
1:N 관계에서
특정 게시글을 조회하고 싶을 때 작성된 댓글들도 같이 보고 싶은데 InvalidDefinitionException: Direct self-reference leading to cycle 관련하여 에러가 뜹니다.@JsonIgnore로 해결하기보다 ResponseDto로 만들어서 entity -> ResponseDto로 변환해서 응답하고 싶습니다. 그래서 ResponseDto를 만들어서 entity -> ResponseDto로 변환했는데 저런 에러가 뜹니다. 어떻게 해결해야하는지 도와주세요그리고 @Builder를 사용해 빌터패턴을 적용할 때 인자가 많아질 경우 아래처럼 인자가 저렇게 길어지는 것이 맞는 건가요?? @Builder public ArticleResponseDto(Long id, String title, String content, LocalDateTime createdDate, LocalDateTime updatedDate, List<Hashtag> hashtags, List<Comment> comments) { this.id = id; this.title = title; this.content = content; this.createdDate = createdDate; this.updatedDate = updatedDate; this.hashtags = hashtags; this.comments = comments; }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
라이브러리 파일 없음.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 보이듯이...강사님은 없는 build 파일이 생기구요 라이브러리에는 logging 파일이랑 junit 등등 파일이 존재하지 않습니다... 똑같이 따라했는데 왜 없을까요... ㅠㅜㅠㅠ