묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AI 포트폴리오 만들기 - Airbnb 클론 프로젝트
YOLO 대신 CenterNet을 선택하신 이유가 궁금합니다.
안녕하세요. 강사님. 강의 잘 보고 있습니다. CenterNet에 대한 설명을 듣던 중 한 가지 의문점이 생겨 질문드립니다. YOLO 도 One-Stage model로 빠른 속도를 자랑하고 있는 데, One-Stage Model 에서 특별히 CenterNet을 채택하신 즈된 이유가 궁금합니다. Key-Point나 중복된 anchor prediction 방지를 위해서인지.. YOLO 모델이 이런 부분에선 부족한 것인지.. 의문이 들어서 질문 드립니다. ㅎㅎ 항상 감사드립니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
request body json v5에서 nullpointer
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]requestBodyJsonV5 메서드에서 HelloData data = httpEntity.getBody(); 이렇게 http body에서 객체에 값을 넣는 것까지 하였습니다. 그런데 log.info를 사용하는 부분에서 data.getUsername이 NullPointerException이 나올 수 있다고 warning이 뜹니다. 그래서 Optional.ofNullable(data.getUsername()) 라고 사용해 보았는데 아직도 이 warning이 나옵니다. 그래서 제가 Optional을 잘못 사용한 것인지 어떻게 해야 좋은 방법인지 조언을 구합니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
페이징 API를 이용해서 페이징 구현
안녕하세요, 영한님! jpa 페이징 api를 이용해서 간단한 페이징 화면을 구현해 봤는데 잘못된 부분이 있는지 궁금해서 질문드립니다! <memberList.html> <div class="pagination"> <span th:each="pageNum : ${pageList}" th:inline="text"> <a th:href="@{'/members?page=' + ${pageNum}}">[[${pageNum}]] </a> </span></div> 컨트롤러에서 받아온 pageList를 뿌려주고 특정 페이지를 누르면 해당 페이지로 이동하게 만들었습니다. <MemberRepository.java> // 전체 회원 조회public List<Member> findAll(int page) { return em.createQuery("select m from Member m order by m.id desc", Member.class) .setFirstResult((page-1) * 10) .setMaxResults(10) .getResultList();}// 전체 게시물의 개수 (100개)public int boardCount() { return em.createQuery("select m from Member m", Member.class).getResultList().size();} 페이지 별로 10개씩 끊어서 가져오는 메서드와 페이지 수를 구하기 위해 전체 게시물의 개수를 구하는 메서드 2개를 추가했습니다. <MemberService.java> // 페이지 별 회원 조회public List<Member> findMembers(int page) { return memberRepository.findAll(page);}// 페이지의 개수public int[] pageList() { int totalPage = memberRepository.boardCount() / 10; totalPage = ((memberRepository.boardCount() % 10) == 0) ? totalPage : totalPage + 1; int[] pages = new int[totalPage]; for(int i = 0; i < totalPage; i++) { pages[i] = i + 1; } return pages;} findMembers(page) : 페이지에 해당하는 멤버 리스트를 조회 pageList() : 전체 페이지의 개수 리턴 <MemberController.java> @GetMapping("/members")// 처음 리스트를 들어가면 Page 번호는 1번이 디폴트!public String list(Model model, @RequestParam(value = "page", defaultValue = "1") int pageNum) { List<Member> members = memberService.findMembers(pageNum); // 페이지 번호 별 게시물 int[] pages = memberService.pageList(); // 페이지 개수 model.addAttribute("members", members); model.addAttribute("pageList", pages); return "members/memberList";} @RequestParam을 이용해서 처음 /members를 실행한 경우 1번 페이지를 출력하게 만들었고, 페이지 별 멤버리스트와 전체 페이지의 개수를 model에 담아서 화면쪽으로 넘겨서 구현했습니다. 잘못 구현하거나 고칠 부분이 있는 지 궁금합니다..! 아래는 결과화면 입니다!
-
미해결실전! Querydsl
QUERYDSL rank 함수 문의
안녕하세요 강사님 querydsl 에서 rank 함수 사용법 문의드립니다. 개인적으로 검색해본 결과는 SqlQueryFactory를 사용해서 SqlExpression을 쓰면 되던데.. 해당 내용으로 변경해서 querydsl 을 호출하니 엔티티 및 속성 맵핑이 제대로 안되더라구요 예를 들어 엔티티명이 Customer , 실제 테이블명 CUST 일 경우, Customer로 쿼리를 날려 테이블이 존재하지 않는다고 오류가 발생합니다. 어떻게 사용해야할까요? ㅠㅠ 답변 부탁드립니다. 감사합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
DispatcherServlet 등록
안녕하십니까 강사님 수업을 듣는 중에 DispatcherServlet이 실행되는 과정을 말씀해주셨는데 제가 이해한 내용이 맞는지 궁금하여 여쭤봅니다. 1. DispatcherServlet의 부모인 FrameworkServlet의 service메서드를 실행하면서 누가 실행시키는 것인지는 모르지만 DispatcherServlet의 doDispatch 메서드가 실행이 되면서 handler를 찾고 adapter를 찾게 된다. 2. DispatcherServlet을 서블릿으로 자동으로 등록하신다고 말씀하셨는데 어떻게 등록하지?라는 궁금점이 생겨 찾아보았습니다. https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-servlet-config 에서 ServletInitializer가 결국 WebApplicationInitializer를 구현하는데 이 인터페이스는 'DispatcherServlet 의 위치를 지정하는 메서드를 재정의하여 DispatcherServlet을 등록하는 것을 훨씬 쉽게한다'고 하는데, ServletInitializer에 의해 등록이 되는거로 생각하면 되는건가요??? 3. servelet은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버 측 프로그램이라고 알고 있는데 DispatcherServlet을 서블릿으로 자동으로 등록한다는 의미는 DispatcherServlet을 이용하여 웹 페이지를 동적으로 생성한다 라는 말과 같을까요?? 4. 강의에서 클래스 레벨에 @Component만 붙게 된다면 핸들러 매핑을 따로 해줘야한다. 라는 말씀을 하셨을 때는 이해가 되지 않았는데 강의를 들어보니 @Component는 단지 빈으로 등록하는 것이고, 핸들러 조회를 하게 되면 조회가 되지 않는다. 따라서 @RequestMapping을 사용하여 핸들러 매핑을 해줘야 DispatcherServlet이 핸들러를 조회할 때 조회가 된다 라고 이해하면 될까요?? 읽어주셔서 감사합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의자료 깃허브에없는데 html이나이런거어디서 받아야하나요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확 내용이곧제목입니다1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit#heading=h.w2tomwsznga7)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://docs.google.com/document/d/1xCQKit-1V6l6ObeCe49St33RHPzLF_P_c3o7aSDTKs0/edit#heading=h.7dhnp46ven0v)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
parentPort.close() 질문입니다
const {Worker, isMainThread, parentPort} = require('worker_threads');if (isMainThread) { const worker = new Worker(__filename); worker.on('message', (value) => console.log('워커로부터', value)); worker.on('exit', () => console.log('워커 끝')); worker.postMessage('ping');}else { parentPort.on('message', (value) => { console.log('부모로부터', value); parentPort.postMessage('pong'); parentPort.close(); })} 이 코드에서 한개의 워커스레드는 parentPort.close()를 통해서 close가 됬다는것을 mainThread에 알려줘야만 worker의 exit 이벤트 (worker.on('exit'))가 실행되는걸로 이해를 했습니다 왜냐하면 저 코드에서 parentPort.close()만 없애면 프로세스가 끝나지않았기 때문입니다. 이와달리 const {Worker, isMainThread, parentPort, workerData } = require('worker_threads');if (isMainThread) { const threads = new Set(); threads.add(new Worker(__filename, { workerData: { start: 1} })); threads.add(new Worker(__filename, { workerData: { start: 2} })); for (let worker of threads) { worker.on('message', (value) => console.log('워커로부터', value)); worker.on('exit', () => { threads.delete(worker); if (threads.size === 0) { console.log('워커 끝') } }); }}else { parentPort.postMessage(workerData.start + 100);} 워커스레드를 여러개 만들어서 간단히 100을더하는 코드는 parentPort.close()해주지 않았음에도 불구하고 worker의 exit이벤트(worker.on('exit'))를 호출할수 있고 프로세스가 정상적으로 종료가 되는지 궁금합니다 threads Set에서 워커스레드를 지워줬으니까 그런것 같은데 애초에 parentPort.close()해주지 않았는데 exit이벤트로 어떻게 들어가는지가 잘 이해가 안갑니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
비바도 구매처
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 맛비님 수업과는 관계된 내용이 아니라 죄송스럽지만 혹시 비바도를 한국에서 구매하셔서 쓰시나요? 회사에 적용하려고 하는데 구매처가 안나와서요.
-
미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
godoc // referece 실행에 대하여
1) 강의 대로 환경변수 설치까지 했는데 cmd 창에서 godoc 커맨드가 실행되지 않습니다. 2) Atom에서 패키지 다 설치했는데 함수에 커서 대고 alt-D를 눌러도 Reference 항목에 Generating documentation...만 출력되고 이후 되지 않네요. 3) 현재 쓰는 pc가 rtx3090인데 우측 에러들 혹은 추후 Golang을 사용하는데 충돌 혹은 연관이 있을까요? 런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결머신러닝 엔지니어 실무
쿠베플로우 파이프라인 Part2-2 강의 오디오 싱크 이슈
쿠베플로우 파이프라인 Part2-2 강의 5분 10초 경에서 음성이 영상보다 5초 정도? 빠르게 나오는 것 같습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
em.persist 관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 항상 수준 높은 강의에 감사드립니다. 몇 가지 의문점이 생겨서 질문하고자 작성하게 되었습니다. test에서 @Transactional 어노테이션이 롤백을 하신다고 강의에서 말씀하셨는데, 궁금한 점은 em.persist를 한 시점에서는 영속화 한 객체에 대해서 id 값은 영속성 컨텍스트에서 관리되면서 자동으로 부여되는건가요? db 에 isnert 하기 전부터 이미 id 값이 부여되서 관리되고 있는지 궁금합니다. 감사합니다.
-
미해결애플 웹사이트 인터랙션 클론!
sticky 와 fixed의 차이를 정확히 모르겠어요;;
기능은 동일한것 같은데 애니메이션을 쓰려면 fixed가 필요하는 건가요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
선생님 비교하면서 해도 이상하게 되어서 질문드립니다!
선생님 코드를 계속 비교하면서 해봤는데도 이렇게 나와서 어떤게 잘못됐는지 질문드려요! <html> <head> <title>그랩마켓</title> <link href="index.css" type="text/css" rel="stylesheet" /> </head> <body> <div id="header"> <div id="header-area"> <img src="images/images/icons/logo.png" /> </div> </div> <div id="body"> <div id="banner"> <img src="images/images/banners/banner1.png" /> </div> <h1>판매되는 상품들</h1> <div id="product-list"></div> </div> <div id="footer"></div> </body> <script> var products = [ { name: "농구공", price: 100000, seller: "조던", imaheUrl: "images/images/products/basketball1.jpeg", }, { name: "축구공", price: 50000, seller: "메시", imaheUrl: "images/images/products/soccerball1.jpg", }, { name: "키보드", price: 10000, seller: "그랩", imaheUrl: "images/images/products/keyboard1.jpg", }, ]; let productsHtml = ""; for (var i = 0; i < products.length; i++) { let product = products[i]; productsHtml = productsHtml + '<div class="product-card">' + "</div>" + '<img class="product-img" src="' + product.imageUrl + '"/>' + "</div>" + '<div class="product-contents">' + '<span class="product-name">' + product.name + "</span>" + '<span class="product-price">' + product.price + "원" + "</span>" + '<div class="product-seller">' + '<image class="product-avatar" src="images/images/icons/avatar.png"/>' + "<span>" + product.seller + "</span>" + "</div>" + "</div>" + "</div>"; } document.querySelector("#product-list").innerHTML = productsHtml; </script> </html>
-
미해결비트코인 알고리즘 트레이딩 봇 개발
close1 close2 차이
안녕하세요 강사님 강의 잘 보고 있습니다. 반복문이 돌 때 제가 차트에 대한 이해도가 부족해서 그러는데 close1이 아니라 왜 close2를 쓰는지 궁금합니다. 혹시 추가설명 좀 해주실 수 있으신가요?ㅠ 25분에 close price가 700원이라고 치면 25분에 sma7는 25분을 포함한 과거 7분에 대한 값인걸 데이터로 확인했는데요 근데 왜 굳이 26분의 close price 을 가져와서 사용하는가용?? 그냥 이해가 안되서요
-
해결됨코딩은 실전이다! - Git알못을 위한 깃린이코스(Git, Github 실습위주)
슬랙 초대 부탁드립니다!
yjw4960@gmail.com 초대 부탁드립니다!
-
미해결15일간의 빅데이터 파일럿 프로젝트
탐색4단계 -주제5 단계 질문있습니다.
주제 5 workflow를 실행했는데 진행률이 저렇게 빨간색으로 뜨네요; 일단 위와 같이 select문은 잘 실행되어서 무시하고 계속 진행했는데 위와 같이 more /home/pilot-pjt/item-buy-list/000000_0 가 실행되지 않습니다. 그럼 workflow 과정에서 문제가 있었다고 보면 될까요? 혹시 주제 2~4단계에서는 working_day=20200322 를 입력했지만, 주제 5 에서는 저걸 입력하라는 말이 없어서 안 넣었는데 그 문제일까요? 일단 쿼리들은 보시면 아시겠지만 잘 복붙했습니다!
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
[팁]Chrome User Agent 아는법
1. 크롬 실행 2. F12를 누르고 개발자 모드에 들어감 3. Elements / Console / Sources / Network >> 탭에 있는 것들 중 Console을 선택한다. 4. Console창 내부에 navigator.userAgent 를 입력하면 현재 사용 중인 환경 검색가능
-
미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
'+='를 하는 이유는 무엇인가요?
순서도를 그릴때 변수 numOne과 numTwo에 숫자를 저장한다인데 +=을 사용한 부분을 이해 못했습니다! ㅠㅠ
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 수정 문의
대표값 오류 수정 강의 잘 보았습니다. 그러면 기존 강의에 작성한 round 함수 부분 코드 수정을 어떻게 해야하는지 알려주세요~! ave=round(sum(a)/n) 이부분 입니다.
-
미해결Vue로 Nodebird SNS 만들기
도메인 연결 중 잘못 연결 된것 같아 질문드립니다
안녕하세요 제로초님 ㅜ 도메인 연결중에 뭔가 잘못됬는데 에러가 다양하게 떠서 무엇이 문제인지 햇갈려 질문드립니다 ㅜ route 53을 통하여 연결을 하였고 이렇게 연결을 해놓았습니다 그런데 여기 보시면 제가 쓴글이 아닌글이 올라 와있는 페이지로 들어와 지네요 그리고 콘솔에는 처음보는 에러가 뜹니다 ㅜ 프로필 이나 로그인 버튼을 누르면 COLS에러가 뜨구요 무엇이 문제인지 어디가 잘못된건지 햇갈려 질문드립니다!ㅜ mysql 확인해봐도 분명 저런 아이디로 글을 올린 데이터는 찾아 볼수가 없습니다. 무엇이 잘못된걸까요 ㅜ 지금계속 진행 중에 있는데 ㅜ front/nuxt.config.js에 axios 설정한것을 보니 axios: { browserBaseURL: process.env.NODE_ENV === "production" ? "http://api.moonsns.com" : "http://localhost:3085", baseURL: process.env.NODE_ENV === "production" ? "http://api.moonsns.com" : "http://localhost:3085", https: false, }, 이렇게 되어있고, back/app.js에 확인해보면 const express = require('express'); const cors = require('cors') const passport = require('passport') const session = require('express-session') const cookie = require('cookie-parser') const morgan = require('morgan') const hpp = require('hpp') const helmet = require('helmet') const dotenv = require('dotenv') const prod = process.env.NODE_ENV === 'production' const db = require('./models') const passportConfig = require('./passport'); const userRouter = require('./routes/user') const postRouter = require('./routes/post') const postsRouter = require('./routes/posts') const hashtagRouter = require('./routes/hashtag') const app = express(); dotenv.config(); db.sequelize.sync(); passportConfig(); if (prod) { app.use(helmet()) app.use(hpp()) app.use(morgan('combined')) app.use(cors({ origin: 'http://vue.nodebird.com', credentials: true, })) } else { app.use(morgan('dev')) app.use(cors({ origin: 'http://localhost:3080', credentials: true, })) } app.use('/', express.static('uploads')) app.use(express.json()); app.use(express.urlencoded({ extended: false})) app.use(cookie(process.env.COOKIE_SECRET)) app.use(session({ resave: false, saveUninitialized: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, domain: prod && '.nodebird.com', } })); app.use(passport.initialize()); app.use(passport.session()); app.get('/', (req, res) => { return res.status(200).send('hello backend') }) app.use('/user', userRouter) app.use('/post', postRouter) app.use('/posts', postsRouter) app.use('/hashtag', hashtagRouter) app.listen(prod ? process.env.PORT : 3085, () => { console.log(`백엔드 서버 ${prod ? process.env.PORT : 3085}번 포트에서 작동중`) }) 이런 식으로 설정되어 있는데 저 nodebird.com 이라는 주소가 연결한 도메인과 달라서 나타나는 증상일 수 있는건가요??