묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
Prim 알고리즘에서 best관련 질문 있습니다.
두가지 질문이 있습니다.Prim으로 맵 생성할 때 best가 왜 필요한 것인지 이해가 잘 되지 않아서 질문 드립니다. 제 생각으로는 트리와 연결된 간선들 중 어차피 가장 작은 가중치를 가지는 간선을 선택할 텐데 그걸 굳이 best로 저장하고 갱신시킬 필요가 있는 것인지...잘 모르겠습니다.또 선택한 정점과 연결된 간선들을 discovered에 넣는 부분에서 굳이 새로 발견한 정점이 있다면 continue해야 하는 이유도 잘 모르겠습니다. 그 위에서 트리에 있었다면 continue하는 부분 만으로 충분하다고 생각되어서요.참고로 두 부분을 빼도 맵은 잘 작동하기에 더욱 이해가 되질 않아 질문합니다!// 어떤 정점이 트리에 포함되어 있나? map<Pos, bool> tree; // 정점의 부모는 누구인가? map<Pos, Pos> parent; // 만들고 있는 트리에 인접한 간선 중, 해당 정점에 닿는 최소 간선의 정보 map<Pos, int32> best; // 다익스트라와 거의 유사함. // 단, 다익스트라의 best는 시작점을 기준으로 한 cost // 프림에서 best는 현재 트리를 기준으로 한 cost for (int32 y = 0; y < _size; y++) { for (int32 x = 0; x < _size; x++) { best[Pos{ y,x }] = INT32_MAX; tree[Pos{ y,x }] = false; } } priority_queue<CostEdge, vector<CostEdge>, greater<CostEdge>> discovered; const Pos startPos = Pos{ 1,1 }; // 랜덤으로 정해도 됨. discovered.push(CostEdge{ startPos, 0 }); parent[startPos] = startPos; best[startPos] = 0; while (discovered.empty() == false) { CostEdge bestEdge = discovered.top(); // 가중치 가장 작은 간선을 선택 discovered.pop(); // 새로 연결된 정점 Pos v = bestEdge.vertex; if (tree[v] == true) // 만약 트리에 v가 이미 있었다면 continue continue; tree[bestEdge.vertex] = true; // 맵에 적용 // 이전 정점(= 새로 연결된 정점의 부모) Pos u = parent[v]; int y = (u._y + v._y) / 2; int x = (u._x + v._x) / 2; _tile[y][x] = TileType::EMPTY; for (const CostEdge& e : edges[bestEdge.vertex]) // 선택한 정점과 연결된 간선들을 discovered에 넣음. { if (tree[e.vertex]) // 새로 발견한 애들이 이미 있었다면 continue continue; if (e.cost > best[e.vertex]) // 다른 경로로 더 좋은 후보가 발견되었으면 continue continue; discovered.push(e); parent[e.vertex] = bestEdge.vertex; best[e.vertex] = bestEdge.cost; } }
-
해결됨모의해킹 실무자가 알려주는, XSS 공격 기법
섹션 4. 공격상세방법론 - [미션] 게시판 취약점 찾기 풀이 검토 및 개인적인 질문
안녕하세요. 크리핵 티브님 미션으로 주셨던 강의 내용 풀이 시도한 내용과 개인적인 질문 내용 드리겠습니다. 미션1) board/index.php에서 XSS 취약점을 최대한 많이 찾아보는 미션-> 맨 처음에는 black-box test 방식으로 시도했으나 도무지 방법을 찾지 못해서 php 코드를 보고 풀이를 했습니다.-> 붉은 상자로 표시한 부분에 value 값에 XSS 구문을 넣으면 XSS가 가능할 것으로 판단 했습니다.-> 그래서 URL에 vlaue=<script>alert('XSS');</script> 구문을 넣어서 XSS가 잘 동작함을 확인했습니다.-> DOM을 통해 client 단에서 동작하는 것이 아니기 때문에 Reflected-XSS로 판단합니다.[검증]-> burp suite로 XSS를 동작시킬 때 Response부분을 잡아본 것인데 Response에 alert('XSS')가 들어감을 확인할 수 있습니다. [질문1]위에서 Refelected XSS외에 다른 XSS 취약점을 찾지 못했는데 다른 XSS 취약점도 있는지 궁금합니다. 그리고 제가 아직 모든 강의를 끝까지 들은건 아닌데 혹시 추후 강의 들에서 풀이가 있는지도 궁금합니다. 미션2) xss/eample5.php에서 어떤 XSS가 가능한지, DOM인지 Relfected 인지 한 번 찾아보는 미션-> 이 역시도 black-box test방식으로 시도했으나 결국 성공하지 못해 php코드를 확인하고 XSS를 시도하였습니다.-> permissionCheck() 함수를 이용해서 XSS 공격을 시도해 봤습니다.-> URL에 ");로 if문을 닫아 버린 다음에 <script>태그를 이용했으나 필터링 코드에 의해 막혔습니다.-> 그래서 필터링 코드를 우회하기 위해 XSS cheat sheet를 이용했습니다.-> 위의 이미지외에 여러 cheat sheet에 있는 코드를 시도했으나 모두 실패했습니다.-> php코드를 보면 DOM XSS와 Relfected XSS모두 가능할 것 같지만 잘 모르겠습니다. [질문 2]해당 필터링 구문을 우회하려면 어떻게 하는지 궁금합니다. [질문3-개인적인 질문]현업에서는 black box test방식으로 모의해킹을 진행하게 되면 back-end단에서 돌아가는 코드(ex. php, jsp, asp, Node.js 등)구조를 알 수가 없는데 그러면 그냥 guessing을통해서만 XSS취약점을 점검해야 하는지 궁금합니다.(전제 조건이 file download/upload취약점을 사용하지 않고 XSS를 점검하는 경우를 질문드리는 겁니다.) 감사합니다.
-
미해결SCSS(SASS)+GRID+FLEX 실전 포트폴리오 퍼블리싱
beautify 확장자가 더이상 관리되지 않다고합니다
beautify 확장자가 더이상 관리되지 않다고 해서beautify css/sass/scss/less 확장자를 다운받았는데괜찮을까요??
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 재요청 드립니다.!!
깃헙 권한 재요청 드립니다! 인프런 아이디 : jungsr417@hanwha.com인프런 이메일 : jungsr417@hanwha.com깃헙 아이디 : jungsr417깃헙 Username : jsr 감사합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
bufferwriter << 오버로딩 궁금한 점이 있습니다.
const T& 버전과 T&& 버전으로 오버로딩 되어 있는데T&&가 보편참조라서 const T& 버전이 사용이 안되는건 아닌지 궁금합니다. 그리고 T&& 버전에서 std::move를 왜 사용하는건지 궁금합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
JSP 회원목록 조회
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]save 까지는 잘 되는데 JSP 회원목록을 조회할때 500에러가 뜹니다.members.jsp 코드입니다bulid.gradle 입니다
-
미해결퀘이사(Quasar) 완벽 마스터: Vue 프론트 웹을 빠르게 만들고 싶다면! (Based Vue3)
npm run dev를 해도 브라우저 화면에서 안나옵니다.
npm run dev를 해도 브라우저 화면에서 안나옵니다.그러다가 constants.js파일에서 썼던 아래의 소스를 지워보았더니 그럼 또 잘나옵니다. 제가 뭔가 잘못 넣은걸까요???export default boot(({ app }) => { app.config.globalProperties = 'Hello Quasar!!'; });그리고 두번째 질문은 터미널에 npm run dev를 할때마다 http://localhost:9001/#/, http://localhost:9002/#/,http://localhost:9003/#/ 이렇게 로컬호스트 번호가 증가하는데 제가 run을 계속해서 그런건가요??
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
requestParamV4 메서드 관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.requestParamV4@RequestParam의 required 기본값이 true라고 말씀해주셨는데 username을 빼고 보내도 오류가 안나서 질문드립니다.@RequestParam이 직접적으로 명시되어 있지않으면 required false가 기본값인 걸까요?http://localhost:8080/request-param-v4?age=20 요청
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
웹페이지 여는 법
안녕하세요.현재 사이트에 올라와있는 홈페이지 예제를 참고하여 홈페이지 레이아웃을 만들고자 합니다.크롬에서 f12 단축키를 통해 코딩코드를 확인하고 있는데F12로 확인하는 방법 말고 사이트의 코딩을 여는 방법이 있나요?
-
해결됨독하게 되새기는 C 프로그래밍
파일 처리와 UI 분리 #2에서 동기화가 없어도 괜찮은건가요?
File I/O를 위한 thread를 생성했을 때 User Event 받는 thread가 같은 자원에 접근하는데 동기화 없이 진행해도 괜찮은건가요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
exit 해서 root 빠져 나오기
exit 써서 root 나오시라 했는데 아무리 해도 ,, root인데 어떡하죠?...ㅜㅜ
-
해결됨코딩테스트 [ ALL IN ONE ]
longest 사용 이유?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 왜 여기서 longest 변수를 사용하는건지 궁금합니다 그냥 cnt 출력하면 안되는건가요?
-
미해결애플 웹사이트 인터랙션 클론!
load 이벤트시 첫 비디오 이미지가 뜨네요.
window.addEventListener('load' ... 중략sceneInfo[0].objs.context.drawImage(sceneInfo[0].objs.videoImages[0], 0, 0);안녕하세요.작업하다 이상해서, 강의자료도 같이 확인해보니 중간에 새로고침시 videoImages의 첫 이미지가 잠시 뜨는데, 아마 위의 코드 때문이 아닌가 합니다. 저 부분은 첫 scene의 장면임에도 불구하고, 뜬다는 것은 찰나이긴 하지만, 첫영역부터 순간적으로 중간으로 이동하면서 나타나는 현상같기도 한데, 이게 컴퓨터의 성능차이일수도 있다는 생각이 들기도 합니다. 저만 이런건지 모르겠습니다만..저 코드를 제거하고 중간에서 새로고침해보니 안보여서 문제가 없지만, 최상단 첫화면에서 새로고침하면 이미지가 안보이니 또 문제더군요.그래서 위 코드를 제거후, 새로고침시 조금 스크롤되는 코드에서 추가 조건문(else)를 붙여서 아래와 같이 수정해보았습니다. if (tempYOffset > 0) { let siId = setInterval(() => { scrollTo(0, tempYOffset); tempYOffset += 5; if (tempScrollCount > 20) { clearInterval(siId); } tempScrollCount++; }, 20); } else { sceneInfo[0].objs.context.drawImage(sceneInfo[0].objs.videoImages[0], 0, 0); } 이렇게 처리하니 문제가 없는 듯 한데, 이게 저한테만 생기는 문제인지, 아니라면 제가 위와 같이 처리한 방법이 맞는것인지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 진짜 무식하게 풀기 테케는 통과되는데 ㅎㅎ
#include<iostream> using namespace std; int n, a[1000004], b[1000004]; int main(){ cin >> n; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<n-1;i++){ if(a[i]<a[i+1]){ b[i]=a[i+1]; }else if(a[i]>a[i+1]){ int k=i, temp=i; for(int j=i;j<n-1;j++){ if(a[j]<a[j+1])break; k++; } for(int j=temp;j<=k;j++){ b[j]=a[k+1]; } int flag=1; for(int j=i;j<n-1;j++){ if(a[i]<a[j+1]){ flag=0; break; } } if(flag)b[i]=-1; } } b[n-1]=-1; for(int i=0;i<n;i++){ cout << b[i] << " "; } }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
GetMapping 에서 @ModelAttribute 사용 이유
영상 8:57 에서 @GetMapping("/add") 에서 파라미터로 @ModelAttribute를 받는 이유가 무엇인가요 ? PostMapping이 아니라 GetMapping일 때는 데이터가 넘어오지 않기 때문에 사용할 이유가 없는 것 아닌가요 ??
-
해결됨코딩은 처음이라 with 웹 퍼블리싱 - CSS
hover했을 때 margin top 설정 시에 왜 hover 전에도 margin top을 써야하죠?
transform강의 4분 13초쯤 보면 hover했을 때 margin top을 50px로 주고 img{} 에도 margin top을 0으로 써주라고 하셨는데 왜 그래야하는거죠? hover 전에 0인거 안 써줘도 잘 작동하던데 이유가 있나요?
-
미해결스프링 기반 REST API 개발
Spring Boot 3.x.x 버전 , gradle 사용 할 때 ASCII 관련 설정 참고하세요
혹여나 Spring Boot 3.x.x. 버전에 gradle 사용할 경우 ASCII 관련 해 설정하는 부분을 정리 해 놓았습니다.혹시 저와 같은 Setting을 진행하시는 분들은 참고해주시면 좋을 것 같아요!설명 바로가기
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 한글 깨짐
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]localhost:8080/hello-static.html에서 한글이 깨져서 출력됩니다.인코딩 관련된 질문에서 달아주신 글 모두 확인 후 전부 변경했는데 해결이 되지 않습니다..
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
D2 슬라이드 배너 내용이 보이지 않습니다.
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>서울구석구석</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="container"> <div class="main-content"> <div class="left"> <header> <div class="header-logo"> <a href="#none"><img src="images/header-logo.jpg" alt="header-logo"></a> </div> <div class="navi"> <ul class="menu"> <li> <a href="#none">지금의 서울</a> <div class="sub-menu"> <a href="#none">이벤트</a> <a href="#none">축제&행사</a> <a href="#none">전시</a> </div> </li> <li> <a href="#none">추천</a> <div class="sub-menu"> <a href="#none">에디터추천</a> <a href="#none">테마코스</a> <a href="#none">도보해설관광</a> <a href="#none">한류관광</a> </div> </li> <li> <a href="#none">여행지</a> <div class="sub-menu"> <a href="#none">명소</a> <a href="#none">엔터테인먼트</a> <a href="#none">음식</a> <a href="#none">게스트하우스</a> </div> </li> <li> <a href="#none">여행정보</a> <div class="sub-menu"> <a href="#none">가이드북&지도</a> <a href="#none">시티투어버스</a> <a href="#none">날씨</a> </div> </li> </ul> </div> </header> </div> <div class="right"> <div class="slide"> <div class="slide-inner"> <div class="slide-items"> <a class="slide-item" href="#none"><img src="images/slide-01.jpg" alt="slide-01"></a> <a class="slide-item" href="#none"><img src="images/slide-02.jpg" alt="slide-02"></a> <a class="slide-item" href="#none"><img src="images/slide-03.jpg" alt="slide-03"></a> </div> </div> <div class="slide-banner"> <a href="#none"><img src="images/slide-banner.png" alt="slide-banner"></a> <h3> 얼리버드 할인, <br> 신규강의 최대 30% 할인 </h3> 12월 개강반을 12월 06일까지 접수하는 분들께는 15%~ 20% 의 얼리버드 할인을 제공합니다. 더불어 소중한 리뷰를 꼼꼼히 남겨주시는 분들을 뽑아 더 큰 적립금을 추가지급! 리뷰도 놓치지 마시고 작성해주세요~^^ <br><br> 기간: 12월 18일~ 12월 25일</p> </div> </div> <div class="news-gallery"> <div class="news"> <div class="btn"> <a href="#none">공지사항</a> </div> <div class="tab1"> <a class="open-modal" href="#none">스트리밍 서버 이전 작업으로 2시간 서비스 중지<b>2022.12.20</b></a> <a href="#none">얼리버드 선착순 할인 이벤트 최대 50% 할인<b>2022.10.13</b></a> <a href="#none">내 집 마련의 꿈을 꿈이 아닌 현실로 만드는 진짜 방법<b>2022.11.31</b></a> <a href="#none">외국인과 영어로 네이티브처럼 대화하는 노하우! <b>2022.08.09</b></a> <a href="#none">외국인과 영어로 네이티브처럼 대화하는 노하우! <b>2022.07.07</b></a> </div> </div> <div class="gallery"> <div class="btn"> <a href="#none">갤러리</a> </div> <div class="tab2"> <a href="#none"><img src="images/gallery-01.jpg" alt="gallery-01"><span>퍼블리셔 <br> 취업 진짜 가이드 </span></a> <a href="#none"><img src="images/gallery-02.jpg" alt="gallery-02"><span>초보자가 전문가가 <br> 되는 사진촬영</span></a> <a href="#none"><img src="images/gallery-03.jpg" alt="gallery-03"><span>탄탄한 라인을 <br> 만드는 필라테스</span></a> </div> </div> </div> </div> </div> <footer> <div class="footer-logo"> <a href="#none"><img src="images/footer-logo.png" alt="footer-logo"></a> </div> <div class="copyright"> <p>상호 : (주)코딩웍스 | 대표자 : 홍길동 | 개인정보관리책임자 : 성춘향 부장 <br> 사업장주소 : 경기도 남양주시 별내동 1234 코딩웍스 빌딩 6층 (주)코딩웍스 </p> </div> <div class="family-site"> <select> <option value="family-site-01">Family Site</option> <option value="family-site-01">Family Site</option> <option value="family-site-01">Family Site</option> <option value="family-site-01">Family Site</option> </select> </div> </footer> <div class="modal"> <div class="modal-content"> <h3>스트리밍 서버 이전으로 서비스 장애</h3> <p> 문자셋의 변경에 따라 기존의 DB, data, 웹사이트 솔루션 등의 커스트마이징 등에 상당한 어려움이 있었고, 이에 따른 일부 접속 오류가 있을 수 있었음에 양해를 구합니다. 특히 인터넷익스플로러 11로 접속하셨을 경우 일부 문제은행 목차가 출력되지 않았을 수도 있습니다. 서버 이전 작업으로 고객님들께 불편을 드려서 대단히 죄송합니다. 정상 운영되도록 최선을 다하겠습니다 <br> 감사합니다.</p> <a class="close-modal" href="#none"> X 닫기</a> </div> </div> </div> <script src="script/jquery-1.12.4.js"></script> <script src="script/custom.js"></script> </body> </html> @charset "utf-8"; body{ background-color: #fff; color: #333; position: relative; margin: 0; } a{ text-decoration: none; color: inherit; } .container{ } .main-content{ display: flex; } .main-content > div{ /* border: 1px solid; */ } .left{ width: 200px; } .right{ flex:1; } /* header */ header{} header > div{ } .header-logo{ height: 100px; } .navi{ height: 400px; } .menu{ list-style: none; padding: 0; } .menu li{ display: flex; flex-direction: column; align-items: center; } .menu li > a{ text-align: center; display: block; border: #333 1px solid; width: 180px; padding: 5px; transition: 0.5s; } .menu li:hover > a{ background-color: #333; color: #fff; } .sub-menu{ border: 1px solid #333; background-color: #fff; display: none; } .sub-menu a{ width: 180px; display: block; padding: 5px; text-align: center; } .sub-menu a:hover{ background-color: #3333336c; color: #fff; } /* slide */ .slide{ display: flex; font-size: 0; height: 400px; } .slide-inner{ overflow: hidden; flex: 1; height: 400px; position: relative; } .slide > div{ height: 400px; border: #333 1px solid; } .slide-banner{ width: 230px; text-align: center; } .slide-items{ flex:1; width: 300%; position: absolute; height: inherit; object-fit: cover; } .slide-items{ } .news-gallery{ display: flex; } .news-gallery > div{ height: 250px; } .news{ flex: 1; } .gallery{ flex: 1; } .btn{} .btn > a{ display: block; border: #333 1px solid; padding: 5px; width: 100px; text-align: center; margin: 0 10px; margin-top: 10px; border-radius: 5px 5px 0 0; background-color: #333; border-bottom: none; color: #fff; } .tab1 , .tab2{ margin: 0 10px; border: #333 1px solid; height: 190px; } .tab1 a{ display: block; padding: 5px 15px; border-bottom: #333 1px dashed; padding-top: 10px; } .tab1 a:last-child{ border-bottom: none; } .tab1 a b { float: right; font-weight: normal; } .tab2{ display: flex; justify-content: center; align-items: center; gap: 30px; } .tab2 a span{ display: block; font-size: 14px; text-align: center; } .tab2 a img{ width: 180px; border-radius: 5px; } footer{ display: flex; text-align: center; } footer > div{ height: 100px; } .footer-logo{ width: 200px; } .copyright{ flex: 1; padding-top: 10px; box-sizing: border-box; } .family-site{ width: 230px; padding-top: 30px; box-sizing: border-box; } .modal{ position: absolute; background-color: #3333332c; top:0; left: 0; width: 100%; height: 100%; display: none; } .madal > div{} .modal-content{ text-align: center; padding: 15px; border-radius: 10px; width: 350px; height: 300px; background-color: #fff; position: absolute; top:50%; left:50%; transform: translate(-50%,-50%); } .close-modal{ float: right; display: block; border: #333 1px solid; padding: 5px 10px; border-radius: 5px; } $('.menu li').mouseenter(function(){ $(this).children('.sub-menu').stop().slideDown() }) $('.menu li').mouseleave(function(){ $(this).children('.sub-menu').stop().slideUp() }) $('.open-modal').click(function(){ $('.modal').fadeIn(500) }) $('.close-modal').click(function(){ $('.modal').fadeOut(500) }) setInterval(function(){ $('.slide-items').animate({left:'-100%'},function(){ $('.slide-items').css({left:0}) $('.slide-item:first-child').appendTo('.slide-items') }) },3500)슬라이드 배너밑에 요소가 보이지 않습니다 ㅠobject-fit 커버도 똑바로 준건지 궁금합니다그외에 또 문제사항은 없을까요??
-
미해결
머그컵 이벤츠
김영한님 강의 다 신청 했는데요.머그컵 관련 메일을 못 받았는데 확인 부탁드려요. guseong0209@gmail.com