묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
노드 html 응답 관련 질문있습니다.
안녕하세요 강의 잘 듣고 있습니다. 혼자 예시 코드 보고 작성하면서 공부중인데요 아래처럼 코드를 작성하고 인터넷 주소창에 localhost:3002 를 입력하면 화면이 안뜨다가 노드 프로그램으로 들어가서 저장을 한번 더 눌러줘야 화면에 html이 렌더링 되는데 html 파일에서 css 링크 파일을 지우고 하니까 바로 렌더링 되는데 왜그런지 궁금합니다.--------- const http = require("http"); const fs = require("fs").promises; const port = 3002; http .createServer(async (req, res) => { try { if (req.method === "GET") { // GET Requests if (req.url === "/") { console.log(req.url); const data = await fs.readFile("./restFront.html"); res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }); return res.end(data); } } } catch (err) { console.log(err); } }) .listen(port, () => { console.log(`${port}번 포트에서 대기중입니다.`); });
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
명령을 ctrl+shift+space bar로 실행하면
명령을 ctrl+shift+space bar로 실행하면 코드 입력할때 Enter키로 아래에 공간 확보해놓은게 다 초기화되고(그 버공간이 다 사라지고) 마지막 명령 있는데로 가지는데 영상에서 하시는걸 보면 명령실행을 하셔도 명령 아래에 공백 (예를 들어 39번 줄에 print 명령이 있고 그 아래에 45번 줄까지 공백만 있는경우) 이 사라지지 않고 고정되있는데 어떻게 해야하나요?
-
미해결애플 웹사이트 인터랙션 클론!
let enterNewScene=false; 부분 문의 드립니다.
let enterNewScene=false; 부분 문의 드립니다. let enterNewScene=false; 를 scrollLoop() 밖에 적고 다시 scrollLoop() 내에도 아래처럼 적는데요. function scrollLoop(){ enterNewScene=false; 이걸 밖에 let enterNewScene=false; 를 생략하고 scrollLoop() 내에 function scrollLoop(){ let enterNewScene=false; 라고만 하는것과 차이가있나요?
-
미해결[PyTorch] 쉽고 빠르게 배우는 딥러닝
코드 오류
안녕하세요. 수업을 듣고 있는 대학생입니다. 코드를 그대로 썼는데 에러가 나서요. 원인을 못찾겠습니다.
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
BNO080 출력주기입니다.
스코프로 확인해보니 주파수는 200Hz 정도나오네요. 펄스폭이 넓어졌다 좁아졌다하면서 흔들리는데 이렇게 출력되는 게 맞는지 궁금합니다.
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
시리얼 플로터에서 YAW 값이 30000 정도 나옵니다.
Roll과 Pitch 값은 선생님 영상과 비슷하게 0 부근 위아래로 나옵니다. 그런데 Yaw값은 영상은 15000 정도인데 저는 30000으로 출력됩니다. 괜찮을까요?
-
미해결MQTT 사물인터넷 통신 프로젝트 (Arduino, MQTT, Node.js, mongoDB, Android)
IOTServer생성시 오류
강의 잘 듣고 있는 중 , 오류가 발생되어 질문 드립니다. 이클립스에서 IOTServer를 생성하면 아래 캡쳐와 같은 오류가 발생하고 node_modules 폴더도 만들어지지 않습니다. 도움 부탁드립니다~~ 감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
멀티쓰레딩 예제 실행시간 수정 질문
random_device seed; mt19937 engine(seed()); uniform_int_distribution <> uniformDist(1, 10); const auto sta2 = chrono::steady_clock::now(); //시간 재는중 for (long long i = 0; i < n_data; i++) { v0.push_back(uniformDist(engine)); v1.push_back(uniformDist(engine)); } const chrono::duration<double> dur2 = chrono::steady_clock::now() - sta2; //시간 재는 중 cout << dur2.count() << endl; 말씀하신 부분을 다음과 같이 해서 시간을 측정해보니 143.15초가 나왔습니다. for문을 이용해 vector에 값을 넣는 것에만 2~3분이 걸린 것입니다. 구글링 해본 결과 시간 복잡도 계산에 for문 기준으로 1억번 계산하는데 1초라는 내용을 알 수 있었습니다 for문안에 2억번 계산이 이루어지니까 산술적으로 2초가 걸립니다. 하지만 단순 값을 넣는 것이 아닌 완전 랜덤 숫자를 넣는 것이니까 2초보다는 조금 더 걸리겠지 라는 생각을 해봐도 시간이 지나치게 소요된다는 생각이 들었습니다. 교수님이 예제를 보여주실 때는 거의 순식간에 결과를 알 수 있었는데 이러한 차이가 어디서 오는건지 궁금합니다.
-
미해결Flutter 입문 확장판 - 인스타그램 클론 2.0
progressindicator 재질문
거듭된 실패와 관련 자료를 찾지 못해 부득이 재질문 드립니다 onPressed: () async { setState(() { isProgressing = true; });// if (isProgressing == true){// return Center(child: CircularProgressIndicator());// } await _uploadFile(context); setState(() { isProgressing = false; }); }, 결과적으로 if 문을 어디에 넣어야하는 지 모르겠습니다... isProgressing 를 전역변수에 선언하고 저렇게 setState 뒤에도 넣어보고 (주석) _uploadFile()안에도 넣어보고 했는데 표시가 안됩니다. 혹 indicator가 ui 안쪽에서 실행되고있는거 아닌지 해서 관련자료 찾아보았으나 이마저도 아닌거 같습니다. 조금더 힌트 주시면 감사드리겠습니다 ^^
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
간단한거 같은데, 몇시간동안 이유를 못찾아서 이렇게 글 남깁니다..
console log 찍으면 false 와 true 값은 변하는데, 클라이언트에서 뎁스에 있는 코멘트를 펼치는게 작동하지 않는데, 왜 그런건지 이유를 찾을 수가 없어서요.. https://github.com/lhj1004ss/youtube_clone
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
강의완 관련없지만 중급sql강의 만료되서 연장가능한가요?
업무하다가 union 이랑 join group by에서 막혀서 초급/ 중급 강의 다시 찾아갔는데알고보니 3개월만료기간이있던강의들이었더라구요그래서 만료됬는데기존강의구매자들에한해서 만료기간없애거나 하실생각은없나요?
-
미해결홍정모의 따라하며 배우는 C언어
10.16 2차원 배열 arr2d의 역참조 횟수가 이해가 잘 안됩니다.
arr2d[0][0]와 **arr2d가 같다고 말씀하시는 부분에서 의문이 들어 질문드립니다. arr2d 자체가 전에 강의에서 설명 하신것처럼 이중포인터가 아니라 그냥 2차원 배열이라 주소자체가 따로 저장되는게 아니라서 주소가 한단계 밖에 없는데 arr2d의 역참조(*)가 두번이나 될수 있는게 이해가 잘안되네요ㅠ 설명부탁드립니다!
-
해결됨스프링과 JPA 기반 웹 애플리케이션 개발
패키지 구조 관련 질문입니다.
안녕하세요. 어제 라이브 재밌었습니다.신세경.. 미국엔 잘 돌아가셨는지 궁금하네요..ㅎㅎ 다름이 아니고, 강의를 보고 개인 프로젝트를 진행하려고 하는데 패키지 구조를 도메인형으로 해야할지, 계층형으로 해야 할지에서 부터 고민이 되어 질문드립니다. 기선님 강의에서는 도메인으로 나뉘었고, 펫클리닉 프로젝트도 찾아보니 도메인으로 나눠놓았더라구요 제가 본 여타 다른 강의들에서는 컨트롤러/서비스/레포지토리/exception/ 등등으로 나눠놓은 걸 보아 어떤 것이 정답이다 라는 것은 없는것 같기도하고.. 해서 블로그 글을 참고해서 보니https://cheese10yun.github.io/spring-guide-directory/도메인이 더 낫다는 글을 보았습니다. 기선님 강의들에서는 더 나은 패키지구조 선택에 관해서 언급하셨던 기억이 없어서 질문드려요! 너무 좋은 강의 만들어주셔서 감사합니다. 많은 도움이 되고 있어요 :)
-
미해결실시간 트렌드 홈페이지 개발(파이썬 크롤링 + Flask)
네이버 쇼핑 핫딜 크롤링 문제
네이버 쇼핑 핫딜 데이터를 크롤링하는 과정에서 강의에서는 핫딜 버튼의 ClassName이 '_productSet_hotdeal'로 되어있어 driver.find_element_by_class_name("_productSet_hotdeal").click() 코드를 사용하여 버튼을 클릭했지만, 현재는 네이버 쇼핑 소스가 변경되어 모든 버튼의 ClassName이 'subFilter_filter__3Y-uy'로 되어있어 driver.find_element_by_css_selector("#__next > div > div.container > div.style_inner__18zZX > div.style_content_wrap__1PzEo > div.style_content__2T20F > div.seller_filter_area > ul > li:nth-child(5) > button").click() 코드를 사용하여 버튼을 클릭하였습니다. 문제는, 버튼 클릭까지는 문제 없이 진행 되었지만 핫딜 페이지의 데이터를 출력하는 과정에서 핫딜 데이터를 출력하는 것이 아닌 기존의 데이터를 출력합니다. 어떻게 해결해야 될까요? - app.py from flask import Flask, render_template, request app = Flask(__name__) # crawling module import import requests from bs4 import BeautifulSoup # excel module import from openpyxl import Workbook write_wb = Workbook() write_ws = write_wb.active # 셀리니움 사용 전 크롬 웹드라이버 설치 # Web automation module import from selenium import webdriver @app.route("/") def hello_world(): return render_template("index.html") @app.route("/result", methods=["POST"]) def result(): keyword = request.form['input1'] page = request.form['input2'] daum_list = [] # crawling for i in range(1, int(page) + 1): req = requests.get("https://search.daum.net/search?nil_suggest=btn&w=news&DA=PGD&cluster=y&q=" + keyword + "&p=" + str(i)) soup = BeautifulSoup(req.text, "html.parser") for i in soup.find_all("a", class_="f_link_b"): daum_list.append(i.text) # excel for i in range(1, len(daum_list) + 1): write_ws.cell(i, 1, daum_list[i-1]) write_wb.save("static/result.xlsx") return render_template("result.html", daum_list = daum_list) @app.route('/naver_shopping') def naver_shopping(): driver = webdriver.Chrome('./chromedriver.exe') driver.implicitly_wait(3) driver.get("https://search.shopping.naver.com/search/all?query=%EA%B3%B5%EA%B8%B0%EC%B2%AD%EC%A0%95%EA%B8%B0&frm=NVSHATC&prevQuery=%EA%B3%B5%EA%B8%B0%EC%B2%AD%EC%A0%95%EA%B8%B0") soup = BeautifulSoup(driver.page_source, "html.parser") for i in soup.select("#__next > div > div.container > div.style_inner__18zZX > div.style_content_wrap__1PzEo > div.style_content__2T20F > ul > div > div > li"): print(i.find("a", class_="basicList_link__1MaTN").text) print("---------------------------") driver.find_element_by_css_selector("#__next > div > div.container > div.style_inner__18zZX > div.style_content_wrap__1PzEo > div.style_content__2T20F > div.seller_filter_area > ul > li:nth-child(5) > button").click() soup = BeautifulSoup(driver.page_source, 'html.parser') for i in soup.select("#__next > div > div.container > div.style_inner__18zZX > div.style_content_wrap__1PzEo > div.style_content__2T20F > ul > div > div > li"): # 핫딜 페이지로 정상적으로 이동되어 있지만 기존의 페이지의 데이터를 출력함 print(i.find("a", class_="basicList_link__1MaTN").text) return render_template("shopping.html") if __name__ == "__main__": app.run() - 실행결과
-
해결됨홍정모의 따라하며 배우는 C언어
빌드 에러
프로젝트를 생성한 후에 실행시키기 위해 Build Solution을 눌렀더니 아래 사진과 같이 에러가 잔뜩 뜹니다.. 프로젝트 지우고 다시 만들어봐도 여전히 에러가 뜨네요 어떻게 해결해야 할까요?
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
선생님 isnull과 isna의 차이는 무엇인가요?
선생님 isnull과 isnan의 차이는 무엇인가요?
-
미해결[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
jupyter notebook에서 pymongo import가 안 돼요...
mac이고 terminal에서 pip3.8 install pymongo 해서 인스톨 했고 vscode에서는 pymongo 사용이 아주 잘 됩니다. 그런데 쥬피터 노트북에선 아무리 컴퓨터를 껐다 켜도 pymongo 임포트가 안 되네요... 무엇이 문제일까요?
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
과제 확인 부탁드립니다.
dic은 처음에 주어진다고 가정을 하고 작성을 해 보았습니다. def value_key_back(i): user_dic = {"America": 1, "Korea": 82, "China": 86, "Japan": 81} user_key_list = list(user_dic.keys()) user_value_list = list(user_dic.values()) key_index_num = user_value_list.index(i) result = user_key_list[key_index_num] return result print('user_dic = {"America": 1, "Korea": 82, "China": 86, "Japan": 81}') dic_value = int(input("Input any value: ")) print("The Key is {0}". format(value_key_back(dic_value)))
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Connect를 이용하여 여러소켓 생성후 문제점
안녕하세요 루키스님 정말 강의 도움 많이 받고 있어요 !!소켓을 10번 생성과함께 커넥트를 요청하는 부분에0.1초 딜레이를 주면 (*대부분*) 잘작동하더라구요 하지만, 저 딜레이를 빼면 아래 그림과같은 에러가 나와요! 저는 이것을 비동기에서 발생하는 문제점이라고 생각했습니다. 그래서 Receive에 _lock을 걸어서 실험도해봤지만여전히 같은 오류를 내고 있더라구요 혹시 이런 에러가 발생하는 부분의 가능성이나해결방법이 어떤게 있을까요? 딜레이를 주는경우대부분 잘되는것은 비동기 문제가 맞는걸까요?
-
미해결홍정모의 따라하며 배우는 C++
멀티쓰레딩 예제 실행시간 재질문
말씀하신 코드는 다음과 같습니다 #include<iostream> #include<chrono> #include<mutex> #include<random> #include<thread> #include<utility> #include<vector> #include<atomic> #include<future> #include<numeric> //std::inner_product #include<execution> // parallel_execution using namespace std; mutex mtx; void dotProducNaive(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, unsigned long long& sum) { for (unsigned i = i_start; i < i_end ; i++) { sum += (v0[i] * v1[i]); //내적 구현 한 것 } } void dotProductLock(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, unsigned long long& sum) { //cout<<"Thread start"<<endl; for (unsigned i = i_start; i < i_end; i++) { std::scoped_lock lock(mtx); //c++17 sum += v0[i] * v1[i]; } } void dotProducAtomic(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, atomic<unsigned long long>& sum) { for (unsigned i = i_start; i < i_end ; i++) { sum += (v0[i] * v1[i]); //내적 구현 한 것 } } int main() { const long long n_data = 100'000'000; const unsigned n_threads = 8; //initialize vectors std::vector<int> v0, v1; v0.reserve(n_data); v1.reserve(n_data); random_device seed; mt19937 engine(seed()); uniform_int_distribution <> uniformDist(1, 10); for (long long i = 0; i < n_data; i++) { v0.push_back(uniformDist(engine)); v1.push_back(uniformDist(engine)); } cout << "std::inner_product" << endl; { const auto sta = chrono::steady_clock::now(); //시간 재는중 const auto sum = std::inner_product(v0.begin(), v0.end(), v1.begin(), 0ull); const chrono::duration<double> dur = chrono::steady_clock::now() - sta; //시간 재는 중 //계산한 시간 출력 cout << dur.count() << endl; cout << sum << endl; cout << endl; } cout << "Native" << endl; { const auto sta = chrono::steady_clock::now(); unsigned long long sum = 0; vector<thread> threads; threads.resize(n_threads); //쓰레드 마다 맡길 일의 양을 결정 const unsigned n_per_thread = n_data / n_threads; //assumes remainder=0 //쓰레드 할당 중 + 쓰레드에 값을 넣어주는 중 for (unsigned t = 0; t < n_threads; t++) { threads[t] = std::thread(dotProducNaive,std::ref(v0),std::ref(v1), t* n_per_thread, (t + 1)* n_per_thread, std::ref(sum)); } //join으로 기다리는 코드 for (unsigned t = 0; t < n_threads; t++) { threads[t].join(); } const chrono::duration<double> dur = chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } cout << "Lock guard" << endl; { const auto sta = chrono::steady_clock::now(); unsigned long long sum = 0; vector<thread> threads; threads.resize(n_threads); //쓰레드 마다 맡길 일의 양을 결정 const unsigned n_per_thread = n_data / n_threads; //assumes remainder=0 //쓰레드 할당 중 + 쓰레드에 값을 넣어주는 중 for (unsigned t = 0; t < n_threads; t++) { threads[t] = std::thread(dotProductLock, std::ref(v0), std::ref(v1), t * n_per_thread, (t + 1) * n_per_thread, std::ref(sum)); } //join으로 기다리는 코드 for (unsigned t = 0; t < n_threads; t++) { threads[t].join(); } const chrono::duration<double> dur = chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } cout << "atomic" << endl; { const auto sta = chrono::steady_clock::now(); atomic<unsigned long long> sum = 0; vector<thread> threads; threads.resize(n_threads); //쓰레드 마다 맡길 일의 양을 결정 const unsigned n_per_thread = n_data / n_threads; //assumes remainder=0 //쓰레드 할당 중 + 쓰레드에 값을 넣어주는 중 for (unsigned t = 0; t < n_threads; t++) { threads[t] = std::thread(dotProducAtomic, std::ref(v0), std::ref(v1), t * n_per_thread, (t + 1) * n_per_thread, std::ref(sum)); } //join으로 기다리는 코드 for (unsigned t = 0; t < n_threads; t++) { threads[t].join(); } const chrono::duration<double> dur = chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } return 0; }