제가 자바에 익숙하지 않아서 List<List<Integer>> result = new ArrayList<>(); 이 부분이 잘 이해 안되는데 list안에 list를 선언 한건가요? 그리고 class TreeNode { int val; TreeNode left, right; TreeNode(int x) { this.val = x; } } 이 부분에서 left,right는 요소인거 같은데 new로 root 객체 선언해서 만들고 그 요소로 접근해서 2,3넣고 left.left 로 4 넣고 이렇게 진행 하는게 맞는건가요?(틀렸다는게 아니라 몰라서 물어봅니다.) 그럼 계속 내려갈떄마다 객체선언한 root 뒤에 left,right로 내려가고 left,right로 접근해서 할당이 가능한지도 궁금하네요. 제가 잘 몰라서 .. 답변해주시면 감사하겠습니다.
강의와 관련있는 질문 을 남겨주세요. • 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등) • 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색 을 해주세요. (중복 질문을 자제해주세요.) • 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’ 를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달 에도 요령이 필요합니다. • 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요. • 강의실 페이지 (/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다. • 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재 해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드 를 남겨주세요! 구체적인 질문 일수록 명확한 답을 받을 수 있어요. • 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요. • 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요 . • 정확한 질문 내용과 함께 코드 를 적어주시거나, 캡쳐 이미지 를 첨부하면 더욱 좋습니다. 기본적인 예의 를 지켜주세요. • 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용 은 스팸 처리 등 제재를 가할 수 있습니다. 이 강의 맥북만 가능한가요? 제가 윈도우10 쓰는데 예제 파일들 압축 풀었는데 파일 encoding을 못하네요
선생님, 아이가 c++을 학원을 통해서 배우고 있는데 문제풀이 위주로 진행되다보니 좀 더 깊고 상세하게 배워보라고 선생님 수업을 시작했어요. 몇일전부터 처음부터 차근차근 듣기 시작했는데, 다만, 학원 진도가 많이 나간 상태여서 지금 헤매고 있는 완전탐색에 도움되는 부분을 추천해 주시면 그 부분을 먼저 들어서 이해를 좀 도울 수 있으면 좋겠다 싶어서 문의드려 봅니다. 좋은 강의...정말 감사합니다.
안녕하세요 선생님, 이번에 "다대다 [N:M]" 강좌 - 6:00 를 듣다가 헷갈리는 부분이 생겨서 질문드립니다. . 일단 @ManyToMany 를 사용해서 Member, Product 테이블 모두 외래키를 갖고 있지 않고 , 중간 테이블인 Member_Product 테이블이 외래키를 갖고 있는 상태라 가정 하고 질문을 드리겠습니다. . 질문: 1. 다대다의 관계에서는 Member_Product가 연관관계의 주인이 되는건가요? 만약 그렇다면 Member, Product 모두 mappedBy를 설정해줘야 되는거 아닌가요? 2. Member에만 mappedBy를 표기했는데 그 이유가 뭔가요?
안녕하세요. 인터넷에서 셀레니움을 통해 부동산등기부 자동발급 프로그램을 만들고 있습니다. www.iros.go.kr 웹 사이트를 로그인하고 등기부등본 결제를 한다음 열람을 하게되면 크롬 브라우저에서 RPTRegisterXCtrl을 선택하는 메시지 창을 출력합니다. 메시지 윈도우는 다음과 같습니다 (이 메시지 윈도우에서 RPRTRegisterXCtrl을 클릭하여 다음으로 진행하고 싶은데... 방법을 찾지 못하고 있습니다) . 크롬 브라우저를 포함한 전체 화면의 스크린 샷은 아래와 같습니다. -- 그런데 이게 일반적인 크롬 메시지 윈도우는 아닌 것 같습니다. res_msg = Alert(driver) msg.accept() 등을 이런 방식의 코드로는 전혀 접근이 안 됩니다. -- pywinauto를 통해 제어하려고 spy++로 확인해도 되지를 않습니다. app = Application().connect(class_name="....")과 같은 형태로 접근하려 해도 NotFound 에러가 납니다. pyautogui를 통하면 좌표로 클릭하면 됩니다만, 백그라운드 실행을 목표로 하고 있습니다. 따라서 이 방법 이외의 구현 방안을 찾고 있습니다. -- pywinauto나 다른 방법을 통해 구현하고 싶습니다. 여러 방안을 찾아보는데 찾지를 못해 메시지를 넣습니다. 해결을 위한 어떤 실마리라도 찾았으면 좋겠습니다. 그럼 정말 감사합니다. 꾸~~~~벅.
안녕하세요. 인터넷에서 셀레니움을 통해 부동산등기부 자동발급 프로그램을 만들고 있습니다. www.iros.go.kr 웹 사이트를 로그인하고 등기부등본 결제를 한다음 열람을 하게되면 크롬 브라우저에서 RPTRegisterXCtrl을 선택하는 메시지 창을 출력합니다. 메시지 윈도우는 다음과 같습니다 (이 메시지 윈도우에서 RPRTRegisterXCtrl을 클릭하여 다음으로 진행하고 싶은데... 방법을 찾지 못하고 있습니다) . 크롬 브라우저를 포함한 전체 화면의 스크린 샷은 아래와 같습니다. -- 그런데 이게 일반적인 크롬 메시지 윈도우는 아닌 것 같습니다. res_msg = Alert(driver) msg.accept() 등을 이런 방식의 코드로는 전혀 접근이 안 됩니다. -- pywinauto를 통해 제어하려고 spy++로 확인해도 되지를 않습니다. app = Application().connect(class_name="....")과 같은 형태로 접근하려 해도 NotFound 에러가 납니다. pyautogui를 통하면 좌표로 클릭하면 됩니다만, 백그라운드 실행을 목표로 하고 있습니다. 따라서 이 방법 이외의 구현 방안을 찾고 있습니다. -- pywinauto나 다른 방법을 통해 구현하고 싶습니다. 여러 방안을 찾아보는데 찾지를 못해 메시지를 넣습니다. 해결을 위한 어떤 실마리라도 찾았으면 좋겠습니다. 그럼 정말 감사합니다. 꾸~~~~벅.
import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8') # 시간 처리 관련 import time # bs4 from bs4 import BeautifulSoup # selenium 관련 임포트 from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.keys import Keys # 크롬 옵션 chrome_options = Options() # Headless 모드 관련 chrome_options.add_argument("--headless") # 사운드 뮤트 chrome_options.add_argument("--mute-audio") # webdriver 설정(Chrome) - Headless 모드 # browser = webdriver.Chrome("C:/Django/workspace/python-class1/section7/webdriver/chrome/chromedriver.exe", options=chrome_options) # webdriver 설정(Chrome) - 일반 모드 os.chdir('C:\\Users\\limdongseung\\desktop\\chrome')#크롬드라이버.exe가 있는 폴더불러오기 browser = webdriver.Chrome('./chromedriver') # 크롬 브라우저 내부 대기 browser.implicitly_wait(5) # 브라우저 사이즈 # minimize_window() : 최소화 # maximize_window() : 최대화 browser.set_window_size(1920, 1280) # 페이지 이동 browser.get('https://www.youtube.com/watch?v=8CHp4j6bbaQ') # 5초간 대기 time.sleep(5) # html 포커스 주기 위한 코드 # Explicitly wait(명시적 대기) WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.TAG_NAME, 'html'))).send_keys(Keys.PAGE_DOWN) # 2초간 대기 time.sleep(2) # 페이지 내용 # print('Before Page Contents : {}'.format(browser.page_source)) # 페이지 이동 시 새로운 데이터 수신 완료위한 대기 시간 scroll_pause_time = 4 # 현재 화면 페이지 높이 # IE : document.body.scrollHeight last_height = browser.execute_script("return document.documentElement.scrollHeight") print() # 모든 댓글 데이터가 수신(렌더링) 완료 될 때까지 반복 while True: # 스크롤바 이동 browser.execute_script("window.scrollTo(0, document.documentElement.scrollHeight)") # 대기 time.sleep(scroll_pause_time) # 스크롤바 이동 -> 새로운 데이터 렌더링 -> 현재 높이를 구한다. new_height = browser.execute_script("return document.documentElement.scrollHeight") # 이전 높이와 새로운 높이 비교 print("Last Height : {}, Current Height : {}".format(last_height, new_height)) # 새로운 데이터 렌더링이 없을 경우 종료 if new_height == last_height: # While 종료 break # 높이 변경 last_height = new_height # bs4 초기화 soup = BeautifulSoup(browser.page_source, "html.parser") # 통계 리스트 선택자 top_level = soup.select('div#menu-container yt-formatted-string#text') # 댓글 리스트 선택자 comment = soup.select('ytd-comment-renderer#comment') # HTML 소스 확인 # print(soup.prettify()) print() print() # 전체 추천 카운트 print('Total Like Count : {}'.format(top_level[0].text.strip())) print('Total DisLike Count : {}'.format(top_level[1].text.strip())) # Dom 반복 for dom in comment: print() # 이미지 URL 정보 img_src = dom.select_one("#img").get('src') print('Thumbnail Image URLS : {}'.format(img_src if img_src else 'None')) # 작성자 print('Author : {}'.format(dom.select_one('#author-text > span').text.strip())) # 댓글 본문 print('Content Text : {}'.format(dom.select_one('#content-text').text.strip())) # 좋아요 print('Vote Positive Count : {}'.format(dom.select_one('#vote-count-middle').text.strip())) print() # 브라우저 종료 browser.quit() --------------------------------------------------------------------------- UnsupportedOperation Traceback (most recent call last) <ipython-input-36-aaeea3227e03> in <module> 2 import io 3 ----> 4 sys . stdout = io . TextIOWrapper ( sys . stdout . detach ( ) , encoding = 'utf-8' ) 5 sys . stderr = io . TextIOWrapper ( sys . stderr . detach ( ) , encoding = 'utf-8' ) 6 UnsupportedOperation : detach 실행을 하면 이런 오류가 생기는데 원인이 무엇인지 잘 모르겠습니다. 강의에서 하는 코드 그대로 따라 했고 드라이버 경로만 바꿔서 그대로 수업시간에 따라한건데..ㅠ 뭐가 문제일까요?ㅠ 답변부탁드립니다^^
머신러닝을 제 노트북으로 하려니 너무 시간이 오래 걸려서 코랩을 이용하여 하려고 하는데요, 코랩에서는 Tkinter가 지원이 안된다는데, 그럼 혹시 제공해주시는 코드에서, 애니메이션 효과나 Tkinter 빼고 단순 실행결과 같은것만 보고 싶으면 어떤 부분을 주석처리해야하나요?
프로그램을 실행한 뒤에 조금 시간이 지난 뒤에 서버 쪽 OnRecvCompleted 함수에서는 args.BytesTransferred는 0, args.SocketError는 SocketError.ConnectionReset이 뜨고 클라이언트 쪽 OnRecvCompleted 함수에서는 args.BytesTransferred는 0, args.SocketError는 SocketError.Success가 뜨면서 서로 Disconnect가 됩니다.... 코드를 확인해봤을 때는 강의에 적은 것이라 동일한 것으로 확인이 되는데 혹시 다른 이유가 있을까요?
강의와 관련있는 질문 을 남겨주세요. • 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등) • 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색 을 해주세요. (중복 질문을 자제해주세요.) • 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’ 를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달 에도 요령이 필요합니다. • 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요. • 강의실 페이지 (/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다. • 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재 해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드 를 남겨주세요! 구체적인 질문 일수록 명확한 답을 받을 수 있어요. • 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요. • 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요 . • 정확한 질문 내용과 함께 코드 를 적어주시거나, 캡쳐 이미지 를 첨부하면 더욱 좋습니다. 기본적인 예의 를 지켜주세요. • 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용 은 스팸 처리 등 제재를 가할 수 있습니다. Vue 로 NodeBird 만들기 1-5강 3분 쯤 보면 <v-btn text nuxt to="/profile"></v-btn> 태그가 있는데요. nuxt 가 없더라도 잘 실행이 되는데 왜 nuxt 가 들어간 것 인가용? 여기서 nuxt 의 기능이 무엇인가요??
안녕하세요. 강사님 좋은 강의 항상 감사합니다. 카빙 강의 듣고 실습 후 헷갈리는 점이 있어서 질문 드립니다. 강릐를 들으면서 NTFS 파일을 추출하는 방법은 크게 아래 2가지 인 것 같습니다. 1) 이번 강의에서 설명해주신 PE Header와 Section의 크기 정보를 통해 파일을 추출한 방식 2) 'FAT32 and NTFS - 2(실습) 편' 강의에서 NTFS FILE RECORD의 OffsetFieldSize와 LengthFieldSize를 통해 파일을 추출하는 방식 위 1), 2)는 방법이 다를 뿐 같은 결과를 가져오는 것이 맞나요?? 혹시 맞다면 carver.py을 2)가 아닌 1)의 방식으로 구현한 이유가 따로 있을까요? ps. 제가 아직 정확한게 이해한게 아니라서 질문이 앞뒤가 안맞을 수도 있습니다. 그렇다면 죄송합니다 ㅠㅜ 감사합니다.
강의 화면과 현재 최신 버전은 v11.0.1 버전의 010 Editor에 차이점이 있어서 개인적으로 정리한 내용 공유 드립니다. 강의 들으시는 분들 참고하세요! 2021-02-28 기준 최신 010 Editor 64bit(v11.0.1) - 아직 빅서 버전은 공식적으로 지원하지 않습니다. - 010 Editor 32bit 버전은 모하비까지만 지원합니다. 그 이후부터는 64bit 파일로 설치해야 됩니다. - 강의 내용 중 010 Editor에서 'Templates - Drive - Drive' 를 선택하면 NTFS나 FAT의 경우 자동으로 파싱해주고 템플릿으로 보여주는 기능이 있다고 하는데, 최신 버전 기준으로는 저 기능이 보이지 않습니다. 하지만, 아래와 같이 진행하면 볼 수 있습니다. 1) Templates - Template Repository 에서 Drive를 Install 해주면 강의와 같이 Templates - Drive - Drive 메뉴가 보임. 근데, 해당 메뉴를 선택해도 파싱에 대한 결과는 볼 수 없습니다. 2) 이때, View - Edit As - Drive 를 선택하면 그때부터 hex 값을 자동으로 파싱한 값들이 010 Editor 하단에 보이기 시작합니다.