묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Do it! 쉽게배우는 웹앱·하이브리드 앱
UnhandledPromiseRejectionWarning
phonegap serve 명령어를 누르고 나면 UnhandledPromiseRejectionWarning이 뜹니다. 혹시 이 부분은 어떻게 해결할 수 있나요?
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
디지털시계 만들기에서 질문있습니다!
수업내용이아니라 제가 스스로만드는 것에서 질문을 해도 될지 모르겠습니다 ^^; 배운것을 토대로 공부한 시간을 날짜별로 저장해서 그래프로 보여주는 프로그램을 만들고있는데, 맨 첫 창을 "공부시작", "공부량보기"(그래프) 로 설정하고 공부시작을 누르면 타이머가 작동하도록 하고싶은데 타이머창이 열리지않고 아무창도 안떠서 질문드립니다.. 제 계획은 맨 첫창이 뜬 뒤 "공부시작"을 누르면 맨첫창은 그대로 있고 타이머만 새로운 창으로 열려서 동작하게 할 생각인데, 그러면 def __init__(self)를 아예 수정하고 다른 함수에서 원래있던 def __init__(self)의 설정들을 저장해줘야할것 같은데 어떻게 코드를 짜야할지 감이 안잡힙니다 ㅠ 그리고 https://doc.qt.io/qt-5/qwidget.html 에서 버튼 클릭시 새로운 창이 뜨게하는 함수를 찾으려해도 양이 너무 방대해서 어떻게 원하는 함수를 딱 찾을수 있는지도 모르겠습니다 조금만 알려주시면 정말 감사하겠습니다 from PyQt5 import QtWidgets from PyQt5 import QtCore import datetime,time import numpy as np import seaborn as sns import pandas as pd import matplotlib.pyplot as plt class MyClock(QtWidgets.QWidget): def __init__(self): super().__init__() # 스톱와치 용 변수 self.watch_start_time = 0 self.mouseClick = False self.setWindowTitle("시계") self.setFixedSize(250, 100)#사이즈고정 self.setWindowFlags(QtCore.Qt.FramelessWindowHint)#타이틀바 없앰 self.startMenu() self.show() self.days = datetime.date.today().day self.months=datetime.date.today().month 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:\\python\\graph.csv') if data.loc[len(data)-1, "day"]==day:#같은 날짜면 시간 누적 data.loc[data["day"]==day, "time"]+=self.watch_start_time data.to_csv('graph.csv',header=True, index=False) else:#새로운 날짜,시간 append data2=pd.DataFrame({"day":[day],"time":[self.watch_start_time]}) pd.merge(data,data2) data.to_csv('graph.csv',header=True, index=False) except:#파일이없으면 df=pd.DataFrame({"day":[day],"time":[self.watch_start_time]}) df.to_csv('graph.csv',header=True, index=False)#header:column이름 정보 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 watch(self): self.initWidgets() def graph(self): pass def startMenu(self): self.layout_s = QtWidgets.QVBoxLayout(self) #전체틀 self.start_layout = QtWidgets.QHBoxLayout() #버튼을 담을 틀 self.btn_watch = QtWidgets.QPushButton("공부 시작",self)#버튼watch self.btn_graph = QtWidgets.QPushButton("공부량 보기",self)#버튼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.btn_watch.clicked.connect(self.initWidgets)#버튼 클릭시 함수와 연결 self.btn_graph.clicked.connect(self.graph) 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) app = QtWidgets.QApplication([]) win = MyClock() app.exec_()
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
제 소스코드 한번 봐주시면 감사하겠습니다.
좋은 수업 잘 듣고 있습니다. 먼저 제 코드를 짜고 선생님 수업에 대한 내용을 확인하는 편인데, 일단 제 로직과 선생님의 로직에 약간의 차이는 있는 소스코드입니다. 저같은 경우에는, while 루프를 돌 때, 먼저 cnt라는 것이 현재 들어이는 Q의 size를 넣어줍니다. 그렇게 되면 level 1에서 찾아야하는 토마토 개수가 들어갈 것이고 해당하는 만큼 for문을 돌게 되면서 상하좌우를 서치하고 다시 Q에 넣어줍니다. Q에 넣더라도 처음의 Q size만큼 for문을 돌기 때문에 level 2로 넘어가지 않고 for문이 끝나고 다시 while의 처음으로 들어오게되는 정도의 차이정도가 있습니다. 39행부터 56행까지의 내용입니다. 이 로직이 틀린걸까요? 아니면 제가 틀린걸까요? test를 돌려보면 1, 2, 3번 파일은 맞추나 4, 5번 파일이 wrong_answer가 떠서 60점이 나옵니다. 소스코드는 아래와 같습니다. 감사합니다. #include<cstdio> #include<queue> #include<malloc.h> using namespace std; struct Loc{ int x; int y; Loc(int a, int b){ x = a; y = b; } }; int main(){ int n, m; int **arr; int dx[4] = {1, -1, 0, 0}; int dy[4] = {0, 0, 1, -1}; scanf("%d %d", &n, &m); arr = (int **)malloc(sizeof(int) * m); for(int i=0; i<m; i++){ arr[i] = (int *)malloc(sizeof(int) * n); } for(int i=0; i<m; i++){ for(int j=0; j<n; j++){ scanf("%d", &arr[i][j]); } } queue<Loc> Q; for(int i=0; i<m; i++){ for(int j=0; j<n; j++){ if(arr[i][j] == 1){ Q.push(Loc(j, i)); } } } int day = 0; while(!Q.empty()){ int cnt = Q.size(); for(int i=0; i<cnt; i++){ Loc tmp = Q.front(); Q.pop(); for(int j=0; j<4; j++){ int xx = tmp.x + dx[j]; int yy = tmp.y + dy[j]; if(xx >= 0 && xx < n && yy >= 0 && yy < m){ if(arr[yy][xx] == 0){ arr[yy][xx] = 1; Q.push(Loc(xx, yy)); } } } } day++; } printf("%d", day-1); for(int i=0; i<m; i++) free(arr[i]); free(arr); }
-
미해결React로 NodeBird SNS 만들기
back에서 에러 send 질문이요.
front에서 LOAD_USER_REQUEST 같은 액션하면 유저 정보가 없으면 status 403에러로 reason 보내 주는 거같은 부분이나, 게시 글이 없어서 status 403 보느주는 부분 있잖아요. 400 번대로 보내면 콘솔에 error표시 되는 데요. 저렇게 back에서 경우에 따라 개발자가 status 400으로 에러 보내주는게 console에 error로 뜨게 하는게 맞나요? 아니면 status를 다른 번호로 바꿔주고 console에 남지 않게 하는게 맞나요?
-
미해결에펙 입문자도 만들 수 있는 유튜브 인트로 애프터이펙트 강좌
도형 만들기 도와주세요!!
애프터 이펙트2018 CC 버젼을 사용하고 있습니다. 일러스트레이터처럼 알트 / 알트 + 쉬프트 를 이용한 가운데서부터 도형이 그려지게 하는 기능은 없는건가요?
-
미해결iOS12 앱 개발 퍼펙트 가이드
머신러닝 라이브러리
MLImageClassifierBuilder.showInLiveView() 플레이 그라운드에서 똑같이 실행했는데, 다음과 같은 오류가 뜨네요 MLImageClassifierBuilder' was deprecated in macOS 10.15: This feature is no longer supported in this environment. You can complete this task in the Create ML app. deprecated된 거 보니까 이 API를 더이상 사용하지 못하는 건가요?? 해결방법이 있나요?
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
동영상에 나오는 문서 화일로 제공받을 수 있는지요?
안녕하세요? 훌륭한 자작드론 강좌 개설해 주셔서 감사드립니다. 소스와 도면은 제공안하신단 말씀을 듣기는 했는데... 동영상에 나오는 문서 필요한 부분 화면캡쳐하는 것도 일이네요... 혹, 화일로 제공 받을 수는 없는지요?
-
미해결React로 NodeBird SNS 만들기
네트워크 에러가 떠요
강의보고 따라하면서 sign_up_sucess떴었는데 mysql연동하려고 mysql깔고 mysql2깔고 npx sequelize db:create해주고 다시 회원가입해봤더니 사진처럼 떠요... 왜그러는거에요?...........
-
미해결RPG 게임 어플 만들기 [iOS 아이폰]
기기가 바뀔때마다 좌표는 어떤식으로 바꿔야할까요
좌표같은 경우는 autolayout적용하는 방식으로 코드를 다시 짜야할까요 ?
-
해결됨Vue.js 끝장내기 - 실무에 필요한 모든 것
css 자동완성 질문
클래스에 css 자동완성 기능이 안되는데 어떤 확장플러그인을 설치하신건가요? ㅎㅎ
-
미해결성공적인 코딩 인터뷰를 위한 코딩 인터뷰 정복하기 - 코딩 테스트
큐 강의 질문입니다.
큐 강의에서 큐를 LIFO라고 설명하시는데 큐는 FIFO 아닌가여..?
-
미해결웹 게임을 만들며 배우는 Vue
동영상 멈춤 현상이 발생하네요.
몇달전만해도 동일한 강좌영상 재상이 잘 되었는데.. 오늘따라 동영상 멈춤 현상이 발생하네요. 1-1. 강좌 소개와 맛보기 ( 01:33 )
-
미해결Vue.js 시작하기 - Age of Vue.js
get, set 은 어떻게 콘솔에서 호출되는 것인가요?
콘솔에서는 object명이나 object.property를 입력하거나, 값을 할당했을 뿐, 명시적으로 get, set을 호출하지는 않았는데, get, set이 호출되는 이유는 원래 define되어 있는 것에 override했기 때문인가요?
-
해결됨Vue.js 끝장내기 - 실무에 필요한 모든 것
Promise 리턴 관련 질문
this.$store.dispatch('LOGIN', userData); 이 부분에서 Promise가 리턴 되서 await 를 붙일 수 있는걸로 이해했는데요, action에서 혹시 data를 쓸일이 있을 수도 있으니 return data; 를 해준다고 하셨는데 그럼 Promise와 data 둘다 같이 리턴되는 것인가요?
-
미해결홍정모의 따라하며 배우는 C언어
안녕하세요 교수님 end의 이중포인터 부분이 잘 이해가 가지않습니다
본 강의 6분 30추 쯤 나오는 end가 strtol 함수 내에서 &end로 이중 포인터가 되는지 이해가 가지않습니다
-
미해결실습 UI 개발로 배워보는 순수 javascript 와 VueJS 개발
질문있습니다.
FormView.bindEvents 를 정의 하실때 this.inputEl.addEventListener('keyup' , e => this.onKeyup()) 하셨는데 on Keyup 메소드를 정의하지않고 this.inputEl.addEventListener('keyup' , e => { this.showResetBtn(this.inputEl.value.length); }); 위처럼 이벤트 리스너에서 바로 showResetBtn 호출해도 되는지 어떤 문제점이 있는지 궁금합니다!
-
미해결React로 NodeBird SNS 만들기
질문이여
궁금한게있는데요. 검색해도 명확한 답변을 못 찾아 질문드려요. 혹시 아시면 답변 주시면 감사하겠습니다. !! git 자체만으로도 호스팅이 가능하다고 들었는데요. 이 경우에는 프론트엔드인 리액트만 해당하는건가요? 노드JS 의 경우는 호스팅이 불가능한가요 ?? 서버사이드 쓰는이유가, 데이터를 저장하고 불러오는 이유에서 쓰이잖아요. 깃으로 간단히 사진을 업로드 할 수 있는 홈페이지를 호스팅을 해보고 싶은데, 서버사이드인 노드JS 가 없으면 불가능하겠죠?
-
자바 ORM 표준 JPA 프로그래밍 - 기본편
Proxy 관련 문의
삭제된 글입니다
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의 수준 관련 문의
그냥 아무생각없이 따라하면 될까요? 기본적인 지식 하나 없이 따라하는 중인데 이 강의가 말 그대로 기초입문자로서 배울 수 있는 강의 내용인지 궁금합니다 유튜브나 다른 서적으로 기본 공부하고 임해야하나요? 저만 이렇게 어렵고 무슨말인지 모르겠는지 열심히 타이핑을 하며 강의는 보고 있습니다.
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
print('%06.2f '%(3565652.12312312324))출력할때
정수가 총 6자리까지 출력하고 나머지는 0으로 나오게 하는건데 위처럼 문장을 만들었을때 356565 까지만 나와야하는데 실제로 출력해보면 3565652.12 이렇게 출력되는데 단순히 6자리만 나오게 출력하겠다라는 내용을 전달하기 위한건가요?