< div > < a href = "www.naver.com" > < Icon as = { IoLogoSnapchat } /> Chatbot </ a > </ div > 위 코드는 chatbot 글 혹은 icon을 클릭하면 기존 페이지에서 네이버 화면을 여는 코드 입니다. 제가 구현 하고 싶은 것은 기존 페이지 위에 작게 네이버 화면을 여는 것인데 어떻게 해야 할까요?
안녕하세요. 선생님 강의 잘 듣고 있습니다. 강의를 들으면서 책을 보고 웹 크롤링으로 데이터를 다운 받아 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")
InputManager의 작동 원리가 잘 이해되지 않습니다. 그래서 디버깅으로 한 줄 한 줄 따라가 봤는데, 여전히 궁금한 점들이 있습니다. 1. 왜 InputManager _input = new InputManager();를 읽은 뒤 Init()를 다시 실행해서 DonDestroyOnLoad(go);를 읽는 건가요? Init();은 Start에 들어 있으니 첫 실행 때 한 번 호출되고 끝이어야 하는 게 아닌가요? 2. Managers의 업데이트에서 OnUpdate를 계속 호출해 줘서 키 입력을 감지하는 건 알겠는데 키 입력이 들어온 뒤 KeyAction.Invoke();가 어떤 역할을 하는지 모르겠습니다. 혹시 InputManager에서 if( KeyAction != null)일 경우 바로 OnKeyboard()를 호출하는 게 문법적으로 불가능하기 때문인가요?
클라이언트에서 보낸 데이터가 다 도착하지 않았을 때 다음 데이터가 올 때까지 기다린 후 처리한다고 말씀하셨는데, 이 부분이 코드 어디에 구현되어있는건가요...? 위에 있는 코드를 나름대로 해석해보니 1. OnWrite()는 _recvArgs.Buffer에 들어있는 데이터만큼 _recvBuffer의 _writePos를 증가시킨다. 2. OnRecv()한 데이터(_recvArgs.Buffer에 들어있는 데이터)의 크기를 processLen에 담는다. 3. processLen의 크기만큼 _readPos를 증가시킨다. 라고 이해했는데, 클라이언트에서 보낸 데이터가 완전한지 불완전한지 딱히 판단하는 부분은 없어보이고 그냥, [1.데이터가 들어온만큼 _writePos를 증가시킨다 2. 처리한다 3. 처리한만큼 _readPos를 증가시킨다]를 실행시킨거같아서요!
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요, 스승님.. 질문이 있습니다. Speed를 서버를 통해 받아오더라도., updateMoving()의 소스 자체를 해킹 당하면 캐릭터 이동속도 핵은 생기지 않나 궁금합니다. 예를 들어 스르륵 이동하는 코드의 Speed를 서버에서 받아오더라도, transform.position += moveDir.normalized * Speed * Time.smoothDeltaTime ; => transform.position += moveDir.normalized * Speed * Time.smoothDeltaTime *2; 이렇게 수정한다면, Destination 에 더빨리 도착하여 더 빨리 이동하겠다는 패킷을 빨리 보낼 수 있지 않나 싶어서요.. 이 경우 서버에서도 스르륵 부분을 구현하여 대략 어느정도 도착할 시간을 비교해서 구별하는 부분을 추가하여 대처를 해야하는 것이 맞는 것인지 궁금합니다.. 늦은 시간 질문드려 죄송합니다! 늘 상세히 답변 주시어 정말 감사드립니다.
https://developer.mozilla.org/ko/docs/Web/API/Event/preventDefault - 위의 링크에서 e.preventDefault() 함수가, 이벤트가 취소 가능한 경우 이벤트의 전파를 막지 않고 이벤트를 취소한다고 되어 있는데, 설명중에서 SPA에서 e.preventDefault() 사용해야한다고 하셨는데 이유가 궁금합니다.
dummyClient측에서 sendAsync를 하려고 할 때.. 에러가 발생합니다. 에러 내용 Unhandled exception. System.ObjectDisposedException: Cannot access a disposed object. Object name: 'System.Net.Sockets.Socket'. at System.Net.Sockets.Socket.SendAsync(SocketAsyncEventArgs e, CancellationToken cancellationToken) at System.Net.Sockets.Socket.SendAsync(SocketAsyncEventArgs e) at ServerCore.Session.RegisterSend() in /Users/mini/Desktop/projects/Game/MMO_Server_Tutorial/ServerCore/Session.cs:line 71 at ServerCore.Session.Send(ArraySegment`1 sendBuff) in /Users/mini/Desktop/projects/Game/MMO_Server_Tutorial/ServerCore/Session.cs:line 57 at DummyClient.GameSession.OnConnected(EndPoint endPoint) in /Users/mini/Desktop/projects/Game/MMO_Server_Tutorial/DummyClient/Program.cs:line 20 at ServerCore.Connector.OnConnectCompleted(Object sender, SocketAsyncEventArgs args) in /Users/mini/Desktop/projects/Game/MMO_Server_Tutorial/ServerCore/Connector.cs:line 42 그리고 찍히는 로그가.. 좀 이상한 것 같은데요.. [From Server]: 메시지 OnDisconnected: [fe80::1%1]:7777 OnConnected: [fe80::1%1]:7777 이러고 나서 바로 위 에러가 나버립니다. 도저히 원인을 찾을 수 없을 것 같아서 질문 남겨드립니다..
현재 시점으로 npm i @types/socket.io-client하면 3.0.0 버전으로 설치가되어 2버전과 맞지 않아 에러가 나옵니다. 저 같은 경우는 제로초님의 깃헙에 올라와있는 json을 보고 1.4.35 버전으로 명시하여 설치하여 문제를 해결하였습니다. 혹시 문제 있으신 분 확인해보세요. npm i -D @types/socket.io-client@1.4.35
안녕하세요 항상 좋은 강의 잘 듣고 있습니다. jobqueue에 대해서 궁금한 점이 생겨 질문드리게 되었습니다. 질문1) 예를 들어 ABCDE쓰레드가 거의 동시에 C_Chat 패킷을 핸들링할 경우, C_ChatHandler 가 아래와 같고("패킷을 받았습니다" 메세지 전송 추가) Push의 lock에 접근한 순서가 문자 순서대로 A가 1번 B가 2번...이라면 A쓰레드는 Flush를 수행한 후 클라이언트에게 "패킷을 받았습니다를" 보내주고 나머지 BCDE쓰레드들은 Flush를 수행하지 않고 큐에 넣기만 하고 "패킷을 받았습니다"라는 메세지를 보내게 되는 게 맞나요? 질문2) 위 내용이 맞다면 A쓰레드는 단지 1등으로 Push의 lock에 접근했다는 이유로 Flush(요리)를 수행하고, 응답("패킷을 받았습니다"라는 메시지 Send // Push로 등록한 action이 아닌 Push 이후의 흐름들)을 Flush수행 시간만큼 늦게 보내게 되는 것인데 뭔가 불합리?하다고 느껴집니다. 이런 정책을 많이 사용하나요?
저의 프로젝트 화면 입니다. 여기서 김이라고 검색을 하고나서 김만두를 클릭을 하면 김만두에 대한 정보가 나오는게 아니라 관리자에 대한 정보가 나옵니다. 필터가 되면 데이터를 초기화 시키고 필터된 것만 데이터를 배열에 넣어서 다시 출력 하는 건가요? 일단 제가 테스트 했을 땐 키 값이 4에서 검색을 했을 때 0이 나온걸 보면 맞는거 같긴한데... 아!! 여기서 i가만 초기화가 되는구나... 이 값을 제가 바꾼다 따로 key라는 값을 만들어서 하면!! 되겠다!!! 감사합니다 이해 했습니다.
고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
파이썬 공식 문서 --버전 3.8부터 폐지: aws 에 있는 어웨이터블이 코루틴이면, 자동으로 태스크로 예약됩니다. 코루틴 객체를 wait() 로 직접 전달하는 것은 혼란스러운 동작 으로 연결되므로 폐지되었습니다. -- async def process_async(): start = time.time() task1 = asyncio.create_task( exe_calculate_async('One', 3)) task2 = asyncio.create_task( exe_calculate_async('Two', 2)) task3 = asyncio.create_task( exe_calculate_async('Three', 1)) await task1 await task2 await task3 end = time.time() print(f'>>> Total seconds: {end - start}') 문제 없이 실행 되었습니다.
안녕하세요, 강의 보면서 제 게임을 만들고 있는 학생입니다. 저는 Game씬에서 퍼즐 씬으로 넘어가도록 만들고 있습니다. 그런데 여기서 MissingReferenceException: The object of type 'PlayerController' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. 오류가 발생합니다. InputManager에서 사용자의 키보드 입력이 들어오면 KetAction을 구독한 친구들(제 경우엔 PlayerController)에게 Invoke()를 통해 신호를 주잖아요. 그런데 새로운 씬으로 넘어가면 PlayerController가 사라지는데도 자꾸 신호를 넘겨줘서 이런 문제가 발생하는 것 같습니다. 캐릭터 이동에 할당한 키와 같은 키를 눌렀을 때 문제가 발생합니다. 이걸 해결할 수 있는 방법이 없을까요?
안녕하세요 강사님. 제가 윈도우 유저라서, 강사님께서 알려주신대로 Malgun Gothic 을 사용해서 원하는 결과값을 얻었습니다. 여기서 추가되는 질문이, 해당 폰트 말고 다른 폰트로 입력하려 하는데 이 입력값은 어떻게 알 수 있을까요? 예컨대 맑은 고딕이 한글로 "맑은 고딕"이 아닌, "Malgun Gothic" 이라는 것을 어떻게 알 수 있는 것일까요? C:/Windows/Fonts 에서 폰트 파일들을 확인해도 파일명은 한글로 나와있어서, 구체적으로 어떻게 입력하면 좋을지 알고 싶습니다!