묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
basic, bearer 토큰 관련 문의
안녕하세요basic, bearer 토큰을 이미 범용적으로 널리 사용된다고 하셨는데 궁금한점이로그인할 때 id/pw 를 header 에 넣어서 보낸다고 하셨는데패킷을 탈취하면 너무 취약할 것 같아서요. 제가 웹개발자가 아니라 실무에선 실제로 어떻게 쓰는지 알고싶어서 질문남깁니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
debug 강의 질문입니다.
강의 내용처럼 그대로 따라 했을 때 다음과 같이 됩니다.1. 아래 사진 처럼 breakpoint 설정 시 빨간색이 아니라 빈원이 나옵니다. 실제 실행하였을 경우 break가 걸리긴 하는데 ts파일이 아닌 compile된 js 파일로 넘어갑니다. 인터넷 찾아보고 sourceMap 관련된거 같아서 tsconfig 파일에 sourceMap: true 넣고 launch.json에 sourceMaps: true 넣어봤는데도 변함이 없네요 어떤 부분을 확인해봐야할까요?
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
고양이 소리가 귀엽네요 !!
열심히 듣겠습니다 !!!!!
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
9분 30초 || 'all' 영상 누락
혹시나 기본 '/' 경로에서 펭귄눌렀다 popstate 로 뒤로갔을 경우'clicked' css가 먹지않는 현상, 강의 내용에서 저부분이 영상 짤려서 놓치기 쉬울꺼 같습니다. 저도 강의보면서 하다가 || 'all' 하는 부분 제대로 보기힘들어서못 적었다가 나중에 문제생겨서 로직 보다가 발견했습니다,
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
영상보고 직접 api를 구현해봤는데 자꾸 프로젝트를 변경하면 서버가 꺼지;는데 방법이 있을까요
코드 관련 질문은 아래와 같이 '코드블럭' 기능을 이용해주세요!+ 오류 메세지도 함께 올려주시면 좋아요 🙂console.log('hello'); 이런식으로 구축했는데 프로젝트만 바꾸면 서버가 꺼져서요..
-
미해결[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
08-06
docker-compose build가 안되요!ㅠㅠㅠㅠㅠ도커라 도커컴포즈 삭제하고 다시 까는거는 5시간동안 했는데...챗gpt가 하라는데로 5시간동안 했는데 해결이 안되네요!Traceback (most recent call last):File "urllib3/connectionpool.py", line 677, in urlopenFile "urllib3/connectionpool.py", line 426, in makerequestFile "<string>", line 3, in raise_fromFile "urllib3/connectionpool.py", line 421, in makerequestFile "http/client.py", line 1369, in getresponseFile "http/client.py", line 310, in beginFile "http/client.py", line 271, in readstatusFile "socket.py", line 589, in readintoConnectionResetError: [Errno 104] Connection reset by peerDuring handling of the above exception, another exception occurred:Traceback (most recent call last):File "requests/adapters.py", line 449, in sendFile "urllib3/connectionpool.py", line 727, in urlopenFile "urllib3/util/retry.py", line 410, in incrementFile "urllib3/packages/six.py", line 734, in reraiseFile "urllib3/connectionpool.py", line 677, in urlopenFile "urllib3/connectionpool.py", line 426, in makerequestFile "<string>", line 3, in raise_fromFile "urllib3/connectionpool.py", line 421, in makerequestFile "http/client.py", line 1369, in getresponseFile "http/client.py", line 310, in beginFile "http/client.py", line 271, in readstatusFile "socket.py", line 589, in readintourllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))During handling of the above exception, another exception occurred:Traceback (most recent call last):File "docker/api/client.py", line 214, in retrieveserver_versionFile "docker/api/daemon.py", line 181, in versionFile "docker/utils/decorators.py", line 46, in innerFile "docker/api/client.py", line 237, in _getFile "requests/sessions.py", line 543, in getFile "requests/sessions.py", line 530, in requestFile "requests/sessions.py", line 643, in sendFile "requests/adapters.py", line 498, in sendrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))During handling of the above exception, another exception occurred:Traceback (most recent call last):File "docker-compose", line 3, in <module>File "compose/cli/main.py", line 81, in mainFile "compose/cli/main.py", line 200, in perform_commandFile "compose/cli/command.py", line 70, in project_from_optionsFile "compose/cli/command.py", line 153, in get_projectFile "compose/cli/docker_client.py", line 43, in get_clientFile "compose/cli/docker_client.py", line 170, in docker_clientFile "docker/api/client.py", line 197, in initFile "docker/api/client.py", line 222, in retrieveserver_versiondocker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))[119730] Failed to execute script docker-compose 챗 gpt에 물어보고 똑같이 해봐도 해결이 안됩니다. ㅜㅜㅜㅜㅜ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
구조랑 패턴 관련해서 질문
현재 실무에서 ORM(Prisma)을 채택해서 백엔드를 만들고 있어요.ORM으로 할 수록 Repository패턴과 조합이 좋지않다고 생각이 들고 실제 팀리더도 Repository패턴을 같이 쓰는거에 부정적이고 실제로 사용하지 않아요. 그렇다고 service 하나에 몰아 넣으니 저는 코드 읽기가 점점 힘들어지는거 같아요.대체할만한걸 검색해보니 CQRS패턴이나 Query Object가 나오는데 아니면 서비스파일을 여러개 두거나... 강사님 같은 경우에는 실무에서 어떻게 대처하시는지 궁금합니다.
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
SqlConnection관련 질문
SqlConnection이 deprecated 되었다고 뜨는데 이 부분은 상관없나요?아니면 제가 잘못...선택을 한건지...ㅠqlConnection이 deprecated 되었다고 뜨는데 이 부분은 상관없나요? 이후 강의를 들으면서 따라가는데 차질이 생기는지 궁금합니다.
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
경로 질문드립니다
코드 관련 질문은 아래와 같이 '코드블럭' 기능을 이용해주세요!+ 오류 메세지도 함께 올려주시면 좋아요 🙂npm error code ENOENT npm error syscall open npm error path C:\Users\사용자이름\Desktop\animal_album_Main\animal_album-3\package.json npm error errno -4058 npm error enoent ENOENT: no such file or directory, open 'C:\Users\사용자이름\Desktop\animal_album_Main\animal_album-3\package.json' npm error enoent This is related to npm not being able to find a file. npm error enoent npm error A complete log of this run can be found in: C:\Users\사용자이름\AppData\Local\npm-cache\_logs\2024-12-06T08_26_22_967Z-debug-0.log 안녕하세요 질문드립니다몇일동안 npm init 떄문에 질문드립니다 npm 설치시 해당 프로젝트 파일이 c드라이브 안에만 있어야 되는건가요 ?1번 바탕화면에 프로젝트가 있을떄도 실행이 안됩니다2번 c드라이브 -> User -> (사용자이름) -> github-> 해당 폴더 -> 프로젝트 폴더3번 c드라이브 -> 프로젝트 폴더 3번일때만 되고 1,2번일때는 npm init 설치가 안되는데2번도 가능하게 할려면 어떻게 해야하는지 궁금합니다
-
미해결원고 생성기 프로그램 개발 강의 (Chatgpt api)
오류가 자꾸 발생하네요
안녕하세요 1강 수강 중에 이전 글에 올리신 분들과 같은 오류가 발생하여기존 openai를 삭제한 후 openai==0.28.1 버전을 설치까지 했는데도 오류가 발생하네요..확인부탁드립니다.위에 import 와 api_key값은 빼고 캡쳐한 화면 첨부드립니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
git에서 소스받고 실습중인데
패스워드를 안넣어도 401에러가 아닌 200으로 올바른 API호출이 됩니다.SecurityConfig 없애고 하면 302로 login 페이지로 가고.. 혹시 어떤부분이 다를까요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
코드팩토리님, 강의 질문 있습니다.
패스트 캠퍼스에서 올린 강의에 대한 질문을 어디에 올려할지 모르겠어서 여기에 남깁니다.아키텍처 대통합은 언제 올라나요?
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
regionList 에 region별 cities가 정상 로딩이 안됩니다.
영상 7:53 부분에 코드를 완성하면, regionList에 있는 region 클릭 시, 영상처럼 region 별로 cities가 나와야 하지만, 아래 에러가 생겨서 정상적으로 로딩이 안됩니다.혹시 어떤 문제 인지 알려주시면, 너무 고맙습니다. 감사합니다! app.js 코드는 아래와 같이 입력했습니다.import Header from "./components/Header.js"; import RegionList from "./components/RegionList.js"; import CityList from "./components/CityList.js"; import CityDetail from "./components/CityDetail.js"; import { request } from "./components/api.js"; export default function App($app) { const getSortBy = () => { if (window.location.search) { return window.location.search.split("sort=")[1].split("&")[0]; } return "total"; }; const getSearchWord = () => { if (window.location.search && window.location.search.includes("search=")) { return window.location.search.split("search=")[1]; } return ""; }; this.state = { startIdx: 0, sortBy: getSortBy(), searchWord: getSearchWord(), region: "", cities: "", }; const header = new Header({ $app, initialState: { sortBy: this.state.sortBy, searchWord: this.state.searchWord, }, handleSortChange: async (sortBy) => { const pageUrl = `/${this.state.region}?sort=${sortBy}`; history.pushState( null, null, this.state.searchWord ? pageUrl + `&search=${this.state.searchWord}` : pageUrl ); const cities = await request( 0, this.state.region, sortBy, this.state.searchWord ); this.setState({ ...this.state, startIdx: 0, sortBy: sortBy, cities: cities, }); }, handleSearch: async (searchWord) => { history.pushState( null, null, `/${this.state.region}?sort=${this.state.sortBy}&search=${searchWord}` ); const cities = await request( 0, this.state.region, this.state.sortBy, searchWord ); this.setState({ ...this.state, startIdx: 0, searchWord: searchWord, cities: cities, }); }, }); const regionList = new RegionList({ $app, initialState: this.state.region, handleRegion: async (region) => { history.pushState(null, null, `/${region}?sort=total`); const cities = await request(0, region, "total"); this.setState({ ...this.state, startIdx: 0, sortBy: "total", region: region, searchWord: "", cities: cities, }); }, }); const cityList = new CityList({ $app, initialState: this.state.cities, handleLoadMore: async () => { const newStartIdx = this.state.startIdx + 40; const newCities = await request( newStartIdx, this.state.region, this.state.sortBy, this.state.searchWord ); this.setState({ ...this.state, startIdx: newStartIdx, cities: { cities: [...this.state.cities.cities, ...newCities.cities], isEnd: newCities.isEnd, }, }); }, }); const cityDetail = new CityDetail(); this.setState = (newState) => { this.state = newState; cityList.setState(this.state.cities); header.setState({ sortBy: this.state.sortBy, searchWord: this.state.searchWord, }); regionList.setState(this.state.region); }; const init = async () => { const cities = await request( this.state.startIdx, this.state.region, this.state.sortBy, this.state.searchWord ); console.log(cities); this.setState({ ...this.state, cities: cities, }); }; init(); } regionList.js 코드는 아래와 같이 입력했습니다.export default function RegionList({ $app, initialState, handleRegion }) { this.state = initialState; this.$target = document.createElement("div"); this.$target.className = "region-list"; this.handleRegion = handleRegion; $app.appendChild(this.$target); this.template = () => { const regionList = [ "🚀 All", "🌏 Asia", "🕌 Middle-East", "🇪🇺 Europe", "💃 Latin-America", "🐘 Africa", "🏈 North-America", "🏄 Oceania", ]; let temp = ``; regionList.forEach((elm) => { let regionId = elm.split(" ")[1]; temp += `<div id=${regionId}>${elm}</div>`; }); return temp; }; this.render = () => { this.$target.innerHTML = this.template(); if (this.state) { let $currentRegion = document.getElementById(this.state); $currentRegion && ($currentRegion.className = "clicked"); } else { document.getElementById("All").className = "clicked"; } const $regionList = this.$target.querySelectorAll("div"); $regionList.forEach((elm) => { elm.addEventListener("click", () => { this.handleRegion(elm.id); }); }); }; this.setState = (newState) => { this.state = newState; this.render(); }; this.render(); }
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
JWT refresh 에대해 질문이 있습니다.
jwt refresh 토큰은 access 토큰이 만료되었을때 재발급을 위한 토큰이라고 알고있는데요보통 refresh 는 시간을 길게주고 access 토큰은 짧게 줘서 관리하는것으로 알고있습니다.근데 강의를 다듣고 정리하는데 refresh에 대해 궁금증이 생겼습니다. 강의에서는 따로 DB에 저장안한거 같은데 DB에 저장하지않고 관리하는거라면 refresh도 만료시간이 있을텐데 이걸 어떻게 관리하는것인지요?http only cookie로 클라이언트에 건내줘서 클라이언트가 만료될때마다 서버쪽으로 던지는것인지아니면 DB에 저장해서 관리하는것인지 궁금합니다. 어떤것이 정답이라고 할수 없겠지만보통 실무에서는 어떻게 관리할까요
-
미해결Java 마이크로서비스(MSA) 프로젝트 실습
SpringCloud Gateway 연동
https://github.dev/ishrhrl39/3-3.Microservice강의중 유레카 대쉬보드에는 아이템 서비스가 잘 표현되는데 왜 postman 요청은 404가 뜨는지 원인을 못찾겠네요..라우팅쪽 문제인것같은데..
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
http Exception filter 적용
http Exception filter 적용이 안됩니다. import { ArgumentsHost, Catch, ExceptionFilter, HttpException, } from '@nestjs/common'; import { Response } from 'express'; @Catch(HttpException) export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { console.log('exception', exception); const ctx = host.switchToHttp(); const response = ctx.getResponse<Response>(); const status = exception.getStatus(); const err = exception.getResponse() as | string | { error: string; statusCode: number; message: string | string[] }; console.log('err', err); if (typeof err !== 'string' && err.error === 'Bad Request') { return response.status(status).json({ ok: false, statusCode: status, data: err.message, }); } response.status(status).json({ ok: false, statusCode: status, data: err, }); } } 위처럼 하고난뒤에 main.ts 파일에 app.useGlobalFilters(new HttpExceptionFilter());추가했는데 위처럼 에러 포맷이 안나옵니다. const foundUser = await this.dataSource.getRepository(UserEntity).findOne({ where: { id } }); if (!foundUser) { console.log('User not found'); throw new BadRequestException('User not found'); }{ "response": { "message": "User not found", "error": "Bad Request", "statusCode": 400 }, "status": 400, "options": {}, "message": "User not found", "name": "BadRequestException"}
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
mydocker
mongoose.connect("mongodb://my-database:27017/mydocker").then(()=> console.log("db접속성공")).catch((err)=>console.log("db접속실패",err))저는 이 부분이 터미널에 db접속이나 db접속 실패가 터미널창에 안 떠요. 터미널창에 왜 안뜰까요??우분투라서 sudo docker-compose build sudo docker-compose up 하면 선생님은 db접속유무가 뜨는데 저는 터미널창에 안 떠요그리고 mydocker이부분은 docker-compass에 들어가면 선생님은 databases에 admin config local 에네랑 같이 있던데 강의에서 언제 생성을 했었나요?
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
post가 안되요
"Required request body is missing: public kr.co.joneconsulting.myrestfulservice.bean.User kr.co.joneconsulting.myrestfulservice.controller.UserController.createUser(kr.co.joneconsulting.myrestfulservice.bean.User)", 이런 에러가 뜨네요 @PostMapping("/users") public User createUser(@RequestBody User user) { return service.save(user); }
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
regionList 클릭시 해당 cities가 안나옵니다.
혼자서 찾아보려고 했는데 도저히 모르겠네요 ㅜ 오류메세지는 나오는건 없고 제목과 같습니다. region을 선택하면 해당 cities가 나와야하는데 안나와요 ㅜ import Header from "./components/Header.js"; import RegionList from "./components/RegionList.js"; import CityDetail from "./components/CityDetail.js"; import CityList from "./components/CityList.js"; import { request } from "./components/api.js"; export default function App($app){ const getSortBy = () => { if (window.location.search){ return window.location.search.split('sort=')[1].split('&')[0]; } return 'total'; }; const getsearchWord = () => { if(window.location.search && window.location.search.includes('search=')){ return window.location.search.split('search=')[1] } //뒤에 있는 값을 반환 return ''; }; this.state={ startIdx : 0, sortBy : getSortBy(), region: '', searchWord: getsearchWord(), cities:'', }; const header = new Header({ $app, initialState:{ sortBy:this.state.sortBy, searchWord:this.state.searchWord }, handleSortChange: async(sortBy) => { const pageUrl = `/${this.state.region}?sort=${sortBy}`; history.pushState( null, null, this.state.searchWord ? pageUrl + `&search=${this.state.searchWord}` : pageUrl ); //변경된 정렬기준을 적용한 새로운 데이터를 불러옴 (매개변수로 전달받은 새로운 정렬기준인 sortBy 값을 넣어야함) const cities = await request(0, this.state.region, sortBy, this.state.searchWord); // 변경된 상태값을 업데이트 this.setState({ ...this.state, startIdx:0, sortBy: sortBy, cities: cities, }); }, handleSearch: async(searchWord) => { //웹사이트 주소를 알맞게 변경 history.pushState( null, null, `/${this.state.region}?sort=${this.state.sortBy}&search=${searchWord}` ); const cities = await request(0, this.state.region, this.state.sortBy, searchWord); this.setState({ ...this.state, startIdx:0, searchWord: searchWord, cities: cities }) }, }); const regionList = new RegionList({ $app, initialState:this.state.region, handleRegion: async(region) => { history.pushState(null, null, `/${region}?sort=total`); const cities = await request(0, region, 'total'); console.log("cities",cities) this.setState({ ...this.state, startIdx: 0, region: region, sortBy: 'total', cities: cities, searchWord: '', }); }, }); const cityList = new CityList({ $app, initialState:this.state.cities, // 아래는 더보기 버튼을 눌렀을 때 실행되는 것 handleLoadMore: async() => { const newStartIdx = this.state.startIdx + 40; const newCities = await request(newStartIdx, this.state.region, this.state.sortBy, this.state.searchWord); this.setState({ ...this.state, startIdx : newStartIdx, cities:{ cities:[...this.state.cities.cities, ...newCities.cities], isEnd: newCities.isEnd, } }) } }); const cityDetail = new CityDetail(); this.setState = (newState) => { this.state = newState; cityList.setState(this.state.cities); header.setState({sortBy:this.state.sortBy, searchWord:this.state.searchWord}); regionList.setState(this.state.region); }; const init = async() => { const cities = await request(this.state.startIdx, this.state.sortBy, this.state.region, this.state.searchWord); this.setState({ ...this.state, cities: cities, //api 호출의 결과인 cities }); }; init(); } export default function RegionList({$app, initialState, handleRegion}){ this.state = initialState; this.$target = document.createElement('div'); this.$target.className = 'region-list'; this.handleRegion = handleRegion; $app.appendChild(this.$target); this.template = () => { const regionList = [ '🚀 All', '🌏 Asia', '🕌 Middle-East', '🇪🇺 Europe', '💃 Latin-America', '🐘 Africa', '🏈 North-America', '🏄 Oceania', ]; let temp = ``; regionList.forEach((elm) => { let regionId = elm.split(' ')[1]; temp += `<div id=${regionId}>${elm}</div>`; }); return temp; }; this.render = () => { this.$target.innerHTML = this.template(); let $currentRegion; if(this.state){ $currentRegion = document.getElementById(this.state); $currentRegion && ($currentRegion.className = 'clicked'); } else { document.getElementById('All').className = 'clicked'; } const $regionList = this.$target.querySelectorAll('div'); $regionList.forEach((elm) => { elm.addEventListener('click', () => { this.handleRegion(elm.id); }); }); }; this.setState = (newState) => { this.state = newState; this.render(); }; this.render(); }
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
one to many mapping에 관하여
oneToMany mapping와 manyToOne mapping에서 users.tntity.ts에 있는 posts항목에 의문이 생겨 질문 드립니다. PostModel list로 되어있는데 DB table은 2dimension이 되지 않는다고 하신것 같아서요 혹시 내부는 어떻게 구현이 되어 있는지 알 수 있나요