묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[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)) })
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
overload 에러
import {Router, Request, Response} from "express"; import {User} from "../entities/User"; import { validate, Validate } from "class-validator"; const register = async (req: Request, res: Response) => { const {email, username, password} = req.body; try{ let errors: any = {}; //이메일/유저이름 단일성 확인 const emailUser = await User.findOneBy({email}); const usernameUser = await User.findOneBy({username}); //이미 있으면 erros 객체에 넣음 if(emailUser) errors.email = "이미 해당 이메일 주소가 사용되었습니다." if(usernameUser) errors.username = "이미 사용자 이름이 사용되었습니다." //에러가 있으면 return으로 에러를 response 보내줌 if(Object.keys(errors).length > 0){ return res.status(400).json(errors) } const user = new User(); user.email = email; user.username = username; user.password = password; //엔터티에 정해 놓은 조건으로 user 데이터 유호성 검사를 해줌 errors = await validate(user); //유저 정보를 user table에 저장 await user.save() return res.json(user); } catch(error){ console.error(error); return res.status(500).json({error}) } } const router = Router(); router.post("/register", register); export default router맨 위 코드(auth.ts)에서 사진과 같이 overload 에러가 뜹니다.유저이름/이메일 중복 및 에러 처리하는 코드 중 return으로 응답을 반환하는 중 타입이 맞지 않아서 생기는 오류 같은데 어떻게 해결할 수 있을까요??
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
docker compose up 오류
postgres 강의 중 docker compose up을 실행하면 아래와 같이 오류가 뜹니다.version: "3" services: db: image: postgres: latest container_name: postgres restart: always ports: - "5432:5432" environment: POSTGRES_USER: "${DB_USER_ID}" POSTGRES_PASSWORD: "${DB_USER_PASSWORD}" volumes: - ./data:/var/lib/postgresql/datayml 파일은 수업 그대로 위/아래와 같이 작성했는데 4번쨰 줄 postgres 부분이 인식이 안되는것 같아서 이것 때문인지... 구글링을 해봐도 해결 방법을 모르겠습니다!
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
부록) remark 강의 중 parmas 오류
부록 따라가고 있는데 그대로 소스 코드를 작성해서 실행하면 localhost에 아래와 같이 오류가 뜹니다.오류 메시지가 [id].tsx 파일에 아래와 같이 뜨긴 하는데 강의 중 강사님 화면에도 그렇고 강의 자료에도 똑같이 오류 메시지(빨간 줄)가 있더라구요. next13부터 라우팅 방식이 달라졌다고 하던데 버전 문제인건지...아래 params 오류 제외하고는 모두 동일한 소스 코드를 작성했고 오류도 없습니다.해결 방법이 궁금합니다. **혹시 몰라서 [id].tsx 랑 post.ts 코드 전체 첨부합니다.<id.tsx>import React from 'react' import Head from 'next/head' import { GetStaticPaths, GetStaticProps } from 'next' import { getAllPostIds, getPostData, getSortedPostsData } from '../../lib/post' const Post = ({postData}: { postData: { title: string date: string contentHtml: string } }) => { return ( <div> <Head> <title>{postData.title}</title> </Head> <article> <h1>{postData.title}</h1> <div> {postData.date} </div> <div dangerouslySetInnerHTML={{__html: postData.contentHtml}} /> </article> </div> ) } export default Post export const getStaticPath: GetStaticPaths =async () => { const paths = getAllPostIds(); return{ paths, fallback: false } } export const getStaticProps: GetStaticProps =async ({params}) => { const postData = await getPostData(params.id as string) return { props: { postData } } }<post.ts>import fs from 'fs' import path from 'path' import matter from 'gray-matter' import { remark } from 'remark'; import remarkHtml from 'remark-html/lib'; const postsDirectory = path.join(process.cwd(), 'posts') console.log('process.cwd()', process.cwd()); console.log('postsDirectory.cwd()', postsDirectory); export function getSortedPostsData(){ //Get file names under /posts const fileNames = fs.readdirSync(postsDirectory) console.log('fileNames', fileNames); //fileNames ['pre-rendering.md', 'ssg-ssr.md'] const allPostsData = fileNames.map(fileName => { //Remove ".md" from file name to get id const id = fileName.replace(/\.md$/, '') //Read markdown file as string const fullPath = path.join(postsDirectory, fileName) const fileContents = fs.readFileSync(fullPath, 'utf8') //Use gray-matter to parse the post metadata section const matterResult = matter(fileContents) //Combine the data with the id return{ id, ...(matterResult.data as {date: string; title: string}) } }) //Sort posts by date return allPostsData.sort((a,b) => { if(a.date<b.date){ return 1 } else{ return -1 } }) } export function getAllPostIds(){ const fileNames = fs.readdirSync(postsDirectory); return fileNames.map(fileName => { return { params: { id: fileName.replace(/\.md$/, '') } } }) } export async function getPostData(id: string){ const fullPath = path.join(postsDirectory, `${id}.md`) const fileContents = fs.readFileSync(fullPath, 'utf-8') const matterResult = matter(fileContents); const processedContent = await remark().use(remarkHtml).process(matterResult.content); const contentHtml = processedContent.toString(); return { id, contentHtml, ...(matterResult.data as {date: string; title: string}) } }
-
해결됨[C#/.NET 8.0]어서와, Blazor Server는 처음이지?
Radzen 설치 관련해서 오류가납니다.
위코드가 app.razor 이고위와같이 오류가나는데 어디가 잘못됬는지 모르겠어요https://blazor.radzen.com/get-started?theme=material3
-
미해결따라하며 배우는 NestJS
Model과 Dto의 차이점을 좀 쉽게 알수 있을까요?
Model과 Dto의 차이점을 좀 쉽게 알수 있을까요?
-
미해결[C#/.NET 8.0]어서와, WinForm은 처음이지?
PowerShell Command 입력 시 에러
Scaffold-DbContext "Host=localhost;Database=mydatabase;Username=myuser;Password=mypassword" Npgsql.EntityFrameworkCore.PostgreSQL -o Models커맨드 입력 후 Models 폴더가 생성되지 않습니다.사진은 커맨드 입력 후의 로그이며, 아래는 설치된 패키지 목록입니다.변경해야되는 DB 이름, user,password 등은 여러번 확인을 해봤습니다 혹시 DB 이름에 _가 포함되면 안되는걸까요?사진상으로 확인이 힘든 것 같아 아래에 로그 전문 추가하겠습니다.Build started...Build succeeded.To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263.Npgsql.PostgresException (0x80004005): 3D000: "Inflearn_Winform_Test" �����ͺ��̽� ���� at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(Int16 token) at Npgsql.Internal.NpgsqlConnector.<Open>g__OpenCore|213_1(NpgsqlConnector conn, SslMode sslMode, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken, Boolean isFirstAttempt) at Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken) at Npgsql.PoolingDataSource.OpenNewConnector(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken) at Npgsql.PoolingDataSource.<Get>g__RentAsync|33_0(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlConnection.<Open>g__OpenAsync|42_0(Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlConnection.Open() at Npgsql.EntityFrameworkCore.PostgreSQL.Scaffolding.Internal.NpgsqlDatabaseModelFactory.Create(DbConnection dbConnection, DatabaseModelFactoryOptions options) at Npgsql.EntityFrameworkCore.PostgreSQL.Scaffolding.Internal.NpgsqlDatabaseModelFactory.Create(String connectionString, DatabaseModelFactoryOptions options) at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(String connectionString, DatabaseModelFactoryOptions databaseOptions, ModelReverseEngineerOptions modelOptions, ModelCodeGenerationOptions codeOptions) at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) Exception data: Severity: ġ�������� SqlState: 3D000 MessageText: "Inflearn_Winform_Test" �����ͺ��̽� ���� File: postinit.c Line: 1033 Routine: InitPostgres3D000: "Inflearn_Winform_Test" �����ͺ��̽� ����
-
미해결다양한 사례로 익히는 SQL 데이터 분석
ADSP자격증
다양한 사례로 익히는 SQL 데이터 분석(권철민 강사님)강사님 안녕하세요저는 백앤드 개발자로 3년간 일하다가 개발보다는 쿼리짜는 것에 더 흥미가 있어서 데이터 엔지니어쪽으로 전직하고 싶어서 이 강의를 구매했습니다. 저는 평소 데이터를 분석하고 쿼리를 짜는게 재미있고 꼼꼼한 성격이어서 데이터 관련 직무가 저와 잘 맞을거라고 생각하는데요!아래 두가지 질문드립니다~! 이 강의가 데이터 분석가를 위한 강의라고 보았는데 이 직무는 SQL쿼리조작+프로그래밍 능력 두가지가 필요한 것일까요? 프로그래밍의 비중이 개발자보다는 덜 한 직업인가요..?ADSP(데이터 분석 준전문가)는 해당 직무 및 이 강의와 관련이 있는 자격증인가요?
-
미해결데이터 분석 SQL Fundamentals
""와 ''의 차이가 궁금합니다.
안녕하세요. left join 실습을 하던중에, 궁금한점이 생겨서 질문드립니다. 아래의 코드로 실습할때에는 마드리드에 살고있는 고객정보를 잘 가져오는데 select c.contact_name , o.order_id , o.order_date , o.employee_id , o.ship_via from nw.customers c left join nw.orders o on c.customer_id = o.customer_id where c.city = 'Madrid'아래의 코드로 변경하여 실행하였을 때에는 에러가 나서 데이터를 가져오지 못합니다.두개의 차이가 무엇인지 궁금합니다.select c.contact_name , o.order_id , o.order_date , o.employee_id , o.ship_via from nw.customers c left join nw.orders o on c.customer_id = o.customer_id where c.city = "Madrid"답변 감사합니다.
-
미해결실전! Django 활용
urls.py 파일에 작성한 코드 분리 여부
안녕하세요. 정말 강의 재밌게 잘 듣고 있습니다.들으면서 궁금한 부분이 있어 질문드립니다./orders API를 예시로 들었을 때, urls.py 파일에 모든 코드가 작성되는데, 쿼리나 비즈니스 로직을 따로 분리하는 방식은 파이썬 프레임워크에서는 잘 사용하지 않는 방법인가요? 일반적으로 스프링에서는 service와 respository 클래스로 해당 코드를 분리하는 편이어서 이 차이점이 궁금합니다.
-
미해결데이터 분석 SQL Fundamentals
where in절 서브쿼리
where in절에서 서브쿼리를 사용하면 서브쿼리의 결과로 중복되는 컬럼이 유니크 하게 처리된다 하셨는데 이거는 in절의 특징인가요?
-
미해결[C#/.NET 8.0]어서와, WinForm은 처음이지?
Nuget 패키지 관리자 콘솔 그룹정책으로 사용안될경우!
NuGet 패키지 관리자 콘솔 실행시 아래와 같은 그룹정책으로 사용 오류 발생하면 대체 방안이 있을까요? 형식 데이터 파일을 로드하는 동안 오류가 발생했습니다. C:\program files\microsoft visual studio\2022\community\common7\ide\commonextensions\microsoft\nuget\Modules\NuGet\NuGet.Format.ps1xml, , C:\program files\microsoft visual studio\2022\community\common7\ide\commonextensions\microsoft\nuget\Modules\NuGet\NuGet.Format.ps1xml: 다음 유효성 검사 예외로 인해 파일을 건너뛰었습니다. 그룹 정책을 사용하여 만든 정책 같은 소프트웨어 제한 정책에 의해 작업이 차단되었으므로 C:\program files\microsoft visual studio\2022\community\common7\ide\commonextensions\microsoft\nuget\Modules\NuGet\NuGet.Format.ps1xml 파일을 로드할 수 없습니다..
-
미해결데이터 분석 SQL Fundamentals
exists 와 in 차이
안녕하세요, Where절 서브쿼리 사용 시 유의사항 part 듣다가 질문드립니다 앞전에 exists 사용법에 대해 나오지 않아서 이 파트 들으면서 처음 봤는데요! 비상관 서브 쿼리 - in 을 사용해서 설명상관 서브쿼리 exists 를 사용해서 설명해주셨는데 in을 사용한 비상관 서브쿼리에서도 상관서브쿼리처럼 메인쿼리의 연결 컬럼을 넣어줘도 작동이되어서요 그럼 비상관 서브쿼리랑 상관 서브쿼리랑 차이가 없는것처럼 보여서 헷갈립니다 ㅠ 그리고 언제 in 을 사용한 서브쿼리를 활용하는지, exists 를 사용하는지 궁금합니다 from ( 서브쿼리 ) 이렇게 해줘도 될것같은데 어떤 차이인지 해서요!
-
미해결[C#/.NET 6.0]어서와, Blazor WebAssembly는 처음이지?
데이터 입력 Razor Page Design Part.1 부분
안녕하세요. 현재 데이터 입력 Razor Page Design Part.1 부분을 보고 있는데, 강의 내용이 누락된 것 같아 글 남깁니다. 이전 강의 까지는 Interface, Service, Controller 를 작성하였었고, 이제 UI 부분을 해보겠다 하신 후에 강의 9분 30초 즈음에 DataInput.razor 파일을 보여주시는데 강의 내용에 없던 코드가 작성되어 있습니다. 그리고 서버 프로젝트쪽 Program.cs에 dbContext와 서비스에 의존성 주입하는 내용도 빠져있어 강의대로 따라가면 실행 중 API가 호출되지 않아 문제가 발생합니다. 확인 부탁 드립니다.
-
미해결[C#/.NET 6.0]어서와, Blazor WebAssembly는 처음이지?
Blazor WebAssembly 솔루션 만들 때
안녕하세요! 강의를 들으며 솔루션을 만들 때 한가지 질문이 생겨서 여쭙니다. Blazor WebAssembly 솔루션 만들 때 강의에서는 프레임워크를 .Net 6.0을 사용했지만, 현재 시점에는 .Net 8.0 버전이 있어서 해당 버전으로 만들어 보려고 합니다.하지만 .Net 6.0과 다르게 .Net 8.0 으로 솔루션을 만들 때 ASP.NET Core 호스팅 이라는 옵션이 없어 솔루션을 만들고 나면 프로젝트가 1개뿐인 솔루션이 만들어집니다. .Net 8.0 사용 시 어떻게 하면 강의처럼 3개의 프로젝트가 있는 솔루션을 만들 수 있을까요? 혹시, 그냥 강의처럼 구조를 잡기 위해 일단 솔루션을 만들고 프로젝트를 2개 더 추가를 해도 같은걸까요?
-
해결됨Firebase보다 10배 좋은 Supabase
npm error could not determine executable to run
https://join.slack.com/t/lopun-lecture/shared_invite/zt-2mkxcgt5h-7Bq~fMnMJ8Scle17fzFYCQ 영상에선 supabase 설치안했는데 npm i supabase 하니깐 실행되는데.. 누락된건가요 ?
-
미해결다양한 사례로 익히는 SQL 데이터 분석
특정 스키마에서 생성한 편집기의 쿼리를 판다스에 삽입하는 방법
안녕하세요,디비버 실습시 nw스키마에서 SQL편집기를 생성하여 코드를 작성중입니다.따라서 select * from orders; 와 같이 nw.orders대신 그냥 orders로 테이블을 지정(?)하고있습니다.해당 쿼리를 그대로 복사하여 query객체에 넣고싶은데이럴땐 conn_string에 어떤 추가적인 사항을 넣어줘야 할까요?