WSAGetOverlappedResult 함수의 4번째 매개변수인 fWaitAll 불리언값의 경우 기본적으로 false를 사용하지만, 하나만 깨우거나 전부 깨우거나 개별 설정을 할 수 있는데요. 복습하다 보니까 GetQueuedCompletionStatus의 경우 iocp핸들, recvLen포인터 같은것, 컴플리션키 포인터, overlapped포인터, 시간 을 매개변수로 받는데 여기는 fWaitAll을 설정하는 부분이 없더라구요. 궁금한 점은 GetQueuedCompletionStatus는 내부적으로 fWaitAll을 false로 가지고 처리되는 함수인가요? 검색해서 찾아보니 GetQueuedCompletionStatus 역시 IO Completion Queue에 처리결과가 삽입되는 순간 깨어나는 시스템이고 이게 Alertable Wait와는 조금 다른 매커니즘이라는 것 까지는 알겠는데 자세하게는 잘 모르겠어서 디폴트로 false인 fWaitAll 플래그를 가지고 처리되는건지 아닌지를 잘 모르겠습니다..ㅠ
nslookup 같은 툴을 이용해서 google.com을 조회하면 172.217.175.78 IP를 확인할 수 있는데요. 이 주소를 443 포트와 결합하여 브라우저에서 접근하면 에러 메시지가 나타나서 80번 포트와 결합하여 접근해야 하는데 이동하는 페이지는 HTTPS로 보호가 되어있는 것으로 확인됩니다. 이 경우에는 HTTPS 연결을 하되 포트만 80번 포트를 사용하는 것인지 아니면 80번 포트로 접근하면 리다이렉트를 통해 다른 IP주소의 443 포트로 연결해주는 것인지 궁금합니다~ 그리고 리다이렉트 시나리오가 맞다면 이런식으로 리다이렉트를 시켰을 때 이점이 무엇인지도 궁금합니다~
VScode 실행 후 터미널로 가상환경 설정이 안되는 이유를 모르겠어서 질문드립니다...! VS code로 바탕화면에 빈 폴더를 지정해놓고 터미널에 python -m venv myvenv 이렇게 입력했는데 가상환경은 생성되지 않고 "python"이라는 메세지말고는 아무일도 안 일어납니다.... 터미널을 git bash랑 명령 프롬프트로 바꿔서 해보았는데 결과는 똑같았고 Anaconda를 삭제하고 python 을 재설치 해보았는데도 결과는 똑같습니다ㅠㅠ 혹시 어떤게 문제인지 알려주실 수 있으실까요...?
욜로나 레티나넷 등을 이용하여 사진이나 영상 분석을 하고 싶습니다. 최종적인 목표는 사진 혹은 영상의 특정 부분을 구분하는 것입니다. (ex. 여러 개의 사진 혹은 영상 중 사람이 있는 것과 없는 것을 판단하여 사람이 있는 영상(사진)과 사람이 없는 영상(사진) 구분하기) 제가 머신러닝을 한번도 공부한 적이 없어서 어떤 방식으로 공부를 해야 좋을지 갈피가 잡히지 않습니다. 컴퓨터공학 전공이고 웹 프로그램을 업으로 삼고 있기는 하지만 통계학은 한번도 접해본 적이 없고, 수학은 20여년 전 고교 졸업 후 해본적 없습니다. 파이썬 역시 아주 가벼운 프로그램을 작성해 본 경험만 있습니다. [파이썬 머신러닝 완벽 가이드] -> [딥러닝 컴퓨터 비전 완벽 가이드] 순서로 강의를 볼 계획이고 현재 [파이썬 머신러닝 완벽 가이드]의 5장의 회귀를 공부하고 있습니다. 처음에 영상만 보다가 이해하기가 힘이 들어 교재를 구매해 함께 보면서 스터디 중입니다. [파이썬 머신러닝 완벽 가이드]를 완강한 후 [딥러닝 컴퓨터 비전 완벽 가이드]를 시작해야 하나요? 또한, 강의와 질문-답변들을 보면서 100% 이해한다기 보다는 어렴풋하게 개념을 잡고 간다는 생각으로 공부를 하고 있는데 이게 맞는지도 궁금합니다. 소소 코드는 최대한 이해하려고 노력하고 있습니다. 마지막으로 추천해 주시고 싶은 다른 강의나 책, 사이트가 있으시면 같이 보겠습니다. 감사합니다. 참고로, 두 달 전 머신러닝 스터디를 시작할 때 1. [파이썬 머신러닝 완벽 가이드] 의 3장 평가까지 완강 2. [딥러닝 컴퓨터 비전 완벽 가이드] 의 욜로 부분을 보면서 강의에 나온 소스로 테스트 성공 3. 리눅스 서버에 욜로5 설치 후 테스트 실패 - (https://datacook.tistory.com/60 사이트를 참조하여 학습을 시키고 학습이 잘 되었는지 테스트를 하는데 원하는 결과를 얻지 못했습니다.) 의욕만 많아서 급하게 테스트를 하니 디버깅 하기도 어렵고 어디서 어떻게 손을 봐야할지 잘 모르겠어서 다시 천천히 [파이썬 머신러닝 완벽 가이드] 를 공부하고 있는 중입니다.
안녕하세요 김영한 팀장님! 검색 엔진 등에서 변경을 인지한다는 의미가 와닿지 않아서 문의드립니다. 예시처럼 영구 변경된 URL이 있을 경우 사용자가 이전 URL로 요청하게 되면, 최초 1회 영구 리다이렉션으로 새로운 Location 응답 -> 브라우저에서 자동으로 리다이렉트해서 변경된 URL로 요청을 진행한다고 이해했습니다. 1) 이후에도 사용자는 URL 변경됨을 인지하지 못하므로 (자동 리다이렉트로 인해) 기존 URL로 계속 요청을 하게 될 텐데 이를 브라우저에서 새로운 경로를 쿠키등의 형태로 가지고 있어, 서버의 리다이렉션 없이 새로운 경로로 Request를 보낸다는 의미인가요? 2) 1)이 맞다면, 정확히는 '검색 엔진'이 아닌, 브라우저에서 변경을 인지하는게 아닐까요? 검색 엔진은 네이버 / 구글같은 검색 웹사이트를 의미하는 것으로만 알고 있는데, 웹사이트 자체가 이러한 기능을 가진다는 것과, 강의 내용과 연관성에 대해 조금 의문이 들어서 문의드렸습니다. 얕은 지식을 가지고 있어 너무 기본적인 질문을 드리는 거 같네요 ㅠㅠ 양해 부탁 드립니다.
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
안녕하세요 도커강의 듣고 있는 학생입니다. 현재 웹서버 이해와 도커로 웹서버 구축하기의 nginx 웹서버 설정 이해 1 을 듣고있는데요, 3분 38초쯤 나오는 nginx 설치하는 부분에 있어서 질문이 있습니다. apt-get install nginx=1.18.0-0ubuntu1 명령어로 nginx를 install 하는데, 다음과 같은 에러가 나옵니다. E: Version '1.18.0-0ubuntu1' for 'nginx' was not found 다음과 같은 에러가 나옵니다. 위 버전 말고 다른 버전을 설치해야할까요? 추가: 방금 명령어를 버전 빼고 입력했는데, 해당 버전의 nginx가 설치되었습니다. apt-get install nginx로 1.18.0 버전 설치된걸 확인했는데, 뒤에 버전명 입력하면 위 에러가 뜨는 이유가 궁금합니다.
안녕하세요 선생님, 질문이 있습니다. !pip install mmcv-full 이후에 런타임 다시 시작을 해야 import mmcv가 정상 작동하는데, 코랩 런타임 다시 시작하는 것이 어떤 원리인가요? 런타임 다시 시작을 안하면 import mmcv가 정상 작동하지 않는 이유가 궁금합니다.
선생님, 강의 잘 듣고 있습니다. 강의를 듣다가 궁금증이 생기는데 9/20 부터 15/20 즈음까지의 강의는 모두 결국 seaborn 라이브러리 안에는 여러 개의 xxplot이 있다는걸 소개하는거고 곧 활용할 수 있는 api에는 이러이러한 것이 있다 고 설명하는 셈이잖아요? 헌데 이런걸 전부 외우는 현업 개발자는 없고 그분들도 필요나 설계에 따라 맞게 쓰는 정도로 활용하는 걸루 알고 있는데 그래도 강의를 들으면서 최소한 숙지해야 하는 정도 라는게 있다면 어느 정도가 적절할는지 궁금합니다. 참고로 저는 원래 자바랑 c++ 위주로 쓰는 주니어이고 파이썬으로는 알고리즘까지는 낯설어서 잘 쓰진 않지만 자료구조 구현은 할 줄 아는 정도입니다. 그리고 최근에 머신러닝 배우면서 이 강의는 캐주얼한 용도로 듣고 있습니다. 감사합니다!
안녕하세요 선생님 강의 항상 잘 듣고 있습니다! 헤더가 결과적으로 어떻게 변경된건지 모호한 부분이 있어서 질문드립니다. 강의안에 따르면, 1. 예전 헤더 정의 2. 폐기? 3. 새 헤더 정의 이전 4가지 분류가 아예 사라진 건가요 도메인만 표현으로 바뀐건가요? 즉 현재 헤더 는 1. general 2. request 3. reponse 4. representation 인건가요 아님 representation 하나 인건가요? 아니면 헤더==표현헤더이고 표현헤더 = 표현 메타데이터+페이로드 메타데이터 인건가요? 궁금해서 헤더를 살펴보니 다음과 같았습니다. 오히려 representation만 없더라구요 ㅠㅠ query string parameters가 전달하려는 데이터, 즉 representation인건가요?
안녕하세요 선생님! 이해가 안되는 부분이 있어서 질문 남깁니다! stateless의 장점을 언급하실 때, "상태를 유지하지 않으면 서버가 바뀌어도 된다. 그렇기 때문에 서버가 확장될 수 있다." 라고 이해했습니다. 반대로 stateful의 단점을 언급하실 때, "상태를 유지하면 서버가 바뀌면 안된다. 그렇기 때문에 서버가 확장될 수 없다"라고 하셨는데 이 부분이 이해가 안됩니다. 1. 서버가 바뀌면 안되는 것과 서버가 확장될 수 없는 것이 무슨 상관인지 모르겠습니다..ㅠㅠ 기존 요청은 기존 서버와 연결을 유지하고, 새로 추가된 요청들은 새로운 서버와 연결해주는 방식으로 서버를 확장할 순 없나요?? 2. 대부분 서비스는 세션 등으로 로그인 유지를 하고 있지 않나요? 그럼 대부분 서비스는 서버가 확장될 수 없나요?
안녕하세요. 선생님 강의 잘 듣고 있습니다. 강의를 들으면서 책을 보고 웹 크롤링으로 데이터를 다운 받아 dataframe으로 전환 최종 엑셀로 저장하는 코드를 공부 하고 있습니다. 그런데 크롤링은 되는데 최종 엑셀 저장 파일을 보면 맨 처음 페이지만 저장 되는데요 아래 코드에서 잘못된게 있을까요? 그리고 break문을 적으면 SyntaxError : 'break' outside loop 에러가 나와 주석처리 했습니다. 제가 워낙 초보라 답변을 주실 수 있는지요? 감사합니다. # from selenium import webdriver # browser = webdriver.Chrome("/Users/maru/Downloads/chromedriver") # browser.get("https://seibro.or.kr/websquare/control.jsp?w2xPath=/IPORTAL/user/company/BIP_CNTS01042V.xml&menuNo=286#") search_btn = browser.find_element_by_id("image1") search_btn.click() html = browser.page_source from bs4 import BeautifulSoup from html_table_parser import parser_functions as parser import pandas as pd soup = BeautifulSoup(html, "html.parser") table = soup.find("table", attrs ={"id" : "grid1_body_table"}) p = parser.make2d(table) df = pd.DataFrame(p[2:], columns=p[1]) df.head() import time import random from tqdm import tqdm prev_no = 0 prev_table = None for i in tqdm(range(0,200)): try: next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() except: time.sleep(2) try: next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() except: time.sleep(2) next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() def get_html(browser, cnt): if cnt >= 4: return -1, -1 html = browser.page_source soup = BeautifulSoup(html, "html.parser") cur_no = soup.find("a", sttrs = {"class" : "w2pageList_control_label w2pageList_label_selected"}) cur_no = cur_no.text table = soup.find("table", attrs={"id" : "grid1_body_table"}) if cur_no != prev_no and prev_table != table: return cur_no, table else: time.sleep(1) get_html(browser, cnt+1) cur_no, table = get_html(browser, 1) if cur_no == -1: print("\n종료. 테이블 정보가 바꾸지 않았습니다.") break p = parser.make2d(table) temp = pd.DataFrame(p[2:], columns=p[1]) df = pd.concat([df, temp], 0) prev_no = cur_no prev_table = html if cur_no == "95": print("\n 최종 페이지 도달") # break time.sleep(random.randrange(3, 5)) df.to_excel("stock_div.xlsx")
클라이언트에서 보낸 데이터가 다 도착하지 않았을 때 다음 데이터가 올 때까지 기다린 후 처리한다고 말씀하셨는데, 이 부분이 코드 어디에 구현되어있는건가요...? 위에 있는 코드를 나름대로 해석해보니 1. OnWrite()는 _recvArgs.Buffer에 들어있는 데이터만큼 _recvBuffer의 _writePos를 증가시킨다. 2. OnRecv()한 데이터(_recvArgs.Buffer에 들어있는 데이터)의 크기를 processLen에 담는다. 3. processLen의 크기만큼 _readPos를 증가시킨다. 라고 이해했는데, 클라이언트에서 보낸 데이터가 완전한지 불완전한지 딱히 판단하는 부분은 없어보이고 그냥, [1.데이터가 들어온만큼 _writePos를 증가시킨다 2. 처리한다 3. 처리한만큼 _readPos를 증가시킨다]를 실행시킨거같아서요!