묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
동영상 강의 만드실 때 사용한 툴을 알려주실 수 있을까요?
강의를 수강하며 저도 자극을 받아, 제가 알고있는 지식을 가지고 강의를 만들어 보고 싶은데 사용하신 툴을 알 수 있을까요? 좋은 강의 감사드립니다. 윤정환 드림
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
transaction 제거 후 코드가 성공한 이유
안녕하세요, 선생님 초반에 transaction을 제거하고 성능을 높이는 방법을 보여주셨는데, transaction을 적용하기 이전의 코드와 1:52초 즈음에 알려주시는 코드의 차이가 궁금합니다. mongodb에서 직접 수정을 하냐 아니면 nodejs로 데이터를 가져와서 조작을 하냐의 차이 때문에 성공 실패가 갈리는거죠? 제 생각에는 아무래도 nodejs로 데이터를 가져온 상태에서 조작을 한다면, 조작해서 저장하는 시점엔 데이터베이스의 내용이 달라져서 덮어씌워지는 건데, 반대로 직접 데이터베이스에서 조작하면 항상 데이터베이스의 현재 내용물을 조작하니깐 일관성이 생기는거죠. 제가 잘 이해한게 맞을까요?
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
session.abortTransaction 명시
안녕하세요, 선생님. 공부하다가 궁금한게 생겨서 질문드립니다. transaction이 Atomicity를 유지할 수 있도록 abortTransaction을 쓰는 것 같은데, transaction의 에러 처리 부분에서 반드시 명시해줘야하는거죠? 혹시 {session}을 명시해준 mongoose api 중 하나라도 실패한다면 이전 것들이 자동으로 롤백되는 것이 아니라 abortTransaction을 명시해줘야 롤백되는건지 궁금합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그인 시도중 에러 발생
import produce from '../util/produce'; export const initialState = { followLoading: false, // 팔로우 시도중 followDone: false, followError: null, unfollowLoading: false, // 언팔로우 시도중 unfollowDone: false, unfollowError: null, logInLoading: false, // 로그인 시도중 logInDone: false, logInError: null, logOutLoading: false, // 로그아웃 시도중 logOutDone: false, logOutError: null, signUpLoading: false, // 회원가입 시도중 signUpDone: false, signUpError: null, changeNicknameLoading: false, // 닉네임 변경 시도중 changeNicknameDone: false, changeNicknameError: null, me: null, signUpData: {}, loginData: {}, }; export const LOG_IN_REQUEST = 'LOG_IN_REQUEST'; export const LOG_IN_SUCCESS = 'LOG_IN_SUCCESS'; export const LOG_IN_FAILURE = 'LOG_IN_FAILURE'; export const LOG_OUT_REQUEST = 'LOG_OUT_REQUEST'; export const LOG_OUT_SUCCESS = 'LOG_OUT_SUCCESS'; export const LOG_OUT_FAILURE = 'LOG_OUT_FAILURE'; export const SIGN_UP_REQUEST = 'SIGN_UP_REQUEST'; export const SIGN_UP_SUCCESS = 'SIGN_UP_SUCCESS'; export const SIGN_UP_FAILURE = 'SIGN_UP_FAILURE'; export const CHANGE_NICKNAME_REQUEST = 'CHANGE_NICKNAME_REQUEST'; export const CHANGE_NICKNAME_SUCCESS = 'CHANGE_NICKNAME_SUCCESS'; export const CHANGE_NICKNAME_FAILURE = 'CHANGE_NICKNAME_FAILURE'; export const FOLLOW_REQUEST = 'FOLLOW_REQUEST'; export const FOLLOW_SUCCESS = 'FOLLOW_SUCCESS'; export const FOLLOW_FAILURE = 'FOLLOW_FAILURE'; export const UNFOLLOW_REQUEST = 'UNFOLLOW_REQUEST'; export const UNFOLLOW_SUCCESS = 'UNFOLLOW_SUCCESS'; export const UNFOLLOW_FAILURE = 'UNFOLLOW_FAILURE'; export const ADD_POST_TO_ME = 'ADD_POST_TO_ME'; export const REMOVE_POST_OF_ME = 'REMOVE_POST_OF_ME'; // const dummyUser = (data) => ({ // ...data, // nickname: 'xodnd2378', // id: 1, // Posts: [{ id: 1 }], // Followings: [{ nickname: '강태웅' }, { nickname: 'ktw2378' }, { nickname: 'xodndxnxn' }], // Followers: [{ nickname: '강태웅' }, { nickname: 'ktw2378' }, { nickname: 'xodndxnxn' }], // }); export const loginRequestAction = (data) => ({ type: LOG_IN_REQUEST, data, }); export const logoutRequestAction = () => ({ type: LOG_OUT_REQUEST, }); const reducer = (state = initialState, action) => produce(state, (draft) => { switch (action.type) { case FOLLOW_REQUEST: draft.followLoading = true; draft.followError = null; draft.followDone = false; break; case FOLLOW_SUCCESS: draft.followLoading = false; draft.me.Followings.push({ id: action.data }); draft.followDone = true; break; case FOLLOW_FAILURE: draft.followLoading = false; draft.followError = action.error; break; case UNFOLLOW_REQUEST: draft.unfollowLoading = true; draft.unfollowError = null; draft.unfollowDone = false; break; case UNFOLLOW_SUCCESS: draft.unfollowLoading = false; draft.me.Followings = draft.me.Followings.filter((v) => v.id !== action.data); draft.unfollowDone = true; break; case UNFOLLOW_FAILURE: draft.unfollowLoading = false; draft.unfollowError = action.error; break; case LOG_IN_REQUEST: draft.logInLoading = true; draft.logInError = null; draft.logInDone = false; break; case LOG_IN_SUCCESS: draft.logInLoading = false; draft.me = action.data; draft.logInDone = true; break; case LOG_IN_FAILURE: draft.logInLoading = false; draft.logInError = action.error; break; case LOG_OUT_REQUEST: draft.logOutLoading = true; draft.logOutError = null; draft.logOutDone = false; break; case LOG_OUT_SUCCESS: draft.logOutLoading = false; draft.logOutDone = true; draft.me = null; break; case LOG_OUT_FAILURE: draft.logOutLoading = false; draft.logOutError = action.error; break; case SIGN_UP_REQUEST: draft.signUpLoading = true; draft.signUpError = null; draft.signUpDone = false; break; case SIGN_UP_SUCCESS: draft.signUpLoading = false; draft.signUpDone = true; break; case SIGN_UP_FAILURE: draft.signUpLoading = false; draft.signUpError = action.error; break; case CHANGE_NICKNAME_REQUEST: draft.changeNicknameLoading = true; draft.changeNicknameError = null; draft.changeNicknameDone = false; break; case CHANGE_NICKNAME_SUCCESS: draft.me.nickname = action.data.nickname; draft.changeNicknameLoading = false; draft.changeNicknameDone = true; break; case CHANGE_NICKNAME_FAILURE: draft.changeNicknameLoading = false; draft.changeNicknameError = action.error; break; case ADD_POST_TO_ME: draft.me.Posts.unshift({ id: action.data }); break; // return { // ...state, // me: { // ...state.me, // Posts: [{ id: action.data }, ...state.me.Posts], // }, // }; case REMOVE_POST_OF_ME: draft.me.Posts = draft.me.Posts.filter((v) => v.id !== action.data); break; // return { // ...state, // me: { // ...state.me, // Posts: state.me.Posts.filter((v) => v.id !== action.data), // }, // }; default: break; } }); export default reducer; 로그인을 시도할 경우, length나 find가 undefined 라고 나옵니다. 더미데이터를 사용하다가 reducers/user.js의 LOG_IN_SUCCESS를 더미데이터를 사용하지 않고action.data를 받아서 사용한 이후로 해당 오류가 계속해서 발생합니다. me.Posts나 me.Followings 등이 null이기 때문에 나오는 오류인 것 같은데 혹시 해결방법이 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
카테고리 연관관계
카테고리 끼리 parent child로 양방향으로 연관 관계를 맺었다고하고 category1 --category2 --category3 category4 만약 category1과 3 연관관계를 끊고 category4 -- category3과 같은 연관관계를 다시 맺고 싶다면 category1에 있는 child list에서 category3을 삭제하고 category3과 category4가 연관관계를 맺으면 될까요?
-
미해결팀 개발을 위한 Git, GitHub 입문
ppt 자료 부탁드립니다!
수업 ppt 자료 부탁드립니다. ecvheo@naver.com 입니다. 감사합니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
http://localhost:8080/products/2 접속시 Status -> pending 상태 해결 방법 문의 드립니다.
안녕하세요.강의를 따라 가다가 안되는 부분이 있습니다. node server.js 하여 작동은 하나 Postman과 URL http://localhost:8080/products/2 접속시 로딩화면만 반복되며(postman도 동일 합니다.) 아래 사진과 같이 network 창 접속시 Status가 panding 상태로 나옵니다. 혹시 해결 방법이 있는지 문의 드립니다. 소스코드를 비교해봐도 차이점은 없었습니다.. 추가로 DB Browser에 두번 post 요청을 하여 값을 삭제한적은 있는데 이 행위가 오류를 발생 시키는 걸까요???
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
K번째 수 문제 입출력 관련 질문입니다.
해답 소스코드를 보면 각 케이스의 출력 부분까지 for문 내에 들어가서 반복되는데요. 이 구조에서 입력을 수동으로 할 경우에는 첫번째 테스트 케이스 2줄을 입력한 후에 답이 출력되고, 다시 두번째 테스트 케이스 2줄을 입력한 후에 답이 출력되는 방식이 되지 않나요? 아래 사진처럼요. txt 파일을 import할 때는 출력 부분만 나오기 때문에 이런 차이가 발생한 것 같은데요. 수동으로 입력할 때에도 '테스트 케이스 한꺼번에 입력 -> 해답 한꺼번에 출력'해야 정답이라고 생각해서, 전역 변수로 빈 배열을 할당하고 출력 부분도 별도의 for문을 써서 구현했는데요. 이 경우 해답 코드보다는 효율성이 다소 떨어지는 것 같습니다. 실제 코딩 테스트 상황에서는 해답 소스코드 방식대로만 진행해도 괜찮은 것인지 궁금합니다. 다음은 제 코드입니다. 감사합니다! solution = [] t = int(input()) for i in range(t): n, s, e, k = map(int, input().split()) numbers = list(map(int, input().split())) solution.append(sorted(numbers[s-1:e])[k-1]) for i in range(t): print(f'#{i+1}', solution[i])
-
해결됨더 자바, 애플리케이션을 테스트하는 다양한 방법
검색을 해도 해결이 안되어 질문드립니다
먼저 에러코드입니다 java.lang.NoSuchMethodError: org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestInstances()Lorg/junit/jupiter/api/extension/TestInstances; 실행코드입니다 현재 인텔리제이를 쓰고있으며 스프링부트는 2.0.1입니다 강의를 들으며 학습을 할때는 최신버젼을 썻는데 실무에 적용하다 에러가 나서 질문드립니다 검색을 하여보니 부트 2.2.1전에는 junit4를 의존한다길레 maven에서 4를 exclude하고 5를 가져왔습니다 버젼은 junit5.7.2버젼입니다 험난한 과정을 거쳐 의존성주입에는 성공하였고 현재 프로젝트에서 jupiter피일이 잘 열리기도합니다 하지만 테스트에 실패합니다 스택오버플로우나 검색을하여도 junit의 버젼을 최신버젼으로 두라는게 답변의 전부이더군요 혹시나 하는마음에 질문드립니다...ㅠ
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
실전 퍼블리싱 03(더블 보더 레디우스 애니메이션)
실전 퍼블리싱 03(더블 보더 레디우스 애니메이션)을 진행하고 있습니다. 마우스를 올릴 때 원 색상이 변하는 부분에서 span(원)을 둘러싼 div 박스에 마우스를 대어야 색상이 변하고 span(원)에 마우스를 갖다대면 색상이 변하지 않습니다.. 어디가 문제인지 알 수 있을까요. <body> <div class="box"> <span></span> <span></span> <span></span> </div> body { background-color: #333; display: flex; justify-content: center; align-items: center; height: 100vh; } .box { position: relative; border: 2px solid red; width: 400px; height: 400px; } .box span { position: absolute; border: 1px solid white; /* inherit : 부모요소와 자식요소 크기를 동일하게(100%) */ width: inherit; height: inherit; /* border-radius를 '/'로 중첩해서 사용하면 다양한 도형을 나타낼 수 있다. */ border-radius: 40% 60% 65% 35% / 40% 45% 55% 60%; /* 마우스로 클릭시 효과가 */ transition: 0.5s; animation: ani 7s linear infinite; } .box:hover span { background-color: crimson; } .box span:nth-child(1) { } .box span:nth-child(2) { /* animation-direction : reverse = 역방향 */ animation-direction: reverse; animation-delay: 0.5s; } .box span:nth-child(3) { animation-delay: 0.8s; } @keyframes ani { 0% { transform: rotate(0); } 100% { transform: rotate(360deg); } } div { position: absolute; }
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
df_cafe["상권업종중분류명"].countplot() 오류
seaborn을 사용하지 않고 df_cafe["상권업종중분류명"].countplot()을 사용하면 'DataFrame' object has no attribute 'countplot' 라고 오류가 발생합니다ㅠㅠ
-
미해결정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
안녕하세요 강사님
블로그에 개인적으로 공부한 내용을 정리하려고 하는데요 해당 내용을 전부 작성하지는 않고 문제 풀이 방법 및 생각을 정리해서 올리려고 하는데 출처를 밝히고 올려도 될까요?
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
df_cafe["브랜드명"].fillna("이디야") 오류
해당 코드를 통해 이디야를 브랜드명으로 지정하면 Nan 값이 그대로 있는데 어떻게 해야 하나요?
-
미해결[기초-응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant)
vagrantfile for using VMware Workstation
VMware workstation 을 사용해서 수업을 하고 있습니다. Virtual box의 경우 수업내용으로 진행을 잘 하고 있는데, VMware로 수업을 테스트 하고 싶어서 아래와 같이 vagrantfile을 수정해서 사용을 하니 에러가 나네요. 여기저기 찾아보았지만, forwared_port부분에서 막힙니다. 코드 내용은 ======= vagrantfile======== Vagrant.configure("2") do |config| config.vm.define:"ansible-server" do |cfg| cfg.vm.box = "centos/7" cfg.vm.provider:vmware do |vmware_desktop| vmware_desktop.name="Ansible-Server(Udemy-bloter)" end cfg.vm.host_name="ansible-server" cfg.vm.synced_folder ".", "/vagrant", disabled: true cfg.vm.network "public_network", ip: "192.168.1.174" cfg.vm.network "forwarded_port", guest: 22, host: 192174, auto_correct: false, id: "ssh" cfg.vm.provision "shell", path: "bootstrap.sh" end end ============== 로하고 에러는 ================ Bringing machine 'ansible-server' up with 'vmware_desktop' provider... There are errors in the configuration of this machine. Please fix the following errors and try again: vm: * Ports to forward must be 1 to 65535 ================== 포트를 22번으로 하거나 기타 다른 번호를 해도 같은 에러가 나와 진행을 하기가 어렵습니다. 특별히 어려운 코드도 아닌데 이해가 안되네요. 좀 봐주시면 고맙겠습니다. 그리고 박스를 이용시 자동으로 버추얼 머신을 불러오지만, vmware의 경우 다른 디스크나 디렉토리를 사용시 vm을 불러오지 못해서 scan후 사용을 해야합니다. 설치디렉토리 지정을 하는 코드를 찾아보았지만 특별히 없는 것 같아서요. 혹시 아시는 부분 있으면 부탁드립니다. 감사합니다.
-
미해결처음 배우는 리액트 네이티브
Input 에서 value의 역할
선생님 react native 홈페이지에는 value의 역할이 "The value to show for the text input." 라고 나오는데 사진에서 value={newTask} 부분을 지우고 앱을 돌려봐도 결과가 같은데 도대체 value는 무엇을 하는 아이인가요?!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
자바변수 초기화 오류에 대해 의견 드려요~
안녕하세요, 선생님! 강의 잘 듣고 있습니다. 초기화 관련 말씀하셨는데 제 생각에는 자바변수는 기본적으로 초기화를 해야 하는데 멘토링의 경우 동적(런타임)이 되어야 할당이 시작 되므로 컴파일시 초기화라고 인정되지 않았고, 이 문제의 경우는 정적으로0 가 이미 할당이 되어 컴파일시 초기화로 인정이 된것 같습니다.
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
502 bad Gateway
안녕하세요 강사님 . 54강 마지막 부분에서 ip 주소를 입력했을때 다음과 같이 나와서 연락드립니다. django_container_gunicorn 도 자동으로 종료가 됩니다 ..ㅠㅠ
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
.copy()
안녕하세요 강의 너무 잘 듣고 있습니다! 사용하지 않은 컬럼 제거하는 부분에서 질문이 있는데요 df = df[columns].copy() df의 데이터을 변경해서 저장하는 것인데 왜 .copy()를 쓰는지 궁금합니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
실행하면 오류가 나네요.
안녕하세요. 코드를 빌드하려고 실행하면 오류가 나네요. 윈도우의 기본 콘솔인 cmd 로 `tsc` 를 실행하니까 컴파일은 돼서, `npm run start` 로 실행을 하니까 이렇게 되네요. 다운로드 한 `package.json` 파일에서, `express` 랑 `@types/express` 추가했고, { "scripts": { "build": "tsc", "start:dev": "tsc-watch --onSuccess \"node dist/app.js\"", "prestart": "npm run build", "start": "node dist/app.js" }, "devDependencies": { "@types/express": "^4.17.13", "@types/node": "^15.3.0", "prettier": "^2.2.1", "tsc": "^2.0.3", "tsc-watch": "^4.4.0", "typescript": "^4.3.5" }, "dependencies": { "express": "^4.17.1" } } app.ts 파일을 import {default as express, Express, Request, Response} from 'express' const app: Express = express() const port: number = 8000 app.get('/', (req: Request, res: Response) => { console.log(req) res.send('Hello World!') }) app.listen(port, () => { console.log(`Example app at ${port}`) }) 이렇게 코딩해서 실행했어요. 구글링을 해봤지만 딱히 해결책을 얻지 못해 질문 남깁니다. 답변 부탁드립니다.
-
미해결홍정모의 따라하며 배우는 C언어
교수님! illegal digit '8' for base '8'라고 에러가 발생합니다.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int won = 0; int dollar = 0; printf("Input won\n"); scanf("%d", &won); dollar = won * 0,00089; printf("Dollar = %d\n", dollar); return 0; } 교수님 안녕하세요. 위와 같이 하고 디버깅을 하면 error C2041: illegal digit '8' for base '8' 이라고 에러가 발생합니다. 물론 콘솔창도 뜨지 않습니다. 도움을 부탁드립니다 감사합니다.