묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
배열 매개변수 길이 관련 c++
17:30 분쯤C++ 에서 배열과 배열의 길이를 압축(간단히, 묶어서)해서 넘기는 방법이 있다고 하셨는데 그게 무엇인가요?
-
해결됨디지털포렌식전문가 2급 필기 핵심 요약집[전자책]
내용 정정 의견
안녕하세요.먼저 말씀하신대로 굉장히 불친절한 자료들로 인해 차일피일 자격증을 미루다가 X버는 승리한다고.. 이렇게 좋은 자료를 내 주셔서 대단히 감사합니다.다름이 아니라 아래와 같은 내용 수정이 필요할 것 같아 의견을 올립니다. Page 89 (속성 관련 내용)현재 : 속성의 개수를 '카디널리티'....변경 필요 : 속성의 개수를 '차수'.... 감사합니다.
-
해결됨일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석
19강 프로펫 실습 시 에러
안녕하세요 :) 수업 감사드립니다.16강 공유해주신 소스코드 따라 실습하던 중, 제일 첫 번째 코드에서부터 에러가 나서 문의 드립니다. fbprophet 이라는 모듈명에 무슨 문제가 있는 것일까요?입력코드import pandas as pd from fbprophet import Prophet from matplotlib import pyplot from google.colab import drive drive.mount('/content/drive')에러메시지--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-4-3acd5be7f1b8> in <cell line: 2>() 1 import pandas as pd ----> 2 from fbprophet import Prophet # 매출예측 lib 3 from matplotlib import pyplot 4 5 from google.colab import drive ModuleNotFoundError: No module named 'fbprophet' --------------------------------------------------------------------------- NOTE: If your import is failing due to a missing package, you can manually install dependencies using either !pip or !apt. To view examples of installing some common dependencies, click the "Open Examples" button below. ---------------------------------------------------------------------------
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
:hover 와 ::after (콜론 하나와 두개 차이?)
:hover 처럼 콜론 하나를 쓰는 것도 있고 ::after 로 콜론 두개를 쓰는 것도 있던데 어떤 차이가 있는건가요 ?? 의미가 있는지 궁금합니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
네이버쇼핑 크롤링 과정 오류 질문
계속 이런 오류가 나오와요 크롬드라이브 해당 버젼에 맞게 설치했는데도 ㅠㅠ처음에 코딩 잘못입력한줄 알았는데 뭐가 문제인지 몇시간동안 반복하고있어서 글올렸습니다 도와주세요 ㅠㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
자유게시판 대댓글 등록
자유게시판 대댓글 등록 & 조회 기능 구현을하는데 playground에서 회원정보 인증에서 오류가 발생합니다.피그마 상에서도 일반회원에 대한 내용만 있고 비회원일 경우없는 것을 보면 대댓글 기능 자체가 로그인이 되어있을 경우를 상정한건가요?일단 docs에는 유저토큰 정보를 요구하지는 않는데... 회원정보가 필요한가요? 대댓글 자유게시판에서 대댓글기능 작동하는 건가요...?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
L2스위치의 역할을 잘 모르겠습니다.
송신 구조는 대략적으로컴퓨터 -> L2 -> L3(라우터) -> 다른 네트워크와 연결이렇게 이해하고 있었습니다.그런데 공유기도 L3스위치라고 하더라구요당장 제 노트북에 유선으로 공유기와 연결되어있는데그럼 컴퓨터 -> L3(공유기) -> L2 -> L3(라우터) -> 다른 네트워크 순서가 되는건가요? 수신 시에IP주소로 근처의 라우터까지 온 데이터를 L2스위치가받아서 MAC주소로 내 컴퓨터에 전달. 이 아니라 IP주소로 근처의 라우터까지 온 데이터를 L2스위치가받아서 MAC주소로 공유기에 전달 -> 내 컴퓨터로 전달. 이 되는건가요? 공유기가 L3스위치라고 하니 순서가 헷갈립니다.송신시에 순서상 L2가 공유기 이전에 있어야 하는것같은데 정확히 어떻게 되는건지 잘 모르겠습니다 .. 그리고 OIS 7계층이 송.수신에서의 7계층과(스트림 -> 세그먼트 -> 패킷 -> 프레임으로 데이터가 변환되는 과정)출발후 도착까지의 전달 과정에서의 7계층으로 나누어 생각하는건가요?(변환된 데이터가 L1 -> L2스위치 -> L3라우터 순서 로 전달되는 과정)
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
학습자료 링크 강의에 해당하는 페이지로 연결
수업자료 링크가 상단 디렉토리로 되있는데,강의에 해당하는 페이지로 연결 되게,해주시면 감사하겠습니다.
-
미해결웹 게임을 만들며 배우는 React
output에 publicPath질문
2-9강 따라하는도중에 에러가 났는데요.에러가 난 이유는 제 코드에는 output란에 publicPath가 없어서인것 같은데, 정확한 이유를 모르겠습니다.제로초님코드에는 output에 publicPath가 자동으로 생성되어있고, devServer란에 그대로 따라치라 하셨는데 저는 애초에 publicPath가 없어서요. 그런데 궁금한건 2-8강 제로초님코드를 보니 저처럼 output에 publicPath가 없었는데, 2-9강에서 갑자기 생겨있더라고요.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
DisconnectEx
해당함수를 사용하면 기존에 생성했던 Socket을 다시 만들필요 없이 재사용할 수 있다라고 설명하셨는데, 해당 코드를 보면 Disconnect가 될 시 Service에서 Session을제거하기 때문에 해당 Session은 메모리에서 해제가 되는것으로 알고 있습니다. 그럼 다시 CreateSocket함수를 통해서 socket이 생성되면 사실 의미가 없는게 아닌가 궁금합니다. 그냥 SocketPool을 만들어서 제가될떄 넣고, 생성될때 꺼내쓰는게 효율적일 것 같은데 혹시 어떻게 생각하시는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 주인을 FK로 잡는 구체적 이유가 잘 이해가 안됩니다.
강의의 예제에서 Team 엔티티의 List members를 주인으로 잡게되면 insert시 Member측에선 update가 날라갈 수 있다라고 강의에서 설명이 된 것 같은데 왜 insert시 update가 일어나지?라는 생각이 들어서 혹시 이부분 첨언해주시면 감사드리겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@GetMapping과 MemberController클래스
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]처음에 나오는 내용에 대한 질문입니다.혹시 @GetMapping("/members/new") 어노테이션에 대한 내용을 왜 MemberController클래스에 만드는 건지 알 수 있을까요?꼭 MemberController클래스에 만들어야 하는 건가요??
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
섹션2 코드질문
# 동일 shape 은 당연히 Tensor 간 연산 가능data1 = torch.torch.FloatTensor([ [1], [2], [3] ])data2 = torch.FloatTensor([1, 1, 1])data3 = data1 + data2 print (data1.shape, data2.shape, data3.shape)print (data3) 이 코드에서 data1은 torch.FloatTensor이 아닌torch.torch.FloatTensor를 사용하는 이유가 궁금합니다.출력했을때는 같은결과가 나오는데 말이죠..
-
미해결Vue.js + TypeScript 완벽 가이드
두번째 프로젝트 권한 요청드립니다.
안녕하세요, 두번째 프로젝트 권한 부탁드립니다.계정 : thfdl0317@naver.com 입니다.강의를 보며 타입스크립트를 더 자세히 알게 되는 것같아요, 감사합니다.
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
데이터 저장2
안녕하세요 개남님 개남님이 만들어주신 코드와 제가 가지고 있던 코드랑 같이 활용을 해보려고 했는데 기존에 있던 코드가 작동을 안 하는데 혹시. 개남님이 만드신 Authrepository를 사용안하면 기존에 있던 name이나 Uid를 인식을 못 해서 안 불러지는건가요?--추가--신기한건[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Bad state: cannot get a field on a DocumentSnapshotPlatform which does not exist 이런식으로 에러가 뜨네요... 흠.. 분명 name은 존재한다고 뜨긴하는데.. (개남님이 만드신 방식으로 해야만 뜹니다)(추가)이런식으로 해봤더니 기존의 구글 name이 뜨네요.음 Authrepository의 cubit에서 인식하는 name은 우리가 회원가입에서 입력한 이름이고제가 만든 코드에서 인식하는 name은 구글 기존의 이름으로 뜹니다. 이유가 뭘까요? 감사합니다! void _nameEvent(NameEvent event, Emitter<HomePageState> emitter) async { String uid = FirebaseAuth.instance.currentUser!.uid; DocumentSnapshot document = await FirebaseFirestore.instance.collection('users').doc(uid).get(); String userName = document['name']; int level = document['level']; //여기는 기존의 bloc입니다 //이 아래는 이렇게하니까 우리가 추가한 네임이 아니라 기존의 구글 네임이 뜨게 되는 코드입니다. void _nameEvent(NameEvent event, Emitter<HomePageState> emitter) async { UserModel? userModel; final user = await _authenticationRepository.user.first; final userName = user?.name ?? 'Unknown'; // 기본값 설정 print("유저의 이름은 $user"); print("유저의 이름은 $userName"); emit(state.copyWith( name: userName, )); // 기존의 Firestore에서 사용자 정보를 가져오는 코드... String uid = FirebaseAuth.instance.currentUser!.uid; DocumentSnapshot document = await FirebaseFirestore.instance.collection('users').doc(uid).get(); int level = document['level']; print(user); print(userName); emitter(state.copyWith( level: level, name: userName, )); }
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
servlet 생성시점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]HttpServlet을 상속받은 클래스는 어느 시점에 생성이 되나요?
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
브로커에 장애가 발생한 경우
예를 들어, 가용한 브로커개수가 3개고 특정 토픽의 복제 개수가 2로 운영하는 경우라고 가정하겠습니다.이때 이 토픽을 포함하고 있던 두 대중, 한대가 죽으면이 토픽은 그 브로커가 다시 살아날 때까지 복제개수가 한개가 되는건가요? 아니면 원래는 이 토픽을 갖고있지않던 다른 브로에 이 토픽이 추가되어 운영되나요 ? 복제개수가 2ㅇ,ㄴ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
페치 조인1 강의에 대한 질문있습니다.
try { Team teamA = new Team(); teamA.setName("팀A"); em.persist(teamA); Team teamB = new Team(); teamB.setName("팀B"); em.persist(teamB); Member member1 = new Member(); member1.setUsername("회원1"); member1.setTeam(teamA); em.persist(member1); Member member2 = new Member(); member2.setUsername("회원2"); member2.setTeam(teamA); em.persist(member2); Member member3 = new Member(); member3.setUsername("회원3"); member3.setTeam(teamB); em.persist(member3); em.flush(); em.clear(); String query = "select m from Member m"; List<Member> result = em.createQuery(query, Member.class) .getResultList(); for (Member member : result) { System.out.println("member = " + member.getUsername() + ", " + member.getTeam().getName()); }Hibernate: /* select m from Member m */ select member0_.id as id1_0_, member0_.age as age2_0_, member0_.TEAM_ID as team_id5_0_, member0_.type as type3_0_, member0_.username as username4_0_ from Member member0_ Hibernate: select team0_.id as id1_3_0_, team0_.name as name2_3_0_ from Team team0_ where team0_.id in ( ?, ? ) member = 회원1, 팀A member = 회원2, 팀A member = 회원3, 팀B회원1을 조회하면서 회원과 팀에 대한 select 쿼리가 나가고 회원1을 조회하면서 teamA가 영속성 컨텍스트에 올라갔으니 회원2는 1차 캐시에서 가져온다고 했습니다. 그러면 teamB는 영속성 컨텍스트에 없기 때문에 team에 대한 쿼리가 발생해야 하는데 발생하지 않습니다. 왜 강의와 다르게 쿼리가 발생하는지 궁금합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
Spring Security 를 포함한 WebMvcTest 질문드립니다.
안녕하세요 좋은 강의 덕분에 테스트에 대해 많이 알게 되었습니다 :)스프링 시큐리티를 포함한 테스트와 관련해서 질문을 드려보고자 글을 쓰게 되었습니다. (강의에서는 스프링 시큐리티를 사용하지 않지만 테스트와 관련해서 물어볼 곳이 마땅치 않아 이 곳에 글을 남기는 점 양해해주시면 감사하겠습니다)@RequiredArgsConstructor @RestController @RequestMapping("/api") @Slf4j public class AuthController { private final AuthService authService; @PostMapping("/auth/sign-up") public String signUp(@RequestBody SignUpRequest request) { authService.signUp(request); return "회원가입 성공"; } }현재 회원가입을 하는 컨트롤러의 메서드는 다음과 같습니다. @Service @RequiredArgsConstructor @Slf4j @Transactional(readOnly = true) public class AuthService { private final UserRepository userRepository; private final PasswordEncoder passwordEncoder; @Transactional public void signUp(SignUpRequest request) { if (userRepository.findByEmail(request.getEmail()).isPresent()) { throw new AlreadyExistException("이미 존재하는 이메일입니다."); } if (userRepository.findByNickname(request.getNickname()).isPresent()) { throw new AlreadyExistException("이미 존재하는 닉네임입니다."); } User user = User.builder() .name(request.getName()) .email(request.getEmail()) .password(request.getPassword()) .nickname(request.getNickname()) .role(UserRole.USER) .build(); user.passwordEncode(passwordEncoder); userRepository.save(user); } }그리고 실제 회원가입이 진행되는 로직은 이렇습니다. 그리고 제가 WebMvcTest 어노테이션을 사용해서 테스트 코드를 작성한 건 다음과 같습니다.@ActiveProfiles("test") @AutoConfigureMockMvc @WebMvcTest(AuthController.class) class AuthControllerTestWithWebMvcTest { @Autowired protected MockMvc mockMvc; @Autowired protected ObjectMapper objectMapper; @MockBean private AuthService authService; @MockBean private UserRepository userRepository; @DisplayName("회원가입 한다.") @CustomMockUser // 회원가입을 해야되는데 인증이 필요하다? -> 논리적으로 말이 안 됨 -> 올바른 테스트? @Test void signUp() throws Exception { // given SignUpRequest request = SignUpRequest.builder() .name("zun") .email("zun@test.com") .password("12345") .nickname("zunny") .build(); // then mockMvc.perform(post("/api/auth/sign-up") .content(objectMapper.writeValueAsString(request)) .contentType(APPLICATION_JSON) .with(csrf()) ) .andExpect(status().isOk()) .andDo(print()); } }보시다시피 회원가입 API에 요청이 제대로 되는지를 확인하기 위해 @CustomMockUser 라는 어노테이션을 사용하고 있습니다. (이 어노테이션은 테스트에서 인증을 처리하기 위해 만든 어노테이션입니다. 호돌맨님 강의를 참고해서 만들었습니다.)제가 혼란스러운 부분은 테스트코드에 써놓은 주석처럼 회원가입이 제대로 되는지를 테스트하기 위한 컨트롤러 코드인데 이걸 통과시키기 위해 인증을 담당하는 @CustomMockUser를 사용하는 것이 올바른 테스트인가 하는 의문입니다.@WebMvcTest를 사용하지 않고 @SpringBootTest를 사용하면 다음처럼 할 수가 있습니다.@ActiveProfiles("test") @AutoConfigureMockMvc @SpringBootTest class AuthControllerTest { @Autowired private UserRepository userRepository; @Autowired private ObjectMapper objectMapper; @Autowired private MockMvc mockMvc; @BeforeEach void tearDown() { userRepository.deleteAllInBatch(); } @DisplayName("회원가입 한다.") @Test void signUp() throws Exception { //given SignUpRequest request = SignUpRequest.builder() .name("zun") .email("zun@test.com") .password("12345") .nickname("zunny") .build(); //expected mockMvc.perform(post("/api/auth/sign-up") .content(objectMapper.writeValueAsString(request)) .contentType(APPLICATION_JSON) ) .andExpect(status().isOk()) .andDo(print()); } } 혹시 이와 관련해서 우빈님은 어떻게 생각하시는지, 그리고 스프링 시큐리티를 사용하는 프로젝트에서는 컨트롤러 쪽 테스트를 어떻게 하는 것이 좋은지 알려주시면 감사하겠습니다!
-
미해결
스프링 db - 2 동작원리
해당 프로젝트에서 controller가 따로 없는 것으로 보이는데 service나 repository에 있는 메서드들의 호출이 어떻게 가능한지 궁금합니다.