묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
Astar open 배열에 관하여 질문있습니다.
항상 좋은 강의 잘 듣고 있습니다. 다름이 아니라 Astar 알고리즘에 대해서 복습하던 중 궁금한 점이 생겨 질문드리게 되었습니다. Astar 알고리즘에서 open 배열과 우선순위 큐를 사용하셨는데, 우선순위 큐를 사용하면 open 배열 없이도 구현할 수 있지 않나요? 조금 코드를 변형시켜 open 배열 없이 다음과 같이 구현해 보았습니다. open배열을 사용하는것에 대한 장점이 따로 있을까요? void AStar() { // U L D R UL DL DR UR int[] deltaY = new int[] { -1, 0, 1, 0, -1, 1, 1, -1 }; int[] deltaX = new int[] { 0, -1, 0, 1, -1, -1, 1, 1 }; int[] cost = new int[] { 10, 10, 10, 10, 14, 14, 14, 14 }; bool[,] closed = new bool[_board.Size,_board.Size]; // 삭제 //int[,] open = new int[_board.Size, _board.Size]; // OpenList //for (int y = 0; y < _board.Size; y++) // for (int x = 0; x < _board.Size; x++) // open[y, x] = Int32.MaxValue; Pos[,] parent = new Pos[_board.Size, _board.Size]; PriorityQueue<PQNode> pq = new PriorityQueue<PQNode>(); //open[PosY, PosX] = 10 * (Math.Abs(_board.DestY - PosY) + Math.Abs(_board.DestX - PosX)); //PQNode에 parent 추가 pq.Push(new PQNode() { F = 10 * (Math.Abs(_board.DestY - PosY) + Math.Abs(_board.DestX - PosX)), G = 0, Y = PosY, X = PosX, parent= new Pos(PosY, PosX)}); while (pq.Count > 0) { PQNode node = pq.Pop(); if (closed[node.Y, node.X]) continue; closed[node.Y, node.X] = true; //추가 parent[node.Y, node.X] = node.parent; if (node.Y == _board.DestY && node.X == _board.DestX) break; for (int i = 0; i < deltaY.Length; i++) { int nextY = node.Y + deltaY[i]; int nextX = node.X + deltaX[i]; if (nextY < 0 || nextY >= _board.Size || nextX < 0 || nextX >= _board.Size) continue; if (_board.Tile[nextY, nextX] == Board.TileType.Wall) continue; if (closed[nextY, nextX]) continue; int g = node.G + cost[i]; int h = 10 * (Math.Abs(_board.DestY - nextY) + Math.Abs(_board.DestX - nextX)); //삭제 //if (open[nextY, nextX] < g + h) // continue; //삭제 //open[nextY, nextX] = g + h; pq.Push(new PQNode() { F = g + h, G = g, Y = nextY, X = nextX, parent = new Pos(node.Y, node.X) }); //parent 추가 } } CalcPathFromParent(parent); } 읽어주셔서 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이 부분 그냥 넘어가려고 하는데 상관없을까요?
다음 수업듣는데 지장 없을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
User.js 에서 this의 의미
User.js 에서 this 키워드를 쓰시던데, 여기서 this가 가리키는 것이 궁금합니다. 제가 이해한 바로는 this는 데이터베이스 자체를 의미하는 것인데 맞나요? 그리고 comparePassword 메소드를 굳이 User.js 파일에 생성하는 이유가 무엇인가요?
-
미해결인공지능 기초수학
강의 교안 메일로 부탁드립니다
안녕하세요. 좋은 강의 감사합니다. 강의 교안 메일로 부탁드립니다. krisyuri1@gmail.com 잘 듣겠습니다. ^^
-
미해결차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원
안녕하세요 강의자료 부탁드립니다.
안녕하세요 강의 잘 듣고 있습니다. 강의자료 공유 가능하시면 재요청드립니다. lepuz@naver.com 남은 연말 잘 마무리하시길 바랍니다.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
TypeError: Assignment to constant variable.
const { Worker, isMainThread, parentPort, workerData, } = require("worker_threads"); const min = 2; // const max = 10_000_000; const primes = []; function findPrimes(start, range) { let isPrime = true; const end = start + range; for (let i = start; i < end; i++) { for (let j = min; j < Math.sqrt(end); j++) { if (i !== j && i % j === 0) { isPrime = false; break; } } if (isPrime) { primes.push(i); } isPrime = true; } } if (isMainThread) { const max = 10_000_000; const threadCount = 8; const threads = new Set(); const range = Math.ceil((max - min) / threadCount); let start = min; console.time("prime"); for (let i = 0; i < threadCount - 1; i++) { const wStart = start; threads.add( new Worker(__filename, { workerData: { start: wStart, range } }) ); } threads.add( new Worker(__filename, { workerData: { start, range: range + ((max - min + 1) % threadCount) }, }) ); for (let worker of threads) { worker.on("error", (err) => { throw err; }); worker.on("exit", () => { threads.delete(worker); if (threads.size === 0) { console.timeEnd("prime"); console.log(primes.length); } }); worker.on("message", (msg) => { primes = primes.concat(msg); }); } } else { findPrimes(workerData.start, workerData.range); parentPort.postMessage(primes); } node:internal/event_target:777 process.nextTick(() => { throw err; }); ^ TypeError: Assignment to constant variable. at Worker.<anonymous> (/Users/itaewon/Documents/devsource/node_test/prime-worker.js:60:14) at Worker.emit (node:events:390:28) at MessagePort.<anonymous> (node:internal/worker:232:53) at MessagePort.[nodejs.internal.kHybridDispatch] (node:internalevent_target:562:20) at MessagePort.exports.emitMessage (node:internal/per_context/messageport:23:28)
-
미해결스프링 핵심 원리 - 고급편
Pointcuts 클래스를 빈으로 등록 안한 이유
Pointcust 클래스를 빈으로 등록하니깐 @Around("Pointcuts.allOrder()") 이렇게 해도 되는데 왜 강의에서는 경로를 지정해서 한건가요? 둘이 어떤 차이점이 있는건가요?
-
미해결버그헌팅과 시나리오 모의해킹 전문가 되기
iso 파일이 없어서 로그인후 멈춤
2021.4 버전을 받았고요, virtualbox버전이 VirtualBox 그래픽 사용자 인터페이스 버전 5.2.20 r125813 좀옛날거여서 그런지 일단 ova가져오기 한후에 로그인 했는데 그 부팅화면 그대로 멈춤이 발생해서 설정에서 광학 드라이브에 2020.버전 .iso를 넣고서야 로그부팅이 제대로 되었는데 이건 2020버전 kali로 로그인된거같은데요... 왜그런거지... 여쭤봐도 되나요???
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
권한요청드립니다.
인프런 아이디 : xpertmake@gmail.com (구글 계정으로 가입) 인프런 이메일 : xpertmake@gmail.com 깃헙 아이디 : nameyoon@gmail.com 깃헙 Username: yoonkiseok
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
비동기 넌 블러킹
비동기 넌 블러킹이 무엇인가용>
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이
count(distinct submission_id) > 1
안녕하세요,문제 4번 쿼리 중 count(distinct submission_id) > 1 이 왜 "hackers who achieved full scores for more than one challenge" 를 뜻하는지 이해가 되지 않습니다! submission_id는 제출한 모든 챌린지에 부여되는 번호 아닌가요? full score를 받지 않더라도 제출하면 받는 번호 아닌지요? count(submission_id) > 1 이 왜 full_score를 1회 초과하여 받았다는 뜻인지 모르겠습니다.감사합니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한요청드립니다.
인프런 아이디 : xpertmake@gmail.com (구글 계정으로 가입) 인프런 이메일 : xpertmake@gmail.com 깃헙 아이디 : nameyoon@gmail.com 깃헙 Username: yoonkiseok
-
미해결YOLO 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0
작성한 코드의 저작권과 깃헙 업로드 가능유무에 대한 질문
안녕하세요. 이번에 새로 이 강의를 수강신청했습니다. 이 강의에서 작성한 욜로 코드를 개인 포트폴리오 작성을 위해서 깃헙에 올리는 행위가 허용되는지 묻고 싶습니다. 이전에 인프런에 물어봤는데 강사님께 물어보라네요. 물론 출처는 적을 거고요. 그리고 이 강의에서 텐서플로우로 구현한 걸 제가 따로 파이토치로 구현할 생각입니다. 아마 이 과정에서 부분적으로 강사님의 코드나 아이디어 같은 것을 인용하거나 차용할 거 같은데 혹시 개인 깃헙에 올리는 행위가 허용되는지 그리고 된다면 어느 범위까지 되는지 알고 싶습니다. 읽어주셔서 감사합니다.
-
해결됨그림으로 쉽게 배우는 운영체제
프로세스 생성과 종료에서 질문2
.exe 파일을 실행 OS는 해당 프로그램의 코드영역과 데이터 영역을 메모리에 로드하고 빈 스택과, 빈 힙을 생성 PCB 생성 후 초기화 위 과정은 OS가 부팅된 후 0번 프로세스가 생성될 때 딱 한 번만 실행된다고 하셨습니다 여기서 궁금한 점이 0번 프로세스의 종류는 가리지 않는 것인가요??? 예를 들어, 제가 컴퓨터를 부팅한 직후 LoL.exe를 실행했다고 가정하면 0번 프로세스가 LOL 프로세스가 될 것입니다 이 때 다음 작업으로 웹브라우저를 더블 클릭하게 되면 웹브라우저 프로세스도 LOL.exe를 실행할 때 만들었던 0번 프로세스를 복사해서 만들어 지게 되는 것인가요?? (첫번째 질문) 만약 그렇다면 제가 LOL을 종료하면 0번 프로세스가 닫히게 되는데, 웹브라우저 프로세스 입장에서는 부모 프로세스가 닫히게 된 것이니까 바로 좀비 프로세스로 변하게 되는 것인가요??? (두번째 질문) 만약 위와 같은 가정이 참이라면 제가 컴퓨터를 부팅한 이후에 가장 먼저 실행한 프로세스가 뭔지에 따라서 (OS 부팅 후웹브라우저를 가장 먼저 실행해서 0번 프로세스로 만들고 그 이후에 많은 프로그램들을 실행해서 많은 자식 프로세스로 만들어 버리고 웹브라우저를 닫아버리면... 자식 프로세스들이 순식간에 다 좀비 프로세스로 변하므로) 그 이후에 만들어지는 프로세스들이 전부 좀비 프로세스가 될 수 있는 것인데 이 점이 이상합니다.
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
Dockerfile CMD form
안녕하세요 강사님. 강의 너무 잘듣고 있습니다!! 다만 52강, Dockerfile 작성 및 Image, Container 생성에서 CMD 명령어 관련한 질문이 있어요!! 혹시 Dockerfile의 CMD 명령을 입력할 때, list형태로 명령어를 입력하는 이유는 무엇인가요? 한 줄로 명령어를 입력하면 안 좋은 점이 있을까요?
-
미해결모의해킹 실무자가 알려주는, 파일 업로드 취약점 공격 기법과 실무 사례 분석 : PART 1
IIS 세미콜론 취약점 대응방안
IIS 세미콜론 취약점 대응방안중에 임의의 파일명과 검증된 확장자 바인딩이있다 하셨는데 정확히 어떻게 하는것인지 이해가 잘 되지않습니다ㅠ 예를들어서 좀더 설명해주실수있나요? 그리고 저렇게 하면 공격이 불가능하다고도 하셨는데 그것도 잘 이해가 되지 않네요 ㅠ 설명해주시면 감사하겠습니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
다양한 연관관계 매핑 PDF 오타
안녕하세요 영한님! 이번 강의도 감사히 열심히 듣고 있습니다. 다름이 아니라 제공된 강의자료 PDF 중 "다양한 연관관계 매핑" PDF의 제일 마지막 슬라이드 내용 중 오타가 있는 것 같아서 질문드립니다. 그 전 슬라이드에서는 @ManyToOne 주요 속성을 소개하며 아래 '다대일 관계 매핑'이라고 나와있습니다. 마지막 슬라이드 내요은 @OneToMany 주요 속성이므로 '일대다 관계 매핑' 이라고 나와야 할 것 같은데 슬라이드에는 '다대일 관계 매핑'이라고 나와있습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
웹 브라우저와 세션
안녕하세요. 웹 브라우저와 세션에 대해 질문을 드리려 합니다. @PostMapping("/login") public String loginV3(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletRequest request) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if (loginMember == null) { bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다."); return "login/loginForm"; } //로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성 HttpSession session = request.getSession(); //세션에 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); return "redirect:/"; } session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);를 통해 세션에 멤버 객체를 저장하였습니다. 그리고 아래 코드에서 세션에 저장된 정보를 조회하죠. 이 말은 웹 브라우저에서 세션 아이디를 전송해 주었다는 것인데, Thymeleaf에서는 세션 아이디를 쿠키에 넣어서 전송해 주는 코드가 없는 것 같은데, 어떻게 웹 브라우저에서 세션 아이디가 전송된 것인가요? @GetMapping("/") public String homeLoginV3Spring( @SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, Model model) { //세션에 회원 데이터가 없으면 home if (loginMember == null) { return "home"; } //세션이 유지되면 로그인으로 이동 model.addAttribute("member", loginMember); return "loginHome"; } 읽어주셔서 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
흐름이 이렇게 흘러가는게 맞나요?
1.컨테이너 생성 2.스프링 빈 생성 3.의존관계 주입 4.초기화 콜백 이렇게 완료가 되는걸로 알고있습니다. @Bean public NetworkClient networkClient() { NetworkClient networkClient = new NetworkClient(); networkClient.setUrl("http://hello-spring.dev"); return networkClient; } 이때 LifeCycleConfig.class에 있는 빈 정보들을 바탕으로 빈 생성하고 의존관계주입등을 하는걸로 알고있는데 여기서 질문이 스프링 컨테이너에 있는 빈은 return networkClient; 즉 리턴된 객체를 뜻하는건가요? 다음 질문은 NetworkClient networkClient = new NetworkClient(); 했을때 생성자가 호출이 되고 public NetworkClient() { System.out.println("생성자 호출, url = " + url); } 값주입?? 이 일어난후 networkClient.setUrl("http://hello-spring.dev"); 초기화 콜백이 일어나는거 같은데 맞나요?? @PostConstruct public void init() { System.out.println("NetworkClient.init"); connect(); call("초기화 연결 메시지"); }
-
해결됨코딩은 실전이다! - Git알못을 위한 깃린이코스(Git, Github 실습위주)
슬랙 초대 부탁드리겠습니다.
jibaek0513@gmail.com 슬랙 초대부탁드리겠습니다, 감사합니다.