묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이미지 관리 풀스택(feat. Node.js, React, MongoDB, AWS)
axios 통신 오류
안녕하세요. 로그아웃 기능을 구현하는데 axios통신이 되지 않아서 질문드립니다. 회원가입까지는 되고 이후에 toolbar에서 로그아웃을 클릭하면 첨부한 사진과 같이 axios 통신에러가 나는데 왜 그런지 잘 모르겠습니다.... 저는 로그아웃을 patch로 하지 않고 서버와 클라이언트에서 모두 post로 구현을 했습니다. patch로 바꿔바도 결과가 그대로 오류가 나옵니다.... 코드까지 올리겠습니다.. AuthContext.js import React, { createContext, useState, useEffect } from "react"; import axios from "axios"; export const AuthContext = createContext() //context 객체 만들기 export const AuthProvider = ({children}) => { //provider const [user, setUser] = useState() //유저 로그인 정보를 받기 위한 저장소 useEffect(()=>{ if(user) axios.defaults.headers.common.sessionid=user.sessionId //user가 있을 경우 기본값으로 header에 sessionId를 입력 else delete axios.defaults.headers.common.sessionid //user가 없는 경우 sessionid를 삭제 }, [user]) return ( <AuthContext.Provider value={[user, setUser]}> {/*provider를 통해 state와 set함수를 넘겨줌.*/} {children} </AuthContext.Provider> ) } toolbar.js import React, { useContext } from "react"; import { Link } from "react-router-dom"; import { AuthContext } from "../context/AuthContext"; import axios from 'axios' const ToolBar = () => { const [user, setUser] = useContext(AuthContext) //context 사용을 설정 const Logout = async()=>{ try{ await axios.post('/users/logout') //로그아웃으로 post setUser() // console.log("로그아웃 완료") }catch(err){ console.log(err) } } return ( <div> <Link to='/'> <span style={{ marginRight: 10 }}>홈</span> </Link> {user ? //이전에 공유하는 user가 존재 유무 (<span onClick={(e)=>{Logout()}}>로그아웃</span>) : (<> <Link to='/auth/login'> <span style={{ marginRight: 10 }}>로그인</span> </Link> <Link to='/auth/register'> <span >회원가입</span> </Link> </>) } </div> ) } export default ToolBar userRouter.js const { Router } = require('express') const userRouter = Router() const User = require('../models/User') const { hash, compare } = require('bcryptjs') const mongoose = require('mongoose') userRouter.post('/register', async (req, res) => { try { if (req.body.password.length < 6) { throw new Error("6자리 이상으로 비밀번호를 입력하세요.") } if (req.body.username.length < 3) { throw new Error("3자리 이상으로 유저 이름을 입력하세요.") } const hashedPassword = await hash(req.body.password, 10) //비밀번호를 hash로 만들어 줌 const user = await new User({ //user 객체를 생성 name: req.body.name, username: req.body.username, hashedPassword: hashedPassword, //입력받은 req데이터를 객체에 저장. sessions: [{createdAt: new Date()}] }).save() const session = user.sessions[0] //회원가입이기 때문에 무조건 첫번째로 생성된 세션을 기준으로 잡음. res.json({ message: "회원가입 완료", sessionId: session._id, name: user.name }) } catch (err) { res.status(400).json({message: err.message}) } }) userRouter.post('/login', async (req, res)=>{ try{ const user = await User.findOne({username: req.body.username}) //mongoose의 내장함수로 요청정보에 맞는 유저를 찾는다. const isValid = await compare(req.body.password, user.hashedPassword) //요청된 비밀번호와 해쉬번호를 비교 if(!isValid) throw new Error("잘못된 입력입니다.") user.sessions.push({createdAt: new Date()}) //유저의 세션을 추가 const session = user.sessions[user.sessions.length-1] //session은 가장 최근에 만든 세션을 기준으로 잡음. await user.save() //user모델을 DB에 저장 res.json({message: "로그인 성공!", sessionId:session._id, name:user.name}) }catch(err){ res.status(400).json({message: err.message}) } }) userRouter.post('/logout', async (req, res)=>{ try{ //미들웨어를 갔다 온 뒤 처리 if(!req.user) throw new Error("유효하지 않은 세션입니다.") await User.updateOne({_id:req.user.id}, //저장된 user의 id와 스키마의 id 같은 것을 찾아서 업데이트 함. {$pull: {sessions: {_id:req.headers.sessionid}}} //세션들 중 로그아웃할 세션id와 같은 세션을 pull을 통해 삭제함 ) res.json({success: "성공!"}) }catch(err){ res.status(400).json({message: err.message}) } }) module.exports = { userRouter }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
템플릿 넘겨줄 때 매개변수?
th:fragment=:common_header(~{::title}, ~{::link})"> 이렇게 넘겨줄 때 title 과 link는 태그 이름으로 넘겨주고 base에서 common_header(title, links) 이렇게 받는다면 {links} 와 {title}이 들어간 곳만 대체한다고 보면 되는건가요 ? 넘겨줄 땐 태그명으로 넘겨주고 받을 땐 변수처럼 받아서 사용한다고 보면 되나요 ? base에서 title, link 태그가 다 바뀌는게 아니라 {변수명?} 이렇게 되어 있는 부분만 대체 돼서 질문 남깁니다
-
미해결
What Are The Best Places To Visit In India
Are you looking for the best India travel blog? Do you want to visit some of the best places in India, and you don't know anything about it? That's why you are finding travel blogs to know more about the best places. Then your search is over here. WanderersHub is the best place to know and read about the best places worldwide. They share their traveling journeys like- Experiences and Destinations. You can check their blog about offbeat places in Jaipur. This is such a nice place to visit.
-
미해결[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
flask 샘플코드 실행시 오류
안녕하세요 백엔드 flask 강의의 "flask로 정적 웹페이지 지원기법" 의 5:20 부근에서 로그인 박스에 dave 를 입력후 버튼을 누르면 success가 나오지않고 Cannot GET /login 이라고 뜹니다. 코드는 샘플코드로 vscode에서 실행했습니다 패키지같은게 덜 설치되어서 그런걸까요? 그리고 부스트스랩 실행을 위해 샘플파일의 login_test.py 파일에 static_url_path 추가 후 run 한 다음 크롬페이지에서 실행하면 Internal Server Error가 뜹니다 Go Live 누르면 부트스트랩의 static 적용전 모습의 로그인 화면이 뜹니다 실행이 안되니 진도를 나갈수가 없는상황입니다 조언부탁드립니다
-
미해결실전! Querydsl
where절 BooleanBuilder 를 통한 null처리
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. where절을 이용한 동적쿼리를 작성할때 아래와 같이 조합하는 경우 ageGoe(ageGoe)가 null을 반환하면 NPE가 발생하기때문에 null체크를 해줘야 한다고 배웠습니다. private BooleanExpression ageBetween(int ageLoe, int ageGoe) { return ageGoe(ageGoe).and(ageLoe(ageLoe)); } 이에대한 해결책으로 eq같은 경우 파라미터가 null인 경우 IllegalArgumentException 예외를 던지기 때문에 이를 이용하여 아래와 같이 코드를 작성하면 null이 아닌 빈 BooleanBuilder를 반환하여 BooleanBuilder를 조합하는 방식으로 해결된다는 사실도 확인했습니다. 하지만 내부적으로 eq("") 이런 경우에 대한 처리는 되어있지 않고 실제로 ""를 넘겼을때 쿼리에서 member0_.username="" 이런식으로 동작하는걸 확인했습니다. 1. eq에서 ""로 들어올때 처리를 어떤식으로 해줘야 할까요? 그리고 member.age.goe(ageGoe) 의 경우 ageGoe에 null이 들어오는 경우 내부적으로 private ConstantImpl(T constant) { this((Class) constant.getClass(), constant); } 2. 이 메서드에서 constant.getClass() 부분에서 NPE가 발생합니다. 때문에 nullSafeBuilder 에서 NPE에 대해 catch로 처리를 하면 되긴 하지만 이 방법이 맞는지 모르겠습니다. 위 1, 2 질문에 대해 nullSafeBuilder를 쓰지 않고 각 메서드에서 if절로 처리하면 정상적으로 동작하고 해결이 되지만 nullSafeBuilder로 해결하려면 어떤식으로 작성해야할까요? private BooleanBuilder usernameEq(String usernameCond) { /*if (hasText(usernameCond)) { return new BooleanBuilder().and(member.username.eq(usernameCond)); } else { return new BooleanBuilder(); }*/ return nullSafeBuilder(() -> member.username.eq(usernameCond)); } private BooleanBuilder teamNameEq(String teamNameCond) { return nullSafeBuilder(() -> team.name.eq(teamNameCond)); } private BooleanBuilder ageGoe(Integer ageGoeCond) { /*if (ageGoeCond != null) { return new BooleanBuilder().and(member.age.goe(ageGoeCond)); } else { return new BooleanBuilder(); }*/ return nullSafeBuilder(() -> member.age.goe(ageGoeCond)); } private BooleanBuilder ageLoe(Integer ageLoeCond) { return nullSafeBuilder(() -> member.age.loe(ageLoeCond)); } public static BooleanBuilder nullSafeBuilder(Supplier<BooleanExpression> f) { try { return new BooleanBuilder(f.get()); } catch (IllegalArgumentException e) { return new BooleanBuilder(); } catch (NullPointerException e) { return new BooleanBuilder(); } }
-
미해결웹 게임을 만들며 배우는 Vue
ajax 통신으로 부모 자식 컴포넌트 간의 데이터를 주고 받는 방식에 대해 문의드립니다.
안녕하세요, 우선 코드는 추후에 해결이 안됐을 때 다시 올려서 재문의 드리도록 하겠습니다. 현재 부모 컴포넌트에서 ajax 통신 (async await) 을 사용하여 데이터를 조회하고, 해당 데이터를 자식 컴포넌트에 전달해야 하는데요, 자식 컴포넌트는 해당 ajax 통신을 기다리지 않고 mount가 됩니다. 자식 컴포넌트에서 ajax 통신을 기다리게 하는 방법이 있을까요? 아니면 다른 해결 방법이 있는지 문의드립니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
new EntityModel<> 에러
동영상을 보면서 잘 따라가고 있습니다. 그런데 Hateoas 부분에서 아래와 같이 에러가 납니다. 아무리 인터넷을 찾아봐도 해결방법을 못 찾았습니다. 그냥 실행시키면 java: cannot infer type arguments for org.springframework.hateoas.EntityModel<> 와 같은 메시지가 나옵니다. 어떻게 해결해야 할까요. 좋은 답변 부탁드립니다.
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
v-for 오류 ㅠㅠ
안녕하세요! 여태 빨간줄 뜨면서 npm 안되는 에러 무시하고 그냥 콘솔에 찍어서 확인하다가 이제는 화면에 출력하고 싶어서 v-for 로 출력하려고 했는데요 찾아보니까 vue 몇 버전 이상부터는 v-for 에는 key 가 필수라고 하더라구요! 그래서 그런건지 eslint 를 비활성화 해도 오류로 인식되는건지 아예 실행이 안되는데,,, v-bind:key 를 어느 부분에 어떤식으로 써야 해결될 수 있을까요?!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
이번 강의에서 구현한 LoadJson 함수 문법 질문입니다
Loader LoadJson<Loader,Key,Value>(string path) where Loader : ILoader<Key,Value> { TextAsset textAsset = Managers.Resource.Load<TextAsset>($"Data/{path}"); return JsonUtility.FromJson<Loader>(textAsset.text); } 여기서 Loader << 이 부분이 헷갈려서 몇가지 질문 남깁니다. 1. Loader라는 타입을 따로 정의하지 않았는데, 이게 제네릭메소드 T 와 같은 의미이며, Loader라고 정의한거는 그냥 보기 편하게 T 를 Loader라고사용했다 보면 되는건가요 ? 2. LoadJson<Loader,Key,Value> 에서 Loader가 무슨의미인지 모르겠습니다. Loader에 대한 정보가 없으니, 정보를 얻기 위해 그냥 단순 : ILoader<Key,Value>를 상속받는 클래스를 저기에 입력하라는 의미로 받아드리면 될까요 ?
-
미해결스파크 머신러닝 완벽 가이드 - Part 1
databricks에서 머신러닝 모델 파일을 만들고 로컬에 다운로드 받을 수 있을까요?
강사님 안녕하세요. 좋은 강의 만들어주셔서 감사합니다. databricks 노트북에서 머신러닝 모델을 만들고, 모델 pkl 파일을 생성하여 로컬컴퓨터에 다운로드 받는 방법이 있을까요? aws 기반 databricks으로 회원가입까지 해서 찾아봐도 방법을 찾을 수가 없네요. !ls 폴더명을 해보면 생성된 파일이 있기는 한데, 데이터 탐색하는 곳에는 파일이 안보이네요. 코드 : model.save('/FileStore/tables/smart_lr.pkl') !ls /FileStore/tables 하면 smart_lr.pkl 파일이 있습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
NULL오류가 나타났는데 디버그능력을 어떤식으로 키워야할까요?
하이러키상에서는 scoreText로 만들었는데 UI_Button.cs에서 enum으로 ScoreText를, Start문에서 Get<Text>((int)Texts.ScoreText).text = "Bind Test"; 로 scoreText를 대소문자 잘못적는 실수를해서 NULL오류가 나왔는데요, 이 NULL값을 디버그모드로 찾아보려다가 찾는방법을 잘 몰라서 일일히 비교해보고 문제점을 발견했습니다. 구체적으로는 Start에 중단점걸고 f10으로 넘기면서 확인했는데 Get<Text>((int)Texts.ScoreText).text = "Bind Test"; 이부분에서 f10으로 넘어갈때 Null오류가 뜬다는것만 확인했지만 대소문자 오류인지를 몰라서 헤매다보니 이부분에서 문제를 어떻게 확인해야할지, 뭐가문제인지 감이 안잡히는거 같습니다. NULL값을 찾기위해 디버그모드를 사용하려해도 저가 디버그를 다뤄본적이 너무 부족하다고 느낀 바 어떤식으로 이것을 학습해서 능력을 키워야할지 길을 제시해주셨음 합니다 디버그강의를 다시봐야할까요? 중단점을 찍는 위치부터 null값이 어디에떠서 문제가생기는지를 파악할수있는 디버그를 하는능력을 기르고싶습니다.
-
미해결
Are You Looking Best Place For Buying Kids And Fashion Apparels
Are you looking for the best place for Buying kids and fashion apparels. Sweet Hommers is the perfect place to indulge in a spot of shopping for kids and babies toys. You'll find everything you need to keep the little ones entertained, from puzzles and games to cuddly toys and clothes. What's more, the prices are very reasonable, so you can indulge in a spot of retail therapy without breaking the bank. So if you're looking for the perfect place to buy kids and babies toys, Sweet Hommers is the place to go.
-
해결됨자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
abstract class와 sealed class는 어느경우에 나눠 사용하나요?
좋은 강의 감사드립니다. 🙇♂️ 한 가지 의문이 있습니다. sealed class를 사용하는 목적이 계층 구조를 안전하게 만들고 싶다로 이해됩니다. 또한, 문서를 보아하니 sealed class자체가 abstract class인것 같은데, 기존의 abstract class를 사용하는 경우도 대부분 주로 계층화에 많이 사용되지 않았습니까? 예를 들자면 interface -> abstract class -> class 순으로 점차 구체화 해나가는 식으로요. 그럼 그냥 abstract class를 사용해야 할 필요를 느낄 경우에 항상 sealed class를 사용해버리면 when을 쓸 때 안정성만 더 증가하는 것 같은데, 코틀린에서 abstract class는 언제 사용하나요? 정리하자면, abstract class를 사용하면 아무나 이를 서브클래싱 하여 확장할 수 있으나, 실제 자바의 코드들은 이러한 용도로 사용되고있진 않습니다. (이러한 상황 자체가 sealed class의 탄생 배경으로 이해 됩니다). 따라서 sealed class자체가 abstract class의 super set인 것 같은데, 이렇게 되면 abstract class를 사용했을 때의 베네핏이 있나요? 실제 코틀린으로 업무를 보시면서 abstract class를 사용하시는 경우가 있는지 궁금합니다. 당장 드는 생각은 대부분의 경우를 abstract class가 아닌 sealed class로 퉁쳐도 될 것 같다고 생각되어서요.... 🤔
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의를 다 수강하고 생긴 핸들러/어댑터와 관련된 질문들입니다... ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 1, 프론트 컨트롤러인 DispatcherServlet은 실제로 어디에 있는건가요? 영한님 강의 들으면서 간단한 웹 페이지 구현해봤는데 저는 @RequestMapping 으로 컨트롤러만 만들었는데 DispatchServlet을 제가 언제 사용한지를 모르겠습니다 .. 2. @Controller 붙은게 다 핸들러라고 보면 되는거 맞나요 ?? 3. 맞다면 이 Controller는 각자 다 return 값이 다르고 필요로하는 매개변수도 다르니까 스프링 내부적으로 어댑터를 돌려서 리턴값에 따라 해결해주는거아닌가요 ?? 제가 직접 어댑터를 쓴 적이 없어서 혼동이 옵니다 ㅠㅠ 3. @Controller, @RequestMapping 붙은게 다 return "basic/items" 이런식으로 리턴했는데 뷰 리졸버가 알아서 html이랑 매핑을 시켜주는 것 같은데 그럼 뷰 리졸버도 어댑터가 내포되어 있는건가요 ㅠㅠ? 4. 핸들러마다 다 다르게 매개변수를 필요로하고 리턴값도 다 다르니까 그걸 ModelAndView로 리턴갑을 고정해서 자유롭게 쓸 수 있게 해준다고 배웠는데 왜 ModelAndview를 리턴하는게 아니라 절대경로를 String 형식으로만 리턴한건가요 ㅠㅠ?.. 이 부분들에 대해 어떤 강의를 다시보면 될지 알려주시면 강의도 다시 들어보겠습니다! 매번 강의 잘 수강중이며 질문에 대한 답도 항상 감사드립니다 _ _ )
-
미해결Slack 클론 코딩[실시간 채팅 with React]
localhost:3090 접속 시 404에러
{ "name": "slack-front", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "cross-env TS_NODE_PROJECT=\"tsconfig-for-webpack-config.json\" webpack serve --env development", "build": "cross-env NODE_ENV=production TS_NODE_PROJECT=\"tsconfig-for-webpack-config.json\" webpack", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git+https://github.com/KKIMDoHyun/slack-clone-front.git" }, "author": "dohyun_kim", "license": "MIT", "bugs": { "url": "https://github.com/KKIMDoHyun/slack-clone-front/issues" }, "homepage": "https://github.com/KKIMDoHyun/slack-clone-front#readme", "dependencies": { "@types/react": "^18.0.9", "@types/react-dom": "^18.0.5", "cross-env": "^7.0.3", "css-loader": "^6.7.1", "react": "^18.1.0", "react-dom": "^18.1.0", "style-loader": "^3.3.1", "typescript": "^4.6.4" }, "devDependencies": { "@babel/core": "^7.18.0", "@babel/preset-env": "^7.18.0", "@babel/preset-react": "^7.17.12", "@babel/preset-typescript": "^7.17.12", "@emotion/babel-plugin": "^11.9.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", "@types/node": "^17.0.35", "@types/webpack": "^5.28.0", "@types/webpack-dev-server": "^3.11.1", "babel-loader": "^8.2.5", "eslint": "^8.16.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "fork-ts-checker-webpack-plugin": "^7.2.11", "prettier": "^2.6.2", "react-refresh": "^0.13.0", "ts-node": "^10.8.0", "webpack": "^5.72.1", "webpack-cli": "^4.9.2", "webpack-dev-server": "^4.9.0" } } 이건 package.json이고, import path from 'path'; import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin'; import webpack from 'webpack'; import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; // import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; const isDevelopment = process.env.NODE_ENV !== 'production'; const config: webpack.Configuration = { name: 'slack-front', mode: isDevelopment ? 'development' : 'production', devtool: !isDevelopment ? 'hidden-source-map' : 'eval', resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'], alias: { '@hooks': path.resolve(__dirname, 'hooks'), '@components': path.resolve(__dirname, 'components'), '@layouts': path.resolve(__dirname, 'layouts'), '@pages': path.resolve(__dirname, 'pages'), '@utils': path.resolve(__dirname, 'utils'), '@typings': path.resolve(__dirname, 'typings'), }, }, entry: { app: './client', }, module: { rules: [ { test: /\.tsx?$/, loader: 'babel-loader', options: { presets: [ [ '@babel/preset-env', { targets: { browsers: ['last 2 chrome versions'] }, debug: isDevelopment, }, ], '@babel/preset-react', '@babel/preset-typescript', ], env: { development: { plugins: [['@emotion', { sourceMap: true }], require.resolve('react-refresh/babel')], }, production: { plugins: ['@emotion'], }, }, }, exclude: path.join(__dirname, 'node_modules'), }, { test: /\.css?$/, use: ['style-loader', 'css-loader'], }, ], }, plugins: [ new ForkTsCheckerWebpackPlugin({ async: false, // eslint: { // files: "./src/**/*", // }, }), new webpack.EnvironmentPlugin({ NODE_ENV: isDevelopment ? 'development' : 'production' }), ], output: { path: path.join(__dirname, 'dist'), filename: '[name].js', publicPath: '/dist/', }, devServer: { historyApiFallback: true, // react router port: 3090, proxy: { '/api/': { target: 'http://localhost:3095', changeOrigin: true, }, }, }, }; if (isDevelopment && config.plugins) { config.plugins.push(new webpack.HotModuleReplacementPlugin()); config.plugins.push(new ReactRefreshWebpackPlugin()); // config.plugins.push(new BundleAnalyzerPlugin({ analyzerMode: 'server', openAnalyzer: true })); } if (!isDevelopment && config.plugins) { // config.plugins.push(new webpack.LoaderOptionsPlugin({ minimize: true })); // config.plugins.push(new BundleAnalyzerPlugin({ analyzerMode: 'static' })); } export default config; 이건 webpack.config.ts 입니다. npm run build를 하고 npm run dev를 하면 실행은 잘 되지만 localhost:3090에 접속을 하면 404가 뜹니다. 왜일까요?
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
자료 권한 요청드렸습니다.
안녕하세요^^ 오늘 jun.hwang@unomic.com 메일로 자료 권한 요청드렸습니다. 확인부탁드립니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
참조가 보이지 않는분들 중에
혹시 저처럼 참조(R)이 안 보여서 없는줄 알구 개발자 명령프롬프트 열고 명령어 입력하기 직전이신 분들 비쥬얼 스튜디오 2019 사용을 하고 계신다면 같은 기능합니다.
-
미해결
How To Make Money From Online Games
If you're looking for the best place to make bets, then look no further than the Satta King website. At Satta Kings Fast, you'll find all the information you need to make informed bets on your favorite games. The website is easy to navigate and offers a wealth of information on each game. Best of all, the Disawar Satta Game is one of the best games to earn money online. So what are you waiting for? Go to the website today and start winning!
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
연산자 오버로딩을 하면
안녕하세요구조체 내에 연산자 오버로딩을 하면 Sort함수에 쓰이는 원리가 궁금합니다.참조형 매개변수로 B를 받고A > B 이렇게하면 현재값이 앞에 놓이니깐 내림차순으로 정렬된다는게 어떤의미인지 이해가 잘 안됩니다 ㅠㅠ #include<stdio.h> #include<algorithm> #include<queue> #include<vector> using namespace std; struct Data{ int money; int when; Data(int a, int b){ money=a; when=b; } bool operator<(const Data &b)const{ return when>b.when; } }; int main(){ freopen("input.txt", "rt", stdin); int n, i, j, a, b, res=0, max=-2147000000; vector<Data> T; priority_queue<int> pQ; scanf("%d", &n); for(i=1; i<=n; i++){ scanf("%d %d", &a, &b); T.push_back(Data(a, b)); if(b>max) max=b; } sort(T.begin(), T.end()); j=0; for(i=max; i>=1; i--){ for( ; j<n; j++){ if(T[j].when<i) break; pQ.push(T[j].money); } if(!pQ.empty()){ res+=pQ.top(); pQ.pop(); } } printf("%d\n",res); return 0; }
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그인 유지에 관한 질문이 있습니다!
안녕하세요 제로초님!! 다름이 아니라 이번에 팀프로젝트를 진행 하기 전 한가지 의문이 들어서 열심히 구글링도 해보고 찾아보던중, 생각보다 명확하게 한 방법으로 나오지 않아서 혹시 제로초님이 추천해주시는 방법은 어떤 것인지 여쭤보려고 합니다! 1. next.js 에서는 ssr을 통해 로그인 유지를 할 수 있는데, react로 진행하는 csr 프로젝트를 한다면 로그인 유지를 어떻게 하는 것이 나을지 궁금합니다! 2. 구글링을 해봤을 때는 localStorage를 많이 이용하는 것 같은데 이건 쿠키를 이용하는 것이 아닌 토큰을 이용하는 방법 같은데 제가 정확히 이해한 것이 맞는지도 궁금합니다