묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실제 이력서 사례로 알아보는 [합격하는 이력서] 작성 가이드
워니님 면접질문에 관해서 궁금한거 질문 하나드립니다
안녕하세요 워니님 이력서는 아니지만 면접을 보면서 주로 나왔던 질문중에 궁금한게 있어서 질문을 드려봐요!면접을 보면 공부방법이 어떻냐는 질문을 여러번 받았는데요 1. 공식문서부터 찬찬히 읽고 공부하는타입 2. 일단 문서보단 무엇이든 만들어가면서 공부하는 타입 1번과 2번 이건 정답이 있는 질문일까요? 또한 질문의 의도가 무엇인지도 궁금해요! 저는 보통 2번 일단 뭐든 만들어보면서 공부하는타입이라고 답변했습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
실행오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 서버를 실행할 때 위와같은 에러가 발생합니다. 복사 붙여넣기로 진행해도 결과는 같네요 ㅠㅠ 도움 주시면 정말 감사하겠습니다
-
해결됨
강의기간 질문
현재 강의 수강 목록에서 "파이썬을 이용한 IT 해킹과 보안" 과목을 듣고 있습니다. 이 강의 시간을 보면 무제한으로 되어있는데 정말 무제한인지 아니면 일정 기간이 지나면 끝나는지 궁금합니다. 다른 무료강의는 무제한이여도 나중에 보니까 사라지더라고요 불안해서 문의드립니다.
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
권한 요청드립니다.
인프런 아이디 : exem.ai2.front 인프런 이메일 : exem.ai2.front@gmail.com 깃헙 아이디 : nomadwendy11@gmail.com 깃헙 Username : nomadwendy11
-
미해결
기간만료 강의
기간만료 예정인 강의의 강의노트에 작성한 글은 기간이 만료되면 볼 수 없게 되나요? 아니면 강의만 볼 수 없고 강의노트는 볼 수 있는건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 No tests found for given includes: [jpabook.jpashop.MemberRepositoryTest](--tests filter) 이 에러가 나서 도움을 요청합니다.
MemberRepositoryTest을 실행 했는데 아래와 같이 에러가 나옵니다 Execution failed for task ':test'.> No tests found for given includes: [jpabook.jpashop.MemberRepositoryTest](--tests filter) * Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights. MemberRepositoryTest코드 package jpabook.jpashop;import static org.junit.Assert.*;import jpabook.jpashop.Member;import jpabook.jpashop.MemberRepository;import org.assertj.core.api.Assertions;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.annotation.Rollback;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.transaction.annotation.Transactional;import javax.persistence.EntityManager;@RunWith(SpringRunner.class)@SpringBootTestpublic class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() { Member member = new Member(); member.setUsername("memberA"); Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); Assertions.assertThat(findMember).isEqualTo(member); //JPA 엔티티 동일성 보장 }} application.yml코드 spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: truelogging.level: org.hibernate.SQL: debug# org.hibernate.type: trace build.gradle코드 plugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java'}group = 'jpabook'version = '0.0.1-SNAPSHOT'sourceCompatibility = '11'configurations { compileOnly { extendsFrom annotationProcessor }}repositories { mavenCentral()}dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' implementation 'junit:junit:4.13.1' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test'}tasks.named('test') { useJUnitPlatform()}인프런 질문에도 찾아보고 구글링도 해봤는데 뭐때문인지 몰라 질문을 합니다 도와주세요ㅠ아래는 제코드 구글드라이브 공유링크입니다. https://drive.google.com/drive/folders/1h5v97WrZW3rjxwzl_G2_73a17sXsQYpw?usp=sharing
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
1분 54초 질문 있습니다.
동영상에서는 빨간 줄로 에러가 표시되는데 저는 표시가 되지 않습니다. 추가로 플러그인 설치가 필요한건가요?
-
미해결배달앱 클론코딩 [with React Native]
좀 다른 질문인데 RN은 소셜로그인은
안녕하세요. 제로초님. 이 강좌를 들으면서 개인 프로젝트를 같이 진행하고있습니다. 좀 다른 질문이지만, RN 같은 경우는 소셜로그인 개발할 때 라이브러리를 사용하나요? 실제 프로덕 개발에 있어서 어떤 라이브러리들을 쓰는지 궁금합니다. https://www.npmjs.com/package/react-native-app-auth
-
미해결지금 바로 React 시작하기
코드 한번만 봐주실수 있나요 ?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Anton&family=Edu+VIC+WA+NT+Beginner&family=Indie+Flower&family=Permanent+Marker&family=Shadows+Into+Light&display=swap" rel="stylesheet"> <script src="https://cdnjs.cloudflare.com/ajax/libs/redux/4.0.1/redux.js"></script> </head> <body> <style> #Container{ border: 3px solid black; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; margin-top: 10px; } #Container div { box-sizing: border-box; border: 5px solid orange; height:200px; width:32%; margin:5px; padding: 20px; font-size: 30px; } </style> <div id="actionBox"> <input type="text" placeholder="Type anything"> <button onclick="clickMe()">Click Me!</button> <button onclick="changeRadius(10)">Rounded</button> <button onclick="changeRadius(15)">Circle!</button> <button onclick="changeRadius(0)">Rectangle!</button> <button onclick="changeColor('red')">Red!</button> <button onclick="changeColor('green')">Green!</button> <button onclick="changeColor('blue')">Blue!</button> </div> <div id="Container"> <div class="textBox" id="1"></div> <div class="textBox" style="font-family:'Anton'" id="2"></div> <div class="textBox" style="font-family:'Edu VIC WA NT Beginner'" id="3"></div> <div class="textBox" style="font-family:'Indie Flower'" id="4"></div> <div class="textBox" style="font-family:'Permanent Marker'" id="5"></div> <div class="textBox" style="font-family:'Shadows Into Light'" id="6"></div> </div> <script> let divs = document.querySelectorAll('.textBox') function reducer(state, action) { console.log(state, action); if (state === undefined) { return { color: 'orange' } } var newState; if (action.type === 'CHANGE_COLOR') { return{ ...state, color: action.color } } else if (action.type === 'CHANGE_TEXT'){ return{ ...state, text: action.text } } else if (action.type === 'CHANGE_RADIUS'){ return{ ...state, radius: action.radius } } } var store = Redux.createStore( reducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() ); function clickMe(){ let text = document.querySelector('input') store.dispatch({type:'CHANGE_TEXT', text:`${text.value}`}) var state = store.getState(); divs.forEach((e) => { e.innerText = `${state.text}` }) text.value = ""; } function changeColor(e){ store.dispatch({type:'CHANGE_COLOR', color:e}) var state = store.getState(); divs.forEach((e) => { e.style.border = ` 5px solid ${state.color}` }) } function changeRadius(r){ store.dispatch({type:'CHANGE_RADIUS', radius:r}) var state = store.getState(); divs.forEach((e) => { e.style.borderRadius = `${state.radius}px` }) } </script> </body> </html> 이런식으로 onclick 시 함수 호출하면서 값을 전달해주고, 함수내에서 dispatch를 실행하고 foreach로 속성바꿔주는 식으로 했는데, 꼭 onclick할때 dispatch를 해줘야하는건가요 ? 이런식으로 하니까, subscribe는 필요없는거같아서요. 아마 일괄적으로 바꿔주는 방식이라서 제가 이렇게 가능했던거 같은데, 개별적으로 값을 바꿔주는 과제였다면 좀 달라졌을까요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
마지막 페이지 오류 + class 명 오류
안녕하십니까 선생님 최근에 마지막 페이지 오류를 해결하는 방법을 질문드렸는데, 친절히 답변주셔서 감사합니다. 수정해주신 코드로는 크롤링이 정상적으로 작동이 되는 것을 확인했습니다. 강사님께서 수정해주신 버튼 html 코드는 다음과 같습니다. isLastPage = soup.select_one('a.btn_next').attrs['aria-disabled'] 그러나, 1 of 3. 네이버에 "미옹이"를 검색한 다음, 페이지를 이동하는 버튼의 html을 보면, btn_next라는 class는 사진에 보이듯이 하나밖에 없고, 하나밖에 없는 해당 태그는 a가 아니라 button으로 나옵니다.어느 부분에서 강사님께서는 해당 태그가 a태그로 판단하신 것인지 궁금합니다.button 위에 있는 a태그는 옆으로 이동하는 버튼의 태그가 아니라, 1페이지, 2페이지의 a태그여서 버튼과는 관계없다고 생각합니다. # 네이버 "미옹이" 검색결과의 html 2 of 3. class 명을 일부만 적는 것이 이해되지 않습니다. 강사님께서 미옹이의 코드를 작성하실 때, class가 btn_next dimmed임에도 불구하고, btn_next만 명령어에 입력하셨습니다. 마찬가지로, 위 사진에 나와 있는 네이버 지도 크롤링 과정에서도 class 태그 4개 중에 input_search만 명령어에 입력하셨는데, search = browser.find_element(By.CSS_SELECTOR, "input.input_search") 전체 class인 input.input_search.ng-valid.ng-dirty.ng-touched를 입력하면 오류가 발생합니다. search = browser.find_element(By.CSS_SELECTOR, "input.input_search.ng-valid.ng-dirty.ng-touched") input.input_search와 input.input_search.ng-valid.ng-dirty.ng-touched 모두 html 상에서 검색했을 때 동일하게 1 of 1이 뜨는것을 확인했는데도 왜 전체 class태그를 입력한 것에서 오류가 발생하는지 궁금합니다. 정리하자면, class 태그를 full로 완전히 입력할때는 오류가 뜨더니(input.input_search.ng-valid.ng-dirty.ng-touched), class의 일부인 input.input_search를 넣으면 오류가 뜨지 않습니다. 따라서 어느 상황에서 class를 일부만 사용하고, 또는 전체를 사용해야 하는지 판단하는데 어려움이 있습니다. 아래는 발생하는 오류입니다. >>> search = browser.find_element(By.CSS_SELECTOR, "input.input_search.ng-valid.ng-dirty.ng-touched") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\rnrxh\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 857, in find_element return self.execute(Command.FIND_ELEMENT, { File "C:\Users\rnrxh\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 435, in execute self.error_handler.check_response(response) File "C:\Users\rnrxh\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"input.input_search.ng-valid.ng-dirty.ng-touched"} (Session info: chrome=103.0.5060.134) Stacktrace: Backtrace: Ordinal0 [0x00575FD3+2187219] Ordinal0 [0x0050E6D1+1763025] Ordinal0 [0x00423E78+802424] Ordinal0 [0x00451C10+990224] Ordinal0 [0x00451EAB+990891] Ordinal0 [0x0047EC92+1174674] Ordinal0 [0x0046CBD4+1100756] Ordinal0 [0x0047CFC2+1167298] Ordinal0 [0x0046C9A6+1100198] Ordinal0 [0x00446F80+946048] Ordinal0 [0x00447E76+949878] GetHandleVerifier [0x008190C2+2721218] GetHandleVerifier [0x0080AAF0+2662384] GetHandleVerifier [0x0060137A+526458] GetHandleVerifier [0x00600416+522518] Ordinal0 [0x00514EAB+1789611] Ordinal0 [0x005197A8+1808296] Ordinal0 [0x00519895+1808533] Ordinal0 [0x005226C1+1844929] BaseThreadInitThunk [0x75C96739+25] RtlGetFullPathName_UEx [0x77A28FEF+1215] RtlGetFullPathName_UEx [0x77A28FBD+1165] >>> search.click() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'search' is not defined >>> time.sleep(1) >>> # 검색어 입력 >>> >>> search.send_keys("강남역 맛집") Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'search' is not defined >>> search.send_keys(Keys.ENTER) # 검색어를 입력하고, 엔터를 치라는 명령어 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'search' is not defined >>> time.sleep(2) 아래는 제가 작성한 코드입니다. # 셀레니움 기본설정 import imp from lib2to3.pgen2 import driver from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time # 크롬 드라이버 자동 업데이트 from webdriver_manager.chrome import ChromeDriverManager # 브라우저 자동으로 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 불필요한 에러 메시지 삭제 chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) # 셀레니움으로 웹브라우저 자동으로 띄우기 # ChromeDriverManager를 통해서 ChromeDriver를 설치하고, Service라는 객체를 만든 뒤, service라는 변수에 저장한다 service = Service(executable_path=ChromeDriverManager().install()) browser = webdriver.Chrome(service=service, options=chrome_options) # 특정 웹페이지 주소로 이동 browser.implicitly_wait(5) # 웹페이지가 로딩 될때까지 5초는 기다려준다 browser.maximize_window() # 화면 최대화 browser.get('https://map.naver.com/v5/?c=14141023.2182021,4522932.8702864,15,0,0,0,dh') # 검색 배너 클릭 search = browser.find_element(By.CSS_SELECTOR, "input.input_search.ng-valid.ng-dirty.ng-touched") search.click() time.sleep(1) # 검색어 입력 search.send_keys("강남역 맛집") search.send_keys(Keys.ENTER) # 검색어를 입력하고, 엔터를 치라는 명령어 time.sleep(2) 3 of 3. 왜 id를 사용하지 않으셨는지 궁금합니다. 사진에는 class 뿐만 아니라 해당 태그의 고유값인 id도 있습니다. 그러나, id를 사용하기 위해 아래와 같이 copy selector를 입력했음에도 불구하고 오류가 발생합니다. search = browser.find_element(By.CSS_SELECTOR, "#input_search1658797242706") 긴 질문 읽어주셔서 정말 감사합니다.
-
해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
Time Limit Exceed 관련 질문드립니다.
아래와 같이 코드를 작성했는데 강사님의 강의와 다른 점은 set대신 list를 사용하고 L == K일때 , 정답으로 가능한 리스트 안에 현재 추의 sum이 없으면 추가한다는 조건으로 if문을 작성해주었는데 Case#5에서 계속 Time Limit이 뜹니다. 이전 질문에서 리스트와 set에 원소 할당할 때 시간복잡도 차이가 없다고 하셨는데 if문을 한줄에 여러 조건을 추가할 수록 식나이 추가되는걸까요? import sys input = sys.stdin.readline K = int(input()) weights = list(map(int,input().split())) possible = [] max = sum(weights) def dfs(L,sum): if L == K: if 0 < sum <= max and sum not in possible: possible.append(sum) return dfs(L+1,sum+weights[L]) dfs(L+1,sum-weights[L]) dfs(L+1,sum) dfs(0,0) print(max-len(possible))
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
Mac vscode Hyperopt 무한로딩
다른 코드들은 지금까지 잘 작동했는데 Hyperopt 에서 fmin함수 코드 작성하고 실행하면 무한로딩이 되네요... 같은 코드로 코랩에서 실행했을 땐 문제가 없었는데 무엇 때문에 이런지 도움받을 수 있을까 싶어 글 남깁니다! 버전도 0.2.7버전 맞구요 vscode 재설치도 해봤습니다.... ㅜㅠ
-
미해결홍정모의 따라하며 배우는 C++
이해가 잘 가지 않습니다..도와주세요
교수님께서 if 구문에서 smallestIndex=currentIndex 코드를 작성하시고 서로 봐뀐다라고 표현 하셨는데 이것은 대입아닌가요...?
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
1. 모바일 화면에서 menu a 클릭하여 다른 project 화면이나 다른 화면으로 전환할 경우 화면이 걸치는 문제, 2. 홈 화면 모바일 전환시 메뉴화면이 자동 적용되는 문제
강사님 강의 잘 듣고 잘 배웠습니다~^^ 첫번째 질문: 모바일 화면에서 다른 화면으로 바로 가기위해 menu a 를 클릭할 경우 화면에 정확히 맨 윗 부분부터 보이지 않고 아바로 전 화면 밑 부분이 보이거나 아님 전환된 화면 윗부분이 짤려 보입니다. menu a 클릭하여 다른 화면으로 전화시 정확히 전환된 화면의 맨 윗 부분부터 찾아가 보이게 하려면 어떻게 해야 하느지 알려 주시기 바랍니다. 두번째 질문: 모바일 전환시 home 화면의 메뉴가 자동으로 적용이 되어 메인 이미지를 가립니다. index.html 파일에서 강사님 코딩과 제 코딩에 차이는 첨부 이미지 처럼 active 클래스가 있고 없고 차이 입니다. 강사님 코딩처럼 active 클래스를 제거하니 잘 문제가 해결 되었습니다. html에서 active 클래스를 지정 안해도 css에서 header.active 나 .gnb.active가 실행 되는게 js에서 클릭시 강제로 add 기능으로 toggleClass 'active' 와 remove기능으로 removeClass 'active' 적용 해줄 경우 html에서 굳이 별도의 .active 클래스를 안해줘도 css에 적용되어 실행 되는 건지 설명 부탁 드립니다.
-
미해결운영체제 공룡책 강의
교수님 fork()함수에 대해 질문이 있습니다.
fork() 함수를 호출하면 부모 process의 주소공간을 그대로 복사한다고 했는데, 자식 프로세스에서 pid = fork(); 명령을 수행하는것인지, 아니면 그 다음줄 부터 수행하는것인지 해깔립니다. 만약 자식프로세스가 pid = fork()를 수행하면 자식 프로세스가 또 자식프로세스를 만들어서 프로세스가 무한으로 증식되지 않을까 하는 걱정때문에 다음줄부터 수행하는것이 아닌가 생각됩니다. 그렇다면 자식 프로세스의 pid변수가 0을 같는 이유는 초기화가 안되어서 0이 되는것이라고 추측할수 있을텐데, 교수님이 중간에 자식프로세스는 pid= fork() 명령은 0을 리턴받는다고 말씀하셔서 해깔립니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
500 Server Error for HTTP GET "/catalog-service/health-check"
위 사진은 gateway (.yml) 내용입니다. 위 사진은 eureka_server.yml 입니다. catalog.yml 내용입니다. user.yml 내용입니다. 그리고 아래는 문제의 에러 로그입니다. 포스트맨으로 API 호출을 하면 저렇게 에러 메세지가 뜹니다. GATEWAY.yml에서 uri: lb://CATALOG-SERVIER 로 하지 않고, uri: http://localhost:지정한포트번호 로 하면은 정상적으로 API호출이 되는데, uri: lb://CATALOG-SERVIER 이렇게 설정 하면 안 됩니다. 로드밸런싱 설정 문제인거 같은데... 어디가 잘 못 된건지 잘 모르겠습니다... (꽤 오래 헤매이고 있는 중입니다.)
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
intro 화면
안녕하세요!! 강의 내용을 쭉 따라했는데 애뮬레이터에서 splash 화면 다음 intro 화면이 뜨지 않습니다. intro 화면이 안 떠서 activity_intro.xml의 코드를 activity_main.xml 화면으로 옮기니까 그제서야 화면이 나오는데 이 상태로 쭉 앱 제작을 진행해도 될까요..?
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
banner 재질문
banner.js 파일 첨부해드립니다. 콘솔 창을 위해서 몇가지 코드가 추가되어있습니다. 콘솔 창은 f5 이후로 아무것도 건드리지 않았습니다. return 직전에 console.log("hi")를 넣었습니다. 콘솔에 실행해본 결과 return 이전의 코드가 실행되기도 전에 hi가 실행된 것을 확인할 수 있었습니다. 왜 이전의 코드가 실행되기도 전에 hi와 return이 먼저 실행되는 걸까요? 아무것도 누르지 않은 상태인데 useEffect(() => { fetchData(); }, []); 에서 dep list가 빈 배열이기 때문에 banner.js 가실행되는 때 딱 한번만 실행된다고 생각했습니다. 하지만 콘솔 창을 보니 다 log가 두번씩 찍혀있는데 이게 왜 그런건가요? import axios from "../api/axios"; import React, { useEffect, useState } from "react"; import requests from "../api/requests"; import "./Banner.css"; import styled from "styled-components"; export default function Banner() { const [movie, setMovie] = useState([]); const [isClicked, setIsClicked] = useState(false); useEffect(() => { fetchData(); }, []); const fetchData = async () => { // 현재 상영중인 영화 정보를 가져오기(여러 영화) const request = await axios.get(requests.fetchNowPlaying); console.log("1. request.data",request.data) // 여러 영화 중 영화 하나의 ID를 가져오기 const movieId = request.data.results[ Math.floor(Math.random() * request.data.results.length) ].id; // 특정 영화의 더 상세한 정보를 가져오기(비디오 정보도 포함) const { data: movieDetail } = await axios.get(`movie/${movieId}`, { params: { append_to_response: "videos" }, }); setMovie(movieDetail); console.log("2. request.data",request.data) // console.log("movieDetail",movieDetail) // console.log("movie",movie) }; const truncate = (str, n) => { return str?.length > n ? str.substr(0, n-1) + "..." : str; } console.log('hi') if(!isClicked){ return ( <header className="banner" style={{ backgroundImage: `url("https://image.tmdb.org/t/p/original/${movie?.backdrop_path}")`, backgroundPosition: "top center", backgroundSize: "cover", }} > <div className="banner__contents"> <h1 className="banner__title"> {movie.title || movie.name || movie.original_name} </h1> <div className="banner__buttons"> <button className="banner__button play" onClick = {() => setIsClicked(true)}>Play </button> <button className="banner__button info">More Information</button> </div> <h1 className="banner__description">{truncate(movie.overview, 100)}</h1> </div> <div className="banner--fadeBottom" /> </header> ); }else{ return <div> <Container> <HomeContainer> <Iframe> src={`https://www.youtube.com/embed/${movie?.videos?.results[0]?.key}?controls=0&autoplay=1&loop=1&mute=1&playlist=${movie?.videos?.results[0]?.key}`} width = "640" height = "360" frameborder = "0" allow = "autoplay; fullscreen" </Iframe> </HomeContainer> </Container> </div> } } const Container = styled.div` display : flex; justify-content : center; align-items : center; flex-direction : column width : 100%; height : 100vh; ` const HomeContainer = styled.div` width : 100%; height : 100%; ` const Iframe = styled.iframe` width : 100%; height : 100%; z-index : -1; opacity : 0.65; border : none; &::after{ content : ""; position : absolute; top : 0; left : 0; width : 100%; height : 100%; }`
-
미해결타입스크립트 입문 - 기초부터 실전까지
안녕하세요 Eslint 설정 문제인지 궁금합니다.
변수에 타입을 지정해주려고 하는데 저장만 하면 계속 오류가 발생합니다. 위 사진처럼 설정파일까지 다 지정해줬는데 계속해서 영상처럼 동작하지 않습니다 혹시 어떻게 해야하는지 알 수 있을까요 예제로 있는 파일에서도 오류가 발생합니다.
-
미해결홍정모의 따라하며 배우는 C언어
강의 12:24
강의에서는 my_print_functions.c 파일에서 #include "my_print_functions.h" 하라했는데 my_print_functions.c 파일에 #include "my_print_functions.h" 가 없어도 정상 작동되는데 왜그런가요?