묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결React로 NodeBird SNS 만들기
질문이있습니다
혹시 강의에서는 버튼을 누르면 댓글이 불러와지게되있는데 게시글 상세보기를 들어갔을때 바로 댓글이 불러와지게 할수 있는 방법이 있을까요? 바로 불러와지지가 않아서 잘 안되네요..
-
미해결제주코딩베이스캠프 Code Festival: Python 100제
37번문제 질문이 있습니다
If문에서 l.count (l [i-1])로 되ㅣ어있는데 왜 -1를 하는지 잘 이해가되지 않습니다.
-
미해결React로 NodeBird SNS 만들기
리덕스와 리덕스가
안녕하세요. 제가 강의를보면서 redux는 동기적 행동 reudx saga가는 비동기적 행동을 하기위해서 쓰이는거 잖아요? 강의에서는 redux saga에 axios를 써서하는데 그냥 리덕스를 써서 axios를 보내도되는건가요?? nodejs 회원가입할 때 데이터의 흐름을 잘 모르겠네요... 어떡게하면 빠른이해가 될까요..
-
해결됨남박사의 파이썬 기초부터 실전 100% 활용
파일 읽고 쓰기에 대한 질문이 있습니다.
강의와 책을 같이 보면서 공부중입니다. 파일에 임의의 내용을 3줄로 써놓은 상태에서 한 줄씩 읽은 결과물에 대해서 의문이 생깁니다. # 파일의 내용을 한줄씩 읽기 with open('Hello.txt', mode='r') as file: line = None while line != '': line = file.readline() print(line.strip('\n')) # for 반복문을 이용하여 파일의 내용을 한줄씩 읽기 with open('Hello.txt', mode='r') as file: for line in file: print(line.strip('\n')) 위 내용을 실행해보면 위의 경우에는 3줄이 모두 출력된 다음에 공백이 한 줄 생기는데 아래의 경우에는 공백 없이 3줄을 출력후에 종료가 됩니다. 무슨 차이인지 잘 모르겠습니다. 위의 경우에 line 변수에 마지막줄이 출력된 다음에 그 다음줄로 넘어간다고 해도 while 조건에서 거짓이 되니까 line이 공백이더라도 출력이 안돼야 하는게 정상인거 같은데...아닌가요?
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
axios interceptors
axios 문서에 보면..Do something before request is sent ....before they are handled by then... then 에 의해 handle 되기 전이라고 되어 있는데... 그럼... 소스코드상 then 이후에 스토어 저장 하는데... 그럼...LoginUser 에서는 authorization 에 아무것도 없어야 하는거 아닌가요? 실제도 보였다 안보였다 하는데... 제가 잘 못 한건가요....?
-
미해결홍정모의 따라하며 배우는 C언어
(int*) end 와 (int) *end 의 차이
교수님 안녕하세요. 4:30 ~ 10:00 strtol(), strtoul(), strtod() 설명하시면서 printf("%s %ld %s %d\n", str, l, end, (int*)end); 를 여러번 사용하셨는데 (int*)end 부분에서 Warning이 나왔습니다. (int*) end 를 (int) *end 또는 *end 로 바꾸는게 더 좋을까요? 아니면 제가 개념을 정확하게 이해하지 못하고 있나 싶어서 질문드립니다..
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
라우터 설치시 오류에 대한 질문
안녕하세요. 강의 잘 보고 있습니다. 감사합니다. 강의를 앞에서 부터 따라서 설치를 진행하고 있는데요. 라우터를 설치하는 중에 아래와 같은 "warn" 이 발생해서 여러번 설치해봤지만 동일한 증상이 나오고 있습니다. 어떻게 진행하면 좋을지 모르겠어서 질문 드립니다. 감사합니다. ----------------------------------------------------------- ➜ vue-til-manually git:(master) npm i vue-router npm WARN jsdom@15.2.1 requires a peer of canvas@^2.5.0 but none is installed. You must install peer dependencies yourself. npm WARN ws@7.2.1 requires a peer of bufferutil@^4.0.1 but none is installed. You must install peer dependencies yourself. npm WARN ws@7.2.1 requires a peer of utf-8-validate@^5.0.2 but none is installed. You must install peer dependencies yourself. + vue-router@3.1.5 added 1 package from 1 contributor and audited 926713 packages in 12.041s found 0 vulnerabilities
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
갑자기 vue cli가 작동을 하지 않습니다
기존에 하던방식대로 다운을 받았었고 vue-news와 vue-news3파일을 만들때 까지만해도 금방금방 다운받아졌는데 그 파일들을 지우고 새로 vue-news프로젝트를 생성하니 30분이 넘도록 다운이 안받아지고 아예 다운로드를 멈추는데 바뀐부분은 source control 에 알림이하나 뜬거 밖에 없는데 무슨 문제인지 모르겠습니다 도와주시면 감사하겠습니다
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
char = 빈칸, reverse_sentence= I이고 두개를 더하면 I인데 왜 빈칸이 나오나요?
for문 설명에서..
-
미해결리눅스 IPC 프로그래밍 - 이론과 실습
WSL Ubuntu에서 메시지 큐
안녕하세요 윈도우10에서 WSL Ubuntu 18.04 LTS 환경에서 수업을 듣고 있는데 메시지큐부터 컴파일은 잘 되는데 실행하면 아래와 같이 나옵니다 mq_open(): Function not implemented init_msgq(): Function not implemented 1. 같은 코드를 CentOS에서 돌려보니 잘 되긴 하는데 윈도우에서 하는 방법은 없을까요? (lsp도 들었는데 지금까지 잘 됐습니다 ) 2. -lrt 옵션을 줘야한다고 되어있는데 Makefile 어디를 수정해야하는지 모르겠어서 gcc 직접 하고 있습니다 ㅠ 답변 부탁드립니다~! ps. 웹 개발자인데 너무 재밌게 잘 듣고 있습니다. 감사합니다
-
미해결퍼블리셔 취업을 위해 제대로 배워보는 html과 css, 그리고 웹표준
background: url()과 background-img 그리고 <img>
안녕히세요 선생님! 항상 강의 잘 듣고 있습니다 :) 이제 웹사이트 제작 css 실습을 듣고 있는데요, - background: url() - background-img - <img> 이 세가지의 차이점에 대해 알고 싶습니다! 이미지마다 조금씩 다르게 적용되는 것 같아 헷갈리네요 ㅠㅠ
-
미해결Typescript with Vue 실전 프로젝트
안녕하세요. 강의 잘 들었습니다.
좋은 강의 감사드립니다. 혹시 마지막 실전 프로젝트 소스 github로 공유해주시면 안될까요?
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
파일 배포하기에서 질문있습니다!
배포파일을 만들었는데 실행이안됩니다 라이브러리는 다 설치했는데 인코딩문제인지 구글링해보니 reload(sys) 등등 하라고 해서 메인함수에 추가해봐도 reload(sys)가 정의되지 않았다고 에러가뜨고 뭐가문제인지 잘 모르겠습니다 아래는 코드입니다 from PyQt5 import QtWidgets from PyQt5 import QtCore from PyQt5.QtWidgets import QToolButton, QSizePolicy import datetime import numpy as np import pandas as pd import matplotlib.pyplot as plt import cv2 import os class MainDialog(QtWidgets.QWidget): '''메인 윈도우가 되는 위젯. 이 창에서 나머지 기능들을 팝업시킵니다.''' def __init__(self): super().__init__() self.layout_s = QtWidgets.QVBoxLayout(self) #전체틀 self.start_layout = QtWidgets.QHBoxLayout() #버튼을 담을 틀 self.setFixedSize(300, 200) self.btn_watch = self.createButton("공부 시작",self.clickWatch)#버튼watch self.btn_graph = self.createButton("공부량 보기",self.clickGraph)#버튼graph self.btn_watch.resize(self.btn_watch.sizeHint())#sizeHint=holds the recommended size for the widget self.btn_graph.resize(self.btn_graph.sizeHint()) self.start_layout.addWidget(self.btn_watch)#틀에 버튼 담음 self.start_layout.addWidget(self.btn_graph) self.layout_s.addLayout(self.start_layout)#전체틀에 버튼을 담은 틀을 담음 self.setLayout(self.layout_s) self.show() def clickWatch(self): '''공부 시작이 눌리면 동작하는 함수''' # MyClock 객체가 생성되어 newWindow 변수에 저장 self.newWindow = MyClock() # 새로운 위젯 show self.newWindow.show() def clickGraph(self): try: image = cv2.imread("C:\\study\\chart.png", cv2.IMREAD_ANYCOLOR) cv2.imshow("study time", image) cv2.waitKey(0)#cv2.waitkey(time)이며 time마다 키 입력상태를 받아옵니다. #0일 경우, 지속적으로 검사하여 해당 구문을 넘어가지 않습니다. cv2.destroyAllWindows()#창 닫기 except: QtWidgets.QMessageBox.about(self, "알림", "공부하세요!") def createButton(self, text, function): button = Button(text) button.clicked.connect(function) return button class MyClock(QtWidgets.QWidget): def __init__(self): super().__init__() # 스톱와치 용 변수 self.createFolder("C:\\study") self.watch_start_time = 0 self.mouseClick = False self.setWindowTitle("시계") self.setFixedSize(250, 100)#사이즈고정 self.setWindowFlags(QtCore.Qt.FramelessWindowHint)#타이틀바 없앰 self.initWidgets() self.show() self.days = datetime.date.today().day self.months=datetime.date.today().month def createFolder(self,directory): try: if not os.path.exists(directory): os.makedirs(directory) except OSError: print("error") def keyPressEvent(self, e):#esc누르면 종료 if e.key() == QtCore.Qt.Key_Escape: day = str(self.months)+"/"+str(self.days) try:#이미 파일을 만들었으면 data = pd.read_csv('C:\\study\\graph.csv') if data.loc[len(data)-1, "day"]==day:#같은 날짜면 시간 누적 data.loc[data["day"]==day, "time"]+=self.watch_start_time data.to_csv('C:\\study\\graph.csv',header=True, index=False) else:#새로운 날짜,시간 append data2=pd.DataFrame({"day":[day],"time":[self.watch_start_time]}) data=pd.concat([data,data2], ignore_index=True) data.to_csv('C:\\study\\graph.csv',header=True, index=False) except:#파일이없으면 df=pd.DataFrame({"day":[day],"time":[self.watch_start_time]}) df.to_csv('C:\\study\\graph.csv',header=True, index=False)#header:column이름 정보 data=pd.read_csv('C:\\study\\graph.csv') group_by_day=data.groupby('day').time.sum()#day별로 time의 합을 구함 y=list(group_by_day) x = np.arange(len(y)) xlabel = list(data["day"]) plt.title("Amount",fontsize=20) plt.bar(x, y) plt.xticks(x, xlabel) plt.yticks(sorted(y)) plt.xlabel("Date",fontsize=10) plt.ylabel("Study Time(s)",fontsize=10) plt.savefig('C:\\study\\chart.png')#그래프 저장 self.close() def mousePressEvent(self, e):#마우스로 창 누를때 if e.button() == QtCore.Qt.LeftButton:#좌클릭시 self.mouseClick = True self.oldPos = e.globalPos()#x,y가 튜플형태로 넘어옴 #globalPos=윈도우상의 x,y좌표 def mouseReleaseEvent(self, e): self.mouseClick = False def mouseMoveEvent(self, e):#마우스로 창 누른뒤 이동시킬때 if self.mouseClick: delta = QtCore.QPoint(e.globalPos() - self.oldPos) self.move(self.x() + delta.x(), self.y() + delta.y()) self.oldPos = e.globalPos() def initWidgets(self): self.layout = QtWidgets.QVBoxLayout(self) #QV=가로 QH=세로 # 시작, 초기화 버튼 2개를 HBoxLayout 에 추가합니다. self.button_layout = QtWidgets.QHBoxLayout() # 버튼을 담기위한 레이아웃 self.btn_start = QtWidgets.QPushButton("중지", self) self.btn_reset = QtWidgets.QPushButton("초기화", self) self.btn_start.resize(self.btn_start.sizeHint()) self.btn_reset.resize(self.btn_start.sizeHint()) self.button_layout.addWidget(self.btn_start) self.button_layout.addWidget(self.btn_reset) self.lcd = QtWidgets.QLCDNumber()#시계디자인 위젯 self.lcd.setSegmentStyle(QtWidgets.QLCDNumber.Flat)#글자평평하게 self.lcd.setDigitCount(8)#글자 총 8개까지 보여줌(hh:mm:ss) self.lcd.setFrameStyle(QtWidgets.QFrame.NoFrame)#박스없앰 self.timer = QtCore.QTimer() # 타이머 생성 # 스탑와치용 출력 함수 연결 self.timer.timeout.connect(self.showWatch) # 타임아웃 이벤트를 showWatch와 연결 # 정한 시간이 지날때마다 show_time 실행 self.timer.start(1000)#1초에 한번씩 self.resetWatch() self.layout.addWidget(self.lcd) # 버튼 레이아웃을 기본 레이아웃에 추가합니다. self.layout.addLayout(self.button_layout) self.setLayout(self.layout) self.btn_start.clicked.connect(self.startWatch) self.btn_reset.clicked.connect(self.resetWatch) def startWatch(self): '''스탑와치를 시작하는 함수 입니다. 버튼 클릭시 시작과 중지를 한 버튼으로 처리하기 위해 버튼의 글자를 가져와서 각 상황에 맞게 동작합니다.''' text = self.btn_start.text() if text == "시작": self.btn_start.setText("중지") self.timer.start(1000) elif text == "중지": self.btn_start.setText("시작") self.timer.stop() def resetWatch(self): '''스탑와치를 초기화 합니다.''' text = "00:00:00" self.watch_start_time = 0 self.lcd.display(text) def showWatch(self): '''스탑와치의 현재시간 - 시작시간을 계산해서 화면에 출력하는 함수''' # 현재시간 - 스탑와치 시작시간을 total_seconds() 로 변환해서 초만 받습니다. self.watch_start_time+=1 # 진행된 초를 시:분:초로 출력하기 위해서 계산합니다. hour = self.watch_start_time // 3600 minute = self.watch_start_time % 3600 // 60 second = self.watch_start_time % 60 # 시:분:초 형태로 문자열 포맷팅을 합니다. text = '{:02d}:{:02d}:{:02d}'.format(hour, minute, second) # 출력 self.lcd.display(text) class Button(QToolButton): def __init__(self, text): super().__init__() buttonStyle = ''' QToolButton:hover {border:1px solid #0078d7; background-color:#e5f1fb;} QToolButton:pressed {background-color:#a7c8e3} QToolButton {font-size:11pt; font-family:나눔고딕; border:1px solid #d6d7d8; background-color:#f0f1f1} ''' self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) self.setText(text) self.setStyleSheet(buttonStyle) def sizeHint(self): size = super(Button, self).sizeHint() size.setHeight(size.height() + 30) size.setWidth(max(size.width(), size.height())) return size if __name__ == '__main__': app = QtWidgets.QApplication([]) win=MainDialog() app.exec_() freeze 결과입니다 (stopwatch) PS C:\python\스톱워치\dist> pip freeze altgraph==0.17 cycler==0.10.0 DateTime==4.3 future==0.18.2 kiwisolver==1.1.0 matplotlib==3.1.3 numpy==1.18.1 opencv-python==4.2.0.32 pandas==1.0.1 pefile==2019.4.18 PyInstaller==3.6 pyparsing==2.4.6 PyQt5==5.14.1 PyQt5-sip==12.7.1 python-dateutil==2.8.1 pytz==2019.3 pywin32-ctypes==0.2.0 six==1.14.0 zope.interface==4.7.1
-
미해결Node.js를 이용해 웹 애플리케이션 만들기
Express, 템플릿 엔진 사용법 에서 질문
Express, 템플릿 엔진 사용법 에서 app.set('views', '/views'); 이 코드를 작성시 Failed to lookup view "temp.pug" in views directory "/views" 라고 에러가 뜹니다. 저 부분을 주석처리시 화면이 잘 나옵니다. 왜 이런걸까요 .... ㅠㅠ
-
해결됨IT인을 위한 ELK 통합로그시스템 구축과 활용
공공데이터 분석 강의자료 링크가 없습니다.
제가 못 찾는 건지 공공데이터 분석 강의자료 링크가 없습니다ㅠㅠ
-
미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
영상 짤리는거 아닌가요?
끝날때 말씀이 어색하게 끊기는데 문제 없나요? 강의끝이라는 마무리멘트도 없고, 뭔가 찜찜해서 ㅠㅠ
-
미해결홍정모의 따라하며 배우는 C++
버블정렬 짜봤는데 더 좋은방법 있나요?
#include <iostream> using namespace std; void printArray(const int array[],const int length) { for (int index = 0; index < length; ++index) { cout << array[index] << " "; } cout << endl; } int main(void) { const int lengthe = 5; int array0[lengthe] = { 3,5,2,1,4 }; int max = 0; for (int reset = 0; reset < lengthe; reset++) { for (int i = 0, j = 1; (i < lengthe - 1) && (j < lengthe); j++, i++) { if (array0[i] <= array0[j]) continue; else if (array0[i] > array0[j]) { temp = array0[i]; array0[i] = array0[j]; array0[j] = temp; } printArray(array0, lengthe); } } return 0; }
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
vector 사용법 질문
map(30)이 아닌 map[30]으로 선언하는 이유가 궁금합니다.
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
안녕하세요. 질문드립니다.
파이썬 중급 강의 클래스 편을 보았습니다. 한가지 질문이 있어서 드립니다. Car class를 만들고 다른 .py에서 해당클래스를 import 시킬경우 from ... import Car 에서 class 이름으로 가지고 와서 해당 .py 에서 인스턴스 변수를 생성했을경우 첫번째 경우 car = Car() car.method() 두번째 경우 Car().method 셋번째 경우 Car.method() 이 4가지 방식에 대해서 자주 헷갈려서 질문드립니다. 설명좀 부탁드립니다. ㅜㅜ
-
미해결디지털 포렌식 (Digital Forensic) 전문가 과정
1강 vmware 질문드립니다
1. vmware 라이센스를 입력하라는데 이건 어떻게 해결하나요? 2. 굳이 가상머신을 사용하는 이유가 무었인가요?