묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)
슬랙채널 가입이 안됩니다.
이 부분 해결하는 방법은 아실까요?
-
미해결따라하며 배우는 NestJS
nestjs 기본 구조 설명에서 궁금한게 있습니다.
기본 구조 설명을 듣던 중에 eslintrc.js라는 폴더가 있다고 하시는데 nest가 11.0.2인 버전에서는 없는 것 같아서요. 분명 이 기능을 하는 파일은 있을 텐데.. 혹시 eslint.config.mjs가 아닐까 궁금합니다.
-
미해결[C#/.NET 8.0]어서와, WinForm은 처음이지?
Restore에서 Failed
안녕하세요 pgAdmin4 설치 부분을 하고있습니다.17버전에서 Reference 설정하고 시도했을 때, 안됨15버전으로 설치하고 Reference설정 후 시도해도 안됨이 때 해 볼만한 방안이 있을까요? 바쁘신데 한 번 봐주시면 감사하겠습니다. 껄껄아래 에러 내용입니다 . pg_restore: ۾ ͺ ̽ pg_restore: EXTENSION "adminpack" pg_restore: COMMENT "EXTENSION adminpack" pg_restore: TABLE "public.gangnamgu_population" pg_restore: TOC ó ϴ :pg_restore: 215 TOC ; 1259 24662 TABLE gangnamgu_population postgrespg_restore: : could not execute query: 오류: "gangnamgu_population" 이름의 릴레이션(relation)이 이미 있습니다 : CREATE TABLE public.gangnamgu_population (administrative_agency character varying,total_population integer,male_population integer,female_population integer,sex_ratio double precision,number_of_households integer,number_of_people_per_household double precision,id integer NOT NULL);pg_restore: SEQUENCE "public.gangnamgu_population_id_seq" pg_restore: 216 TOC ; 1259 24667 SEQUENCE gangnamgu_population_id_seq postgrespg_restore: : could not execute query: 오류: "gangnamgu_population_id_seq" 이름의 릴레이션(relation)이 이미 있습니다 : CREATE SEQUENCE public.gangnamgu_population_id_seqAS integerSTART WITH 1INCREMENT BY 1NO MINVALUENO MAXVALUECACHE 1;pg_restore: SEQUENCE OWNED BY "public.gangnamgu_population_id_seq" pg_restore: DEFAULT "public.gangnamgu_population id" pg_restore: "public.gangnamgu_population" ̺ ڷḦ ó pg_restore: 3319 TOC ; 0 24662 TABLE DATA gangnamgu_population postgrespg_restore: : "gangnamgu_population" ̺ COPY : 오류: 중복된 키 값이 "gangnamgu_population_pkey" 고유 제약 조건을 위반함 : (id)=(2) 키가 이미 있습니다. : gangnamgu_population 복사, 1번째 줄pg_restore: : SEQUENCE SET gangnamgu_population_id_seqpg_restore: CONSTRAINT "public.gangnamgu_population gangnamgu_population_pkey" pg_restore: 3176 TOC ; 2606 24675 CONSTRAINT gangnamgu_population gangnamgu_population_pkey postgrespg_restore: : could not execute query: 오류: "gangnamgu_population" 테이블에는 이미 기본키가 있습니다 : ALTER TABLE ONLY public.gangnamgu_populationADD CONSTRAINT gangnamgu_population_pkey PRIMARY KEY (id);pg_restore: : ۾ õǾ : 4
-
미해결[C#/.NET 8.0]어서와, Blazor Server는 처음이지?
Radzen.Blazor.RadzenTheme 오
InvalidOperationException: A component of type 'Radzen.Blazor.RadzenTheme' has render mode 'InteractiveAutoRenderMode', but the required endpoints are not mapped on the server. When calling 'MapRazorComponents', add a call to 'AddInteractiveWebAssemblyRenderMode'. For example, 'builder.MapRazorComponents<...>.AddInteractiveWebAssemblyRenderMode()'Microsoft.AspNetCore.Components.Endpoints.SSRRenderModeBoundary.AssertRenderModeIsConfigured<TRequiredMode>(Type componentType, IComponentRenderMode specifiedMode, IComponentRenderMode[] configuredModes, string expectedCall)서비스 등록함테마 등록함컨포넌트 입력
-
미해결[C#/.NET 8.0]어서와, Blazor Server는 처음이지?
Class 설계 후 Razor 에서 호출!
23:27 ~부터 구현시강사님 환경하고 수업자 환경하고 다른듯하네요using BlazorSeverMaster.Components; using BlazorSeverMaster.Components.Account;using BlazorSeverMaster.Data;using BlazorSeverMaster.interfaces;using BlazorSeverMaster.Models;\ using BlazorSeverMaster.Services;위코드를 추가 해야 되네요
-
미해결[C#/.NET 8.0]어서와, Blazor Server는 처음이지?
wpf 응용 질문
blazor 강의를 통해 web page에 Db 전시하는걸보고 혹시 현재 .net 4.7.2프레임워크를 사용 중인데 wpf를 통해서 로컬 host에도 이와같이 Db를 전시할 수 있을까요?
-
미해결[2025 신규] 어서와, Fast API는 처음이지?
fastapi와 dash 함께 사용하는 경우 문의
강의에서는 fastapi 앱 서버, dash 앱서버 각각 실행을 한 상태에서 dash에서 request를 수행하셨는데dataframe을 사용하지 않고 fastai 결과 dictionary 를 받아서 dashboard를 그리는데 유리한 부분이 있을까요? (속도 측면?)fastapi와 dash를 같이 사용할 때 일반적인 방법이나 추천하는 방법이 따로 있을까요?
-
미해결데이터 분석 SQL Fundamentals
Dbeaver오류
Dbeaver 설치하고 영상처럼 sql연결하였더니 연결오류라고 나옵니다어떤걸 해결해야할까요- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결데이터 분석 SQL Fundamentals
직원 별 가장 높은 매출
14:38초 예제에서 직원별 개별 상품 매출액, 직원별로 가장 높은 매출 대비 개별 상품 매출 비율 구하기 with temp_01 as( select employee_id ,sum(amount)as sum_by_emp_prod --직원별 개별 상품 매출액 -- ,max (amount) as max_emp --직원 별 가장 높은 매출 from orders a join order_items b on a.order_id=b.order_id group by employee_id )select sum_by_emp_prod,sum_by_emp_prod/max(sum_by_emp_prod)over(partition by employee_id) from temp_01; group by할때 왜 product_id도 group by하나요? 직원별 개별 상품인데 employee_id와 그룹바이 하면 되는거 아닌가여 ? 직원별로 가장 높은 매출을 max(sum_by_emp_prod)over(partition by employee_id) 이렇게 구하셧는데 with절에서 group by로 해서 with temp_01 as( select employee_id ,sum(amount)as sum_by_emp_prod --직원별 개별 상품 매출액 ,max (amount) as max_emp --직원 별 가장 높은 매출 from orders a join order_items b on a.order_id=b.order_id group by employee_id ) 이렇게 구하면 안되나여?
-
미해결데이터 분석 SQL Fundamentals
강의순서대로 실습코드순알려주세요.
복습할려는데..실습코드순서를 모르겟어요
-
미해결따라하며 배우는 NestJS
typeorm ^10.0.2 버전 사용시 No metadata for "BoardRepository" was found. 오류 발생 해결방법.
@nestjs/typeorm: ^10.0.2 버전에서도 정상 동작합니다.아래 코드 참고하셔서 수정해 보세요. boards.module.ts 파일에서 providers 부분 수정.... @Module({ imports: [TypeOrmModule.forFeature([Board])], controllers: [BoardsController], providers: [BoardsService, BoardRepository], // BoardRepository 추가 }) export class BoardsModule {}board.repository.ts 파일에서 수정import { Injectable } from '@nestjs/common'; import { DataSource, Repository } from 'typeorm'; import { Board } from './board.entity'; import { CreateBoardDto } from './dto/create-board.dto'; import { BoardStatus } from './board-status.enum'; @Injectable() // 변경 export class BoardRepository extends Repository<Board> { // constructor 추가 constructor(dataSource: DataSource) { super(Board, dataSource.createEntityManager()); } }
-
미해결데이터 분석 SQL Fundamentals
m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?
강의 9:53에 inner join을 했을때 m:n이라서 empno가 7369 인 행이 6건이 출력되었습니다. m:n인 경우 inner join은 cross join와 동작이 동일한걸까요?둘의 차이점이 멀까요?
-
미해결데이터 분석 SQL Fundamentals
rollup
그러면 group by를 할때 rollup을 사용하게 되면, group by에 해당하는 컬럼들에 우선순위가 매겨지면서 그들의 합을 보는건가요?? group by(1, 2, 3)이라면 1끼리의 합계, 1+2의 합계, 1+3의 합계, 1+2+3의 합계 이런식으로 보는건가요?
-
미해결데이터 분석 SQL Fundamentals
Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.디비버에 접속을 하면 postgres는 안보이고 샘플 데이터 베이스만 보입니다. 혹시 디비버를 삭제하고 다시 설치해야 하는 걸까요?
-
미해결데이터 분석 SQL Fundamentals
제발...오류가 계속 납니다
uninstaller로 삭제하고 터미널에서도 2차 확인하고 다시 설치후에 비밀번호를 작성하였는데도 안됩니다.제발 도와주세요,,,, .
-
미해결데이터 분석 SQL Fundamentals
오류가 뜹니다..
postgresql설치 후에 연결을 하는데 비밀번호를 맞게 입력했는데도 FATAL: password authentication failed for user "postgres"이런 오류가 뜨는데 어떻게 해야할까요ㅜㅜ맥북 사용중입니다
-
미해결[C#/.NET 8.0]어서와, Blazor Server는 처음이지?
올려주신 소스코드 관련해서 질문드립니다.
올려주신 소스코드는 제대로 실행이 되는 코드인가요? 수업들으면서 올려주신 소스코드와 비교하며 보고 있는데 소스코드를 한번 실행해보니 제대로 실행이 되지 않고 개발자도구를 통해 에러를 보니 favicon 관련 에러가 발생하여 해당 파일도 제대로 wwwroot에 넣었습니다. 그런데도 잘 실행이 되지 않아 문의드립니다. 감사합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
쿠키 저장이 되지 않습니다.
auth.ts에서 //비번이 맞으면 토큰 생성 const token = jwt.sign({username}, process.env.JWT_SECRET) console.log(token) //쿠키 저장 res.set("Set-Cookie", cookie.serialize('token', token)); return res.json({user, token});token은 잘 찍히고 요청 헤더에 포함되어 있는데TypeError serialize 부분에서 에러가 뜨고실제 응답 에러가 납니다.... 쿠키 저장이 안되는 것 같습니다.serialize가 undefine 되었다는데 위에 const token으로 제대로 선언되고 출력까지 잘 되는데 이유를 모르겠습니다...
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE', (2)
아래 질문 관련입니다.server.ts origin 부분을 강사님처럼 다음과 같이 작성하면 header 오류가 납니다.const origin = process.env.ORIGIN; app.use(cors({ origin, credentials: true }))근데 아래처럼 const origin을 다음과 같이 환경변수를 거치지 않고 명시하면 헤더 오류 대신 500 오류가 나면서 토큰이 생성되지 않습니다. (로그인 페이지에서 로그인 시)const origin = 'http://localhost:3000'; app.use(cors({ origin, credentials: true })) 서버에서 process.env.ORIGIN, process.env.JWT_SECRET을 찍어봤을땐 잘 나오는데...이 이유로 //비번이 맞으면 토큰 생성 const token = jwt.sign({username}, process.env.JWT_SECRET)이 명령줄이 제대로 실행되지 않는 걸까 싶어 process.env.JWT_SECRET를 'super_secret'으로 바꿔봐도 똑같은 증상입니다. 확실하진 않지만 이 때문에 토큰 생성에 오류가 생겨서 500 에러가 뜨는 것인가 싶은데 어떻게 해결하면 좋을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE',
로그인 페이지에서 로그인을 하면 500, 커뮤니티 생성 페이지에서 생성을 하면 401 AxiosError가 뜹니다. <login.tsx>import axios from 'axios'; import InputGroup from '../components/InputGroup' import Link from 'next/link' import { useRouter } from 'next/router'; import React,{ FormEvent, useState } from 'react' import { useAuthDispatch } from '../context/auth'; axios.defaults.withCredentials = true; const Login = () => { let router = useRouter(); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [errors, setErrors] = useState<any>({}); const dispatch = useAuthDispatch(); const handleSubmit = async (event: FormEvent) => { event.preventDefault(); try{ const res = await axios.post("/auth/login", {password, username}, {headers: {'Access-Control-Allow-Origin': 'http://localhost:3000'}}) dispatch("LOGIN", res.data?.user); } catch(error: any){ //console.log(error); setErrors(error.response?.data || {}) } } return ( <div className='bg-white'> <div className='flex flex-col items-center justify-center h-screen p-6'> <div className='w-10/12 mx-auto md:w-96'> <h1 className='mb-2 text-lg font-medium'>로그인</h1> <form onSubmit={handleSubmit}> <InputGroup placeholder='Username' value={username} setValue={setUsername} error={errors.username} /> <InputGroup placeholder='Password' value={password} setValue={setPassword} error={errors.password} /> <button className='w-full py-2 mb-1 text-xs font-bold text-white uppercase bg-gray-400 border border-gray-400 rounded'> 로그인 </button> </form> <small> 아직 아이디가 없으신가요? <Link href="/register" legacyBehavior> <a className='ml-1 text-blue-500 uppercase'>회원가입</a> </Link> </small> </div> </div> </div> ) } export default Login<create.tsx>import axios from "axios"; import { GetServerSideProps } from "next"; import InputGroup from "../../components/InputGroup" import {useState, FormEvent} from "react"; import {useRouter} from "next/router" axios.defaults.withCredentials = true; const SubCreate = () => { const [name, setName] = useState(""); const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [errors, setErrors] = useState<any>({}); let router = useRouter(); const handleSubmit = async (event: FormEvent) => { event.preventDefault(); try { const res = await axios.post("/subs", {name, title, description}, {headers: {'Access-Control-Allow-Origin': 'http://localhost:3000'}}) router.push(`/r/${res.data.name}`); } catch (error: any) { // console.log(error); setErrors(error.response?.data || {}); } } return ( <div className="flex flex-col justify-center pt-16"> <div className="w-10/12 mx-auto md:w-96"> <h1 className="mb-2 text-lg font-medium"> 그룹 만들기 </h1> <hr /> <form onSubmit={handleSubmit}> <div className="my-6"> <p className="font-medium">Name</p> <p className="mb-2 text-xs text-gray-400"> 그룹 이름은 변경할 수 없습니다. </p> <InputGroup placeholder="이름" value={name} setValue={setName} error={errors.name} /> </div> <div className="my-6"> <p className="font-medium">Title</p> <p className="mb-2 text-xs text-gray-400"> 주제를 입력해 주세요. </p> <InputGroup placeholder="주제" value={title} setValue={setTitle} error={errors.title} /> </div> <div className="my-6"> <p className="font-medium">Description</p> <p className="mb-2 text-xs text-gray-400"> 그룹에 대한 설명을 입력해주세요. </p> <InputGroup placeholder="설명" value={description} setValue={setDescription} error={errors.description} /> </div> <div className="flex jstify-end"> <button className="px-4 py-1 text-sm font-semibold rounded text-white bg-gray-400 border" > 그룹 만들기 </button> </div> </form> </div> </div> ) } export default SubCreate<subs.ts>import {Router, Request, Response} from "express"; import jwt from "jsonwebtoken" import { User } from "../entities/User"; import userMiddleware from "../middlewares/user" import authMiddleware from "../middlewares/auth" import { AppDataSource } from "../data-source"; import Sub from "../entities/Sub"; import { isEmpty } from "class-validator"; const createSub = async (req: Request, res: Response, next) => { const {name, title, description} = req.body; try { let errors: any = {}; if (isEmpty(name)) errors.name = "이름은 비워둘 수 없습니다."; if (isEmpty(title)) errors.title = "제목은 비워둘 수 없습니다."; const sub = await AppDataSource.getRepository(Sub) .createQueryBuilder("sub") .where("lower(sub.name) = :name", { name: name.toLowerCase() }) .getOne(); if (sub) errors.name = "서브가 이미 존재합니다."; if (Object.keys(errors).length > 0) { throw errors; } } catch (error) { console.log(error); return res.status(500).json({ error: "문제가 발생했습니다." }); } try { const user: User = res.locals.user; const sub = new Sub(); sub.name = name; sub.description = description; sub.title = title; sub.user = user; await sub.save(); return res.json(sub); } catch (error) { console.log(error); return res.status(500).json({ error: "문제가 발생했습니다." }); } }; const router = Router(); router.post("/", userMiddleware,authMiddleware, createSub); export default router; <server.ts>import express, { response } from "express"; import morgan from "morgan"; import { AppDataSource } from "./data-source"; import authRoutes from './routes/auth' import subRoutes from './routes/subs' import cors from 'cors'; import dotenv from 'dotenv'; import cookieParser from "cookie-parser"; const app = express(); const origin = process.env.ORIGIN; const corsOption = { origin: "http://localhost:3000", credentials: true } app.use(cors(corsOption)) app.use(express.json()); app.use(morgan('dev')); app.use(cookieParser()); dotenv.config(); app.get("/", (_, res) => {res.send("running")}); app.use("/api/auth", authRoutes) app.use("/api/subs", subRoutes) console.log(process.env.ORIGIN) let port = 4000; app.listen(port, async () => { console.log('server running at http://localhost:${port}'); AppDataSource.initialize().then(async () =>{ console.log("database initialized") }).catch(error => console.log(error)) })