묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
store 등록문의
저는 main.js 파일을 보면new Vue({ render: h => h(App), }).$mount('#app')이렇게 되어있습니다.이게 el:'#app' 과 같다는건 아는데,store은 강의 내용과 같이 new Vue({ })안에넣으면 될까요? 아니면,.$mount('#app').$mount('store')이렇게 적어야 하나요?
-
해결됨디자인 시스템 with 피그마
다른 파일에서 피그마 토큰 사용 문의드립니다
안녕하세요 선생님한가지 더 문의사항이 있어 질문 드립니다.디자인 시스템 파일과 디자인 UI 파일을 각각 다른 파일에서 만들었는데요그래서 디자인 UI 파일을 만들 때 디자인 시스템 라이브러리를 불러와서 사용했습니다그런데 문제가 디자인 시스템 라이브러리에서 컴포넌트에 색상 토큰값이 매겨진 채로 다른 파일에서 에셋 인스턴스로 불러오게 될 경우, 다른 파일에서 피그마 토큰 플러그인으로 각각 라이트. 다크 모드를 적용하면 인스턴스로 불러 온 요소들은 연동이 안된다는 점 입니다.결국 다른 파일에서 피그마 토큰 플러그인 실행 후 디자인 시스템쪽에 적용했던 json코드를 불러 온 다음, 이를 Create stylees해서 local에 불러와 일일히 적용 -> 인스턴스로 불러 온 컴포넌트들도 또 다시 색상 값을 매겨야됨 이런식으로 두번씩 작업해야 되는게 맞는건가요?애초에 디자인 시스템 파일과 디자인 파일을 각각 나누면 안되는건지 연동되게 할 방법이 없는건지 문의드립니다.확인 부탁드립니다.감사합니다.
-
미해결실전! Querydsl
OrderRepository 변환
기존 jpashop에서 사용했던 MemberRepository는 querydsl을 사용하여 변환하는 과정을 강의를 보며 공부하였는데, OrderRepository에서 findAllByString와 findAllByCriteria를 querydsl을 이용하여 변환하는 강의는 어디를 보면 되나요??
-
미해결비전공자의 전공자 따라잡기 - 데이터베이스,SQL
일대다, 다대다 관계 질문
[일대일,일대다,다대다 관계(ERD)] 강의 4분 17초에 관한 질문입니다. 일대일, 일대다, 다대다 관계에 대한 개념은 이해됐습니다.그런데 노란색 자막이 이해되지 않습니다.[사원]과 [사원-프로젝트]가 왜 일대다 관계인가요?[사원-프로젝트] 테이블에 의하면사원 하나는 여러 프로젝트를 가질 수 있고,프로젝트 하나는 여러 사원에 할당될 수 있는거 아닌가요?저는 [사원]과 [사원-프로젝트]가 다대다 관계라고 생각했는데 일대다 관계라고 하셔서 질문합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
이스케이프 예시를 조금 변형하다 이해가 안 가는 부분이 있어 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.제가 이해하기로는 모델에 담긴 "Hello <b>Spring</b>"이라는 문자열을 꺼내서 ${data} 대신에 들어간다고 생각했습니다.그래서 html 코드에서 ${data}를 지우고 이 자리에 "Hello <b>Spring</b>"를 바로 넣어봤는데 오류가 납니다.두 경우에는 어떤 차이가 있는 건가요? 왜 오류가 나는지 알 수 있을까요
-
해결됨[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
키워드입력시 오류
안녕하세요 선생님 2가지의 질문이 있습니다.아래와 같이 코드를 구성했습니다.1. 키워드로 강남역 맛집 / 이태원 술집으로는 엑셀파일로 저장이 잘 되는데 "행궁동 맛집"이라고 치면 아래와 같은 오류가 출력됩니다. 왜이러는 걸까요?제 생각엔 "이태원 술집" , "강남역 맛집"에서는 iframe 안쪽을 한번 클릭 하는 것이 실행이 되는 것 같은데 "행궁동 맛집", "용산역 맛집"에서는 검색어 입력 후 iframe 클릭 하지 않고 바로 스크롤이 되는 것 같습니다. C:\CRAWLLING>C:/Users/libra_erv8ij1/AppData/Local/Programs/Python/Python312/python.exe c:/CRAWLLING/CRAWLING심화/ch7.네이버지도크롤링/06.데이터저장.pyc:\CRAWLLING\CRAWLING심화\ch7.네이버지도크롤링\06.데이터저장.py:85: SyntaxWarning: invalid escape sequence '\c'wb.save(f"CRAWLING심화\ch7.네이버지도크롤링\\{keyword}.xlsx")Traceback (most recent call last):File "c:\CRAWLLING\CRAWLING심화\ch7.네이버지도크롤링\06.데이터저장.py", line 81, in <module>print(rank, name, star)^^^^NameError: name 'name' is not definedfrom 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 import pyautogui import openpyxl keyword = pyautogui.prompt("검색어를 입력하세요") wb = openpyxl.Workbook() ws = wb.create_sheet(keyword) ws.append(["순위", "이름", "별점"]) chrome_options = Options() chrome_options.add_experimental_option("detach", True) chrome_options.add_experimental_option('excludeSwitches', ["enable-logging"]) service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=chrome_options) driver.implicitly_wait(10) driver.maximize_window() driver.get("https://map.naver.com/v5/") search = driver.find_element(By.CSS_SELECTOR, "input.input_search") search.click() time.sleep(1) search.send_keys(keyword) time.sleep(1) search.send_keys(Keys.ENTER) time.sleep(2) # iframe 안으로 들어가기 driver.switch_to.frame("searchIframe") # driver.switch_to_default_content() iframe 밖으로 나오기 # iframe 안쪽을 한번 클릭 driver.find_element(By.CSS_SELECTOR, "#_pcmap_list_scroll_container").click() # 로딩된 데이터 개수 확인 lis = driver.find_elements(By.CSS_SELECTOR, "li.UEzoS") before_len = len(lis) while True: # 맨 아래로 스크롤 내린다 driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END) # 아무 태그나 선택하기 위해 body를 선택하는 것 # 스크롤 사이 페이지 로딩 시간 time.sleep(1.5) # 스크롤 후 로딩된 데이터 개수 확인 lis = driver.find_elements(By.CSS_SELECTOR, "li.UEzoS") after_len = len(lis) # 로딩된 데이터 개수가 같다면 반복 멈춤 if before_len == after_len: break before_len = after_len # 데이터 기다리는 시간을 0으로 만들어줌 (데이터가 없어도 빠르게 넘어감) driver.implicitly_wait(0) rank = 1 for li in lis: # 광고상품 아닌것만 if len(li.find_elements(By.CSS_SELECTOR, "svg.dPXjn")) == 0: # 별점이 있는 것만 크롤링 if len(li.find_elements(By.CSS_SELECTOR, "span.h69bs.orXYY")) > 0: # 가게명 name = li.find_element( By.CSS_SELECTOR, "span.TYaxT").text # 별점 star = li.find_element(By.CSS_SELECTOR, ".h69bs.orXYY").text.split('\n')[1] print(rank, name, star) ws.append([rank, name, float(star)]) rank = rank + 1 wb.save(f"CRAWLING심화\ch7.네이버지도크롤링\\{keyword}.xlsx") # 새롭게 오픈한 가게이면 if len(li.find_elements(By.CSS_SELECTOR, "span.h69bs.DjPAB")) > 0: try: # 방문자 리뷰수 visit_review = li.find_element(By.CSS_SELECTOR,"span.h69bs:nth-child(3)").text except: visit_review = "0" # 새로 오픈한 가게가 아니면 else: try: visit_review = li.find_element(By.CSS_SELECTOR,"span.h69bs:nth-child(2)").text except: visit_review = "0"네이버 지도가 바뀌어서 리뷰가 바뀌었습니다.위와 같이 새로 오픈한 가게로 해서 코드를 작성했는데 작동하지 않습니다. 어떻게 코드를 구성하면 좋을까요?
-
해결됨독하게 되새기는 C 프로그래밍
stack 쌓는 순서
안녕하세요. 우분투 disas main으로 어셈블리어로 stack 이 어떻게 쌓는지 공부하는 중인데요.어셈블리어로 연산코드가 mov라서 제 해석이 틀린건가요? 지역변수는 선언한 순서로 Push된다고 이해했는데 실제로 해보니 달라서 질문드립니다. int type으로 정의한 $0x1, -0x30에서 주소가 -0x3a로 멀어져서 이해가 안돼서 질문 드렸습니다. 그 이후 부터는 stack이 하나씩 지워지면서 rbp 포인터로 가까워 지는 모양으로 이해했는데 char 형태에서 오히려 더 밀려나서 주소가 왜 밀린건지 이해가 되지않습니다. 물론 함수 호출이 아닌 변수를 정의한 거지만 결은 비슷할 거라 생각이 들어서 질문 드립니다. 너무 궁금해서 엉뚱한 질문이지만 알려주시면 감사합니다...
-
미해결[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
안녕하세요 강의 코드에 대해 질문이 있습니다.
안녕하세요 강의를 만족하며 보고있습니다.제가 강의를 수강하면서 모르는 부분만 보거나, 필요한 내용들을 그때마다 찾아서 공부하고 있습니다.하지만 강의가 차례로, 순서대로 해야만 학습 가능한 부분들이있어 공부 하기가 어려운 점이 많습니다. 또 전체적인 코드로 한눈에 흐름을 파악하여 해당 강의 내용을 보고 싶을 때도 많은데, 차례로 강의를 따라가야지만 전체를 볼 수 있기 때문에 어렵습니다.그래서 세션을 공부하기 위한 베이스 코드나, 강의를 하고 난 완료된 코드를 받고 싶은데 부탁드리겠습니다.감사합니다.
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
fetch 코드를 강의에 나온 것 처럼 axios 로 변경하고 싶습니다.
현재 구글캘린더를 OAuth2.0 으로 연동하는걸 테스트 해보고 있습니다.authorization code 까지 얻어서 access token 을 가져오려고 포스트맨에서 테스트 해보니 access token 을 잘 가져왔습니다.이제 이걸 강의에 나온 방식으로 vue.js 로 옮기고 싶은데 잘 안되네요.포스트맨에서 성공한 fetch 코드는 아래와 같습니다.var myHeaders = new Headers(); myHeaders.append('Content-Type', 'application/x-www-form-urlencoded'); var urlencoded = new URLSearchParams(); urlencoded.append('code', code.value); urlencoded.append('client_id', clientId); urlencoded.append('redirect_uri', redirectUri); urlencoded.append('client_secret', clientSecret); urlencoded.append('grant_type', 'authorization_code'); var requestOptions = { method: 'POST', headers: myHeaders, body: urlencoded, redirect: 'follow', }; fetch(`https://oauth2.googleapis.com/token`, requestOptions) .then(response => response.text()) .then(result => console.log(JSON.parse(result))) .catch(error => console.log('error', error));이 코드 그대로 vue.js 에 사용해도 잘 되더라구요.그런데 강의 처럼 변경해 보고 싶은데 잘 안되네요. 일단 api/index.js 파일은 아래처럼 했구요.import axios from 'axios'; function create(baseURL, options) { const instance = axios.create(Object.assign({ baseURL }, options, { withCredentials: true })); return instance; } export const token = create('https://oauth2.googleapis.com');api/token.js 파일은 아래 처럼 했봤습니다.import { token } from '.'; export function getToken(params) { const data = JSON.stringify(params); console.log('data:', data); const config = { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, maxBodyLength: Infinity, data: data, }; return token.post('/token', params, config); } 사용 페이지에서는 아래처럼 적용했습니다.import { getToken } from '@/api/token'; async function getAccToken() { const params = { code: code.value, client_id: clientId, client_secret: clientSecret, redirect_uri: redirectUri, grant_type: 'authorization_code', }; try { const response = await getToken(params); } catch (error) { console.log('error:', error); } }그런데, 이렇게 저렇게 여러가지로 해보고 있는데 통신오류 나면서 안되네요. fetch 코드를 강의의 코드 형식으로 어떻게 변경해야 할까요?변경 안하고 그냥 fetch 코드를 그대로 써도 되긴하는데 뭔가 좀 찝찝하고, 왜 안되는지 궁금하기도 해서 질문드립니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
도와주세옹/http://localhost:8080/hello
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용]http://localhost:8080/hello안들어가져요 ㅠㅠ다시보기 계속해도 답이 안나와서 질문글 올립니다
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바 입문(배열)- 문제와풀이3(ProductAdminEx)관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 김영한 강사님.문제풀이를 보다가 궁금한 점이 생겨서 질문을 남기게되었습니다. 1.2.강의 및 강의자료에서는 2번 사진과 같은 코드로 작성이 되어있습니다. 2번 사진과 같은 코드로 작성한 이유가 코드 가독성과 if조건의 제약이 한가지만 존재하고 가장 상위에 먼저 나오기 때문에 else대신 continue로 처리하였는지 아니면 다른 이유가 있는지에대해서 알고 싶습니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
포인터 이동 질문
포인터에 대한 강의를 듣고 포인터에 대한 공부를 하던 도중 이해가 되지 않는 부분이 있어 질문드립니다.Shape** shapes;shpaes = new Shape* [100];shapes[0] = new Circle(); //shapes[1] = new Triangle();shapes[2] = new Triangle();...// shapes[1]을 지우고 포인터 shapes[2]번을 shapes[1]번으로 옮길때저는 현재 힙 영역의 메모리 구조를 이렇게 생각하였고포인터는 어쩌피 주소를 닮는 공간이니delete shapes[1];로 도형을 지우고 shapes[1] = shapes[2]로 하고 shapes[2] = nullptr로 하여이런식으로 진행하면 문제가 없다고 생각했습니다.그런데 프로그램을 종료할때 delete[] shapes를 진행하는 부분에서 Heap Corruption Detected( 메모리에 대한 잘못된 접근이나 이미 해제한 메모리에 대한 접근 ) 오류가 나오게 됩니다.그래서 생각되는 문제가 shapes[1] = shapes[2]로 바로 옮기면 되는 것이 아니라 옮기기 전에 shapes[1]에도 shapes[2] 만큼의 크기를 만들어 주고 shapes[1] = shapes[2]로 옮겨야 되는 것인가 라고 생각하여 코드를shapes[1] = new Circle(); // shapes[2]에 저장된 도형을 만들고*shapes[1] = *shapes[2] // 값을 복사하고delete shapes[2]; // shapes[2]를 지우고shapes[2] = nullptr; // nullptr로 가리키고 있는 곳을 풀어준다.이렇게 코드를 수정하니 delete[] shapes; Heap Corruption Detected에 대한 메모리 오류가 사라졌습니다.여기서 드는 궁금한 점이 포인터는 주소를 담는 바구니(8바이트)인데 왜 shapes[1] = shapes[2]로 가르키는 곳만 바꾸는 것으로 Heap Corruption Detected의 오류가 나며 동작이 안되는지 궁금합니다.
-
미해결선형대수학개론
theorem 4.d 에관한 질문입니다.
row echelon form으로 reduce 됐을 때 만약 [0 ,,, 0 b]와 같은 행이 없는 상태라면 무조건 해를 한개 이상 갖는다고 생각해도 되나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 맞왜틀 질문있습니다.
https://www.acmicpc.net/source/70317041 문제에서 제시된 입력 값을 넣으면 올바른 출력값이 나오는데, 틀렸다고 나오니 답답합니다.어느 부분이 틀렸는지 잘 모르겠습니다.
-
미해결Airflow 마스터 클래스
scheduled slot의 개수도 제한이 있나요?
예전에 airflow를 쓰면서 DAG의 task가 스케쥴에 따라서 실행되지 않았던 적이 있습니다. 실행될 시간인데 scheduled상태로도 들어가지 않고 아예 사라졌다가 한참 후에 다시 scheduled되어서 중간에 실행되지 않는 시간이 많이 생겼습니다. 당시에는 pool의 slot수를 늘리니 해결이 되긴 했습니다. 그런데 강의에 따르면 slot수에 scheduled는 영향을 주지 않는 것으로 이해가 됐습니다.혹시 scheduled도 따로 slot개수를 가지게 되는건가요? p.s. 그때는 몰랐지만 airflow가 너무 자주 실행하는 경우에는 적합하지 않다는 거는 알게된 경험이었습니다. 당시 스케쥴은 1분마다 실행시키는 DAG들을 많이 만들었거든요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
에러가 발생했는데 원인을 모르겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@545d2560 testClass = hello.spring.hello.service.MemberServiceIntegrationTest, locations = [], classes = [hello.spring.hello.HelloApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@61001b64, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@4b8ee4de, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@4659191b, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@3527942a, org.springframework.boot.test.context.SpringBootTestAnnotation@5891170b], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]테스트 실행시 이런 오류가 발생했습니다.Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect')caused by는 위처럼 나왔습니다.설정의 오류인것 같은데 무슨 설정의 오류인지 모르겠고 어떻게 설정해줘야 하는지 모르겠습니다.
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
백준 11720 숫자의 합 질문 있습니다
문제를 보면입력첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.라고 조건이 주어지는데 강의의 풀이를 보면 숫자의 개수를 N개로 제한하는 부분이 없고 실행해보면 N개 이상 또는 이하의 숫자가 들어가도 상관이 없이 실행되는데 보통 코테에서도 이런식으로 제한에 러프하게 코딩해도 상관이 없는 건가요?아니면 문제에 제한이 있어서 코딩에서는 제한을 따로 두지않는건가요??
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
라이프사이클에 따른 state에 대한 질문
컴포넌트가 unmount될때 해당 컴포넌트에서 관리하는 state도 함께 사라지는건가요?컴포넌트가 리랜더링될때 해당 컴포넌트에서 관리하는 state는 여전히 유지되나요?부모컴포넌트가 리랜더링 될때 자식컴포넌트도 리랜더링 되는 건 알고있는데요, 이때 자식컴포넌트가 unmount됐다가 리랜더링되나요? ps) 질문이.. 뭔가 너무 당연한 것 같다는 생각도 드네요..?
-
해결됨Next + React Query로 SNS 서비스 만들기
leftSectionWrapper와 rightSectionWrapper 중앙 정렬
leftSectionWrapper와 rightSectionWrapper를 중앙 정렬시키기 위해 각각에 flex-grow: 1 을 주셨는데container에 margin: 0 auto 주는 것과 동일한건지 궁금합니다!
-
미해결김영한의 실전 자바 - 기본편
다운캐스팅 질문
안녕하세요 <다형성과 캐스팅>을 듣다 질문이 생겨서 남겼습니다. package poly.basic; public class CastingMain1 { public static void main(String[] args) { //부모 변수가 자식 인스턴스 참조(다형적 참조) Parent poly = new Child(); //x001 //단 자식의 기능은 호출할 수 없다 //poly.childMethod(); //다운캐스팅(부모 타입 -> 자식 타입) Child child = (Child)poly; //x001 child.childMethod(); } } <참고로 캐스팅을 한다고 해서 Parent poly의 타입이 변하는 것은 아니다. 해당 참조값을 꺼내고 꺼낸 참조값이 Child 타입이 되는 것이다. 따라서 poly의 타입은 Parent로 기존과 같이 유지된다>이 부분을 해당 참조값(x001)을 꺼내고 꺼낸 참조값을 사용해 인스턴스 안에서 실행할 타입을(Parent -> Child) "나는 Child 클래스부터 시작해서 기능을 찾을거야~" 라고 컴파일러에게 알려준다. 따라서 poly의 타입은 Parent로 기존과 같이 유지된다. 이렇게 이해하면 될까요? "꺼낸 참조값이 Child 타입이 되는 것이다." 여기 해석이 조금 어렵습니다 !...