묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
20x 상태코드에 대한 질문입니다.
이런 수업이 다른 곳에 없다보니 질문이 많게 되네요 ;; 저같은 경우 게시글 추가 API, 회원가입API 같은 경우 post method로 클라이언트에서 서버로 요청하고 서버는 그 요청에 성공적으로 응답할 때 200 상태코드와 함께 post_id나 user_id를 리턴하도록 하였습니다. 만약 헤더내의 location을 이용한다면 user_id, post_id까지 사용하지 않게 될테니 204로 리턴해도 되겠네요. 그런데 201 스펙처럼 클라에서 요청한 데이터값을 서버가 다시 리턴하는 이유가 있을까요? 왜냐하면 게시글추가라던지, 회원가입이라던지 어차피 클라이언트에서 보낸 데이터라 클라이언트에서 쿠키에 저장하면 될 것 같거든요. 불필요하게 서버에서 클라이언트에게 '클라이언트가 보낸 데이터'를 보낼 필요가 있는가에 대한 의문이 들어서 질문하게 되었습니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
질문있습니다.
질문1. zip을 만드는것 까지는 성공했는데 그 뒤 sudo unzip awscliv2.zip 명령어를 치면 저런 오류가 납니다. sudo를 빼거나 낮은 권한으로 해도 저 오류가 계속뜨네요.. 저 오류에 대해 구글링을 해서 여러가지 시도를 했지만 해결이 안되네요 어디서 잘못했을까요... 질문 2. 탄력적 ip를 받는것 까지 했습니다. 프론트가 3.35.154.166 백엔드가 52.79.107.170 그런데 도메인을 구입하지 않고 배포하려는 경우 app.js의 if (process.env.NODE_ENV === 'production') { app.use(morgan('combined')); app.use(hpp()); app.use(helmet({ contentSecurityPolicy: false })); app.use(cors({ origin: 'http://nodebird.com', credentials: true, })); } else { app.use(morgan('dev')); app.use(cors({ origin: true, credentials: true, })); } app.use(session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, domain: process.env.NODE_ENV === 'production' && '.nodebird.com' }, })); 이부분과 config.js의 export const backUrl = process.env.NODE_ENV === 'production' ? 'http://api.nodebird.com' : 'http://localhost:3065'; 이부분을 바꿔주어야 할것 같은데 어떠한 형태로 바꿔주어야 하나요? 또한 위의 코드말고도 고쳐야 할 곳이 있는지 궁금합니다?
-
해결됨초보자를 위한 HTML 기초
address 요소 설명 중 궁금한 것이 있어서 질문드립니다.
- 스펙 문서를 보면 중에 https://html.spec.whatwg.org/multipage/sections.html#the-address-elementaddress의 요소에 대한 관한 설명을 보면 연락처 정보를 나타낸다고 나오는데 , 그 중에서 연락처 정보(contact information) 외 이외의 다른 정보를 담으면 안된다고 해서요.아래는 스펙 문서 내용입니다. ------------------------------------------------------------------------------------------------------------------- The address element must not be used to represent arbitrary addresses (e.g. postal addresses), unless those addresses are in fact the relevant contact information. (The p element is the appropriate element for marking up postal addresses in general.) The address element must not contain information other than contact information. -------------------------------------------------------------------------------------------------------------------그런데 강의에서는 발행자 정보(작성자명, 발행일자 등)를 담아낼수 있다고 해서 궁금해서 질문합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
Cannot read property 'push' of undefined
자꾸 Cannot read property 'push' of undefined 에러가 발생하는데, John Ahn님 깃허브에 들어가봐도 원인을 잘못찾겠어서 ㅠㅠ 질문남깁니다.
-
미해결웹 게임을 만들며 배우는 React에 TypeScript 적용하기
lodash 사용 유무에 대한 고견을 듣고 싶습니다.
우선 해당 강의와 연관성 없는 질문 죄송합니다. 현업에서 lodash 라이브러리를 사용하는 것에 대해 어떻게 생각하시는지 궁금합니다. 선생님께서는 최신 JS 문법들을 활용하고 조합하시는 것 같아서 궁금합니다.
-
미해결함수형 프로그래밍과 JavaScript ES6+
lodash 사용 유무에 대한 질문.
선생님께서는 현업에서 lodash 라이브러리를 사용하는 것에 대해 어떻게 생각하는지 궁금합니다. 필요한 함수들을 전부 직접 만들어 사용하시는 편이신가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
put/patch에 대한 질문입니다
회원정보수정할 때 "patch를 사용할까?"라는 궁금증이 생겨서 질문하게 되었습니다. 왜냐하면 회원정보 수정시 patch개념을 이용하여 수정하게 되면 서버 로직에서 유저 정보 데이터 유무에 따라 분기하여 db에 update하게 되어 중복되는 코드가 많아진다고 생각했습니다. // 회원정보수정 API에서 nickname, email 바디값을 받는다고 했을 때 // 아래 코드와 같이 구현해야한다고 생각했습니다. if(nickname){ update user set nickname = 'inflearn' where id = 1 } else if (email){ update user set email = 'inflearn@gmail.com' where id = 1 } // 왜냐하면 만약에 회원정보수정 API에서 클라이언트에서 nickname은 보내고 email은 안보내는 상황에 // if문같은 분기가 없으면 아래 코드와 같이 email에 null값이 들어갈 것으로 예상되었기 때문입니다. update user set nickname = 'inflearn', email = null where id =1 그래서 저같은 경우는 회원정보수정API는 put메서드를 사용하고 유저정보를 다 보내도록 했습니다. 그리고 회원정보수정API에 모든 회원정보 데이터를 보내도록 하고 아래 코드와 같이 회원정보수정API 로직이 시작하는 부분에 모든 예외상황을 생각해서 바디값이 왔는지 유무를 체크하여 예외처리하는 식으로 구현했습니다. if (!profile_nickname) return res.status(400).json({ code: 'invalid_profile_nickname' }) 그러다보니 클라이언트에서는 회원정보 수정데이터가 10개중에 하나만 바뀌어도 모든 데이터를 회원정보수정API에 보내는 비효율적인 문제가 생기더라고요. 저도 제가 구현한 방식이 비효율적인 걸 알고 있는데 어떻게 구현하는게 맞는지 생각이 나지않아 질문하게 되었습니다. 어떻게 하면 patch를 잘 이용할 수 있을까요?현재 저 같은 경우는 수정과 관련된 API이면 put만 사용하고 예외적으로 patch를 사용하는 경우는 비밀번호 변경일 때만 사용했는데요. 왜냐하면 user테이블의 비밀번호 부분만 변경을 하는거니까 patch를 사용하는게 맞다고 생각했습니다.
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
ㅜㅜdiv가 왜 0.5초만 보여지고 다시 감춰질ㄲㅏ요
ㅜㅜdiv가 왜 0.5초만 보여지고 다시 감춰질ㄲㅏ요
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
이상한 문구가 나오네요
print('Hello Python Basic!') 이렇게 입력했는데 하단에는 Python [Finished in 0.316s]이렇게 나와요 ㅠ
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
3xx-리다이렉션 강의 중 질문 있습니다.
안녕하세요:) 결제 API에서 클라이언트와 서버 통신 예외처리에 대해 질문이 있습니다. 6분 34초경에 "클라이언트에서 유저가 페이지 리로드할 경우가 있어서 동일 주문이 서버에 요청이 될 수 있기 때문에 서버에서도 예외처리해놔야한다"고 하셨습니다. 제가 영한님의 말씀을 듣고 처음 생각난 방식은 클라이언트에서 주문번호를 난수로 만들어준 다음 쿠키에 저장하여서 동일한 주문번호를 서버에 요청했을 때 서버에서 거절하면 된다고 생각했은데, 클라이언트에서 주문번호를 자리수가 짧은 난수로 만들었을 때 중복되는 값이 발생할 것으로 생각이 드네요. 그래서 이 방법은 또 다른 이슈를 발생시킬 것 같아 좋은 방법은 아닌 것 같고... 2 번째로는 처음 생각한 방법을 응용한건데 난수를 유저테이블의 index와 구분자 그리고 현재 유닉스시간까지 숫자를 합쳐서 만들면 중복될 가능성이 낮아질 것 같다는 생각을 했습니다. 예) 12/1609305240 혹시 더 나은 방법이 있을까요? 8분30초 경에 말씀해주시는 주문 중복을 피하는 방법에 대해서는 이해했습니다!
-
미해결스프링 기반 REST API 개발
HATEOAS 질문
강의를 듣다보니까 과거에 제가 네이버 댓글 크롤링을 한 기억이 생각 났는데요. 그 곳에서 현재 댓글 목록을 보는 API 응답으로 다음 댓글 페이지, 이전 댓글 페이지 URL이 JSON 요소로 담겨서 왔는데 이런 것이 HATEOAS를 지키는 예라고 이해하면 되나요?
-
해결됨진짜 현업에서 쓰이는 직장인의 실무 엑셀 - 데이터 가공부터 분석까지
개인 정보 수준 에러에 대해서
강의 내용 중에 body를 함수로 변환하고표2에서 body 함수를 불러올 때,개인 정보 수준에 대해서 묻고, 뭘 누르든 간에 에러가 납니다.(office365 최신 엑셀 기준, 옵션은 공공, 프라이빗 같은 선택이 가능) 개인 정보 강화 측면에서 <body> 함수를 불러올 때,입력해놓은 인증키 코드의 일부분이 삭제되거나 해서제대로 불러오지 못한 현상이 아닌가 싶습니다. (추측) 이래저래 검색해보니 꽤 유명한 에러인 듯 합니다.https://docs.microsoft.com/ko-kr/power-query/dataprivacyfirewall(에러 상세 내용) 강의에는 문제가 없으나내용 참고하셔서 보충해주셨으면 좋겠습니다. 감사합니다!
-
미해결Redux vs MobX (둘 다 배우자!)
redux 관련 문의 드립니다.
redux vs mobx 강의를 듣던 중 index2.js를 다음과 같이 작성하고 명령어 node index2를 실행하였더니 Cannot access 'store' before initialization, 라는 에러가 나와서, store 선언부 즉, const store = createStore~~~ 부분을 initialState 바로 밑으로 옮기면 다시 Cannot access 'enhancer' before initialization, 라는 에러가 뜨고 이로 인해서 enhancer를 다시 최상단으로 올리면 Cannot access 'firstMiddleware' before initialization라는 에러가, firstMiddleware를 최상단으로 올리면 처음의 Cannot access 'store' before initialization 가 뜨는 악순환이 반복되고 있는데, 도대체 무엇이 잘 못된것 일까요?ㅠㅠ 아무리 강의를 다시 봐도 제로초님과 같은 순서로 작성한 것 같은데요.. const { createStore, applyMiddleware } = require("redux"); const reducer = require("./reducers"); const { logIn, logOut } = require("./actions/user"); const { addPost } = require("./actions/post"); const initialState = { user: { isLoggingIn : true, data: null, }, posts: [], }; const firstMiddleware = (store) = (dispatch) = (action) => { console.log("액션로깅", action); dispatch(action); }; const thunkMiddleware = (store) = (dispatch) = (action) => { if (typeof action === "function"){ // 비동기 (비동기인 경우 액션을 함수로 넣겠다!) return action(store.dispatch, store.getState); } return dispatch(action); }; const enhancer = applyMiddleware( firstMiddleware, thunkMiddleware, ); const store = createStore(reducer, initialState, enhancer); console.log("1st", store.getState()); // 하단의 코드들은 react component에서 작성 및 실행되어야 하는 코드. store.dispatch(logIn({ id: 1, name: "eunsonny", admin: true })); console.log("2nd", store.getState()); // store.dispatch(addPost({ userId: 1, id: 1, content: "첫번째 안녕하세요."})); // console.log("3rd", store.getState()); // store.dispatch(addPost({ userId: 1, id: 2, content: "두번째 안녕하세요."})); // console.log("4th", store.getState()); // store.dispatch(logOut()); // console.log("5th", store.getState());
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 JPA 동적 쿼리 관련 질문
안녕하세요 영한님 늘 좋은 강의를 만들어 주셔서 감사합니다. 아직 JPA에 대한 기본적인 이해가 부족한 상황인데 궁금한 게 있어서 살짝 바보같은 질문드립니다. 현재 JPA의 동적 쿼리를 해결하려고 많은 엔지니어 분들이 고민하고 있는 것으로 알고 있는데요. 프로젝트를 시작할때 동적쿼리가 필요한 로직만 Mybatis를 적용할 수 있을거나 그런 사례가 있을 까요?
-
미해결[라즈베리파이] IoT 딥러닝 Computer Vision 실전 프로젝트
섹션3-라즈베리파이에서 직접 쓴 손글씨 인식 질문
안녕하세요. 먼저 저와 같은 문제가 있는지 아래의 질문과 답을 찾아보았습니다. 여러명이 질문한 것이 있어서, 그대로 다 해보았으나 해결되지 않아 질문드립니다. -언어 영어 설정, h5 파일 같은 폴더, 노마드선생님이 제공한 소스코드 그대로 사용, 강의 내용대로 그대로 설치, 라즈베리파이4 사용 -폴더 이름만 class로 변경 섹션3의 마지막 강의(10분29초)에서, 아래와 같은 에러가 뜹니다. ㅠㅠ (cv) pi@raspberrypi:~/class $ python3 RBP_DL15_MNIST_PiCamera.py Traceback (most recent call last): File "RBP_DL15_MNIST_PiCamera.py", line 8, in <module> model = tf.keras.models.load_model('digits_model.h5') File "/home/pi/.virtualenvs/cv/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/save.py", line 146, in load_model return hdf5_format.load_model_from_hdf5(filepath, custom_objects, compile) File "/home/pi/.virtualenvs/cv/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/hdf5_format.py", line 166, in load_model_from_hdf5 model_config = json.loads(model_config.decode('utf-8')) AttributeError: 'str' object has no attribute 'decode'
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
Exe가 없습니다
7분8초쯤에 나오는 exe파일이 없는데..없어도 되는건가요.. 선생님 파일탐색기에 나오는 나머지 파일들은 다 나오는데 exe는 없어요ㅜㅜ 그리고 저 파일 들어갈때 bin파일 들어가고 debud 들어가고 netcoreapp3.1이라는 파일이 하나 더 잌ㅅ어요
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
You have reached your pull rate limit 확인부탁드립니다.
안녕하세요. 깃허브 연동해서 travis.ci 시작하는 화면에서 이렇게 에러가 나는데 확인 부탁드려요!!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
안녕하세요.
안녕하세요.강사님 좋은 강의 감사드립니다. HTTP - API - 컬렉션 post기반등록은 어디에서 어떻게 사용이 되는건지알수있을까요?? 그리고 컬렉션이 서버가 관리하는 리소스 디렉토리라고 하셨는데 컬렉션이 /members가 어떻게 리소스 디렉토리가 되는지도 알고싶습니다! 감사합니다.
-
미해결함수형 프로그래밍과 JavaScript ES6+
사용하시는 개발 툴이 뭔지 궁금합니다....
되게 편리한거 같아서 여쭈어 봅니다...
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
선생님은 어떻게 회원가입이 가능했던거죠??
지난번 영상에서 마지막 포스트맨 부분이 안돼서 헤매다가 이번 영상 첫번쨰에서 고쳐주신 오류 보고 else문 추가 후 데이터 입력이 가능 했는데 선생님은 어떻게 성공하신거죠?? 영상에 시간차가 있었던걸까요??