묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
....
....
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
테스트 컨테이너를 하나 더 만드는게 일반적인가요?
강의 상에서 테스트용 컨테이너를 하나 더 생성하셨는데, 보통은 테스트 컨테이너를 생성해서 확인하는게 더 일반적인가요? 테스트를 위해 적지않은 크기의 이미지를 2개 만들지 말고, 실 서버컨테이너에서 command로 테스트 돌리고, 이게 통과해야 서버를 띄우는 등의 방법을 사용할 수 도 있을 것 같은데 실제로는 어떤방식이 더 선호되는 지 알 수 있을까요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
vue.js중급 강좌를 들으며 모달관련 질문이있습니다.
- 이전 질문들 중에 모달을 esc로 close하는 방법에 대해서 물어보는 질문이 있어서 참고하여 강사님께서 답변해주신 내용을 토대로 포커싱이 가능한 태그를 찾아 포커스를 주고 그 포커스를 통해 @keyup/down/press.esc="close 처리" 이렇게 코드를 구현하였습니다. 다만 이게 일회성으로 처음에만 포커스가된다는게 문제인데.. 모달창을 한번 팝업했다가 close한 다음 다시 팝업하면 autofocus가 되지 않아 두번째 팝업부턴 esc로 모달이 close되지 않습니다. (새로고침하고 초기시도에만 기능동작) 먼저, 제가 구현한 방식이 답변주신 내용에 부합한지 궁금하며, 혹시 추가적인 해결방안이 있을지 여쭙습니다.
-
미해결스프링 핵심 원리 - 기본편
스프링 빈 조회 기본에서 질문드립니다
아직 자바가 익숙치 않아 질문드리는데 여기서 예외처리가 어떻게 동작하는지 좀 더 자세하게 알려주실 수 있으실까요 ㅠㅠ @Test @DisplayName("빈 이름으로 조회 x") void findBeanByNameX(){// ac.getBean("xxxx", MemberService.class); org.junit.jupiter.api.Assertions.assertThrows(NoSuchBeanDefinitionException.class, ()-> ac.getBean("xxxx", MemberService.class));
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
인접행렬 생성 시 질문이 있습니다.
안녕하세요. 항상 좋은 강의 감사드립니다! 강의를 보기 전에 Array.from이 아닌 Array.fill만 사용해서 인접행렬 배열을 만들었더니 graph의 1행 2열에만 1값을 할당해도 전체 행의 2열에 1이 할당이 됩니다ㅜㅜ Array.fill()을 사용할 때 파라미터를 배열로 넘겨주면 동일한 주소의 배열이 채워진다고 보면 될까요...?
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
modal 창이 열리질 않습니다.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="container"> <div class="header-inner"> <header> <div class="header-logo"> <a href="#none"><img src="images/logo-header.png" alt="logo-head"></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> <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> <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 class="sub-back"></div> </div> </header> </div> <div class="content-inner"> <div class="slide"> <div> <a href="#none"><img src="images/slide-01.jpg" alt="slide1"></a> <a href="#none"><img src="images/slide-02.jpg" alt="slide2"></a> <a href="#none"><img src="images/slide-03.jpg" alt="slide3"></a> </div> </div> <div class="items"> <div class="news"> <div class="btn-inner"> <div class="btn"> <span>공지사항</span> </div> <div class="tab1"> <a class="open-modal" href="#none">산업대학교 동문회장배 자선골프대회<b>2016-09-12</b></a> <a href="#none">개교 100주년 기념 야외 오페라 초청<b>2016-09-10</b></a> <a href="#none">동문회장 및 운영위원장 후보자 추천<b>2016-09-09</b></a> <a href="#none">산업대학교 동문회장배 자선골프대회<b>2016-09-07</b></a> <a href="#none">진행위원회(정회원) 선발 결과 <b>2016-08-30</b></a> </div> </div> </div> <div class="gallery"> <div class="btn-inner"> <div class="btn"> <span>갤러리</span> </div> <div class="tab2"> <a href="#none"><img src="images/gallery-01.jpg" alt="gllery1"></a> <a href="#none"><img src="images/gallery-02.jpg" alt="gallery2"></a> <a href="#none"><img src="images/gallery-03.jpg" alt="gallery3"></a> </div> </div> </div> <div class="banner"> <a href="#none"><img src="images/banner.jpg" alt="banner"></a> </div> </div> </div> <div class="footer-inner"> <footer> <div class="copyright"> <div> <a href="#none">법적고지</a> <a href="#none">개인정보취급방침</a> <a href="#none">개인정보처리방침</a> </div> <div>상호명 : 산업대학교 대표자 : 송성훈 개인정보관리책임자 : 김보미 대리 사업장주소 : 서울특별시 중구 개항로 49</div> </div> <div class="family-site"> <select> <option value="">패밀리 사이트:</option> <option value="">산업대학교</option> <option value="">정보통신부</option> <option value="">과학기술연구원</option> </select> </div> </footer> </div> </div> <div class="modal"> <div class="modal-content"> <h2>2020년도 장기인턴십 참가학생 모집</h2> <p> 산업대학교 2020년도 장기인턴십 참가학생 모집에 참가할 학생을 모집하오니 많은 관심있는 학생들의 지원 부탁드립니다. 재학생 최종선발학생은 2020학년도 1학기 코업, 코업프로젝트 교과목을 반드시 수강해야 합니다. 졸업학점 6학점 인정되며 매칭기간으로 전화문의가 많아 통화가 어려우니 문의는 가급적 이메일로 부탁드립니다. 참고사항으로 2020학년도 1학기 교과목 수강신청이 불가한 졸업자, 2020년 2월 졸업 예정자 및 수료자는 지원 불가합니다. 착오 없으시길 바랍니다. 자세한 문의사항은 현장실습지원센터 홈페이지를 참고해주세요. </p> <div class="close-modal">x 닫기</div> </div> </div> <script src="script/jquery-1.12.4.js"></script> <script src="script/custom.js"></script> </body> </html> ============================================ @charset 'utf-8'; body{ margin: 0; background-color: #fff; color: #222328; font-size: 15; } color{ text-decoration: none; color: #222328; } a{ text-decoration: none; } .container{} .header-inner{ /*border: 1px solid black;*/ background-color: #eee; } header{ height: 100px; width: 1200px; margin: auto; position: relative; z-index: 5; } header > div{ /*border: 1px solid black;*/ height: 100px; } .header-logo{ width: 200px; float: left; line-height: 130px; } .navi{ width: 600px; float: right; margin-right: 20px; } .content-inner{} .slide{ width: 1200px; margin: auto; } .slide > div{ border: 1px solid green; height: 300px; } .items{ width: 1200px; margin: auto; overflow: hidden; margin-top: 20px; } .items > div{ height: 200px; float: left; box-sizing: border-box; } .news{ width: 425px; } .gallery{ width: 425px; } .banner{ width: 350px; } .footer-inner{ /*border: 1px solid red;*/ background-color: #eee; } footer{ width: 1200px; margin: auto; overflow: hidden; } footer > div{ height: 100px; /* border: 1px solid black;*/ float: left; box-sizing: border-box; } .copyright{ width: 1000px; float: left; } .copyright div{ height: 50px; /* border: 1px solid black;*/ text-align: center; } .copyright div:nth-child(1){ padding-top: 15px; box-sizing: border-box; } .copyright div:nth-child(1) a:hover{ text-decoration: underline; } .family-site{ width: 200px; line-height: 100px; text-align: center; } /*슬라이드*/ .slide{ overflow: hidden; } .slide > div{ width: 3600px; font-size: 0; animation: slide 10s linear infinite; } @keyframes slide{ 0% { margin-left: 0; } 30% { margin-left: 0; } 35% { margin-left: -1200px; } 65% { margin-left: -1200px; } 70% { margin-left:-2400px; } 95% { margin-left:-2400px; } 100% { margin-left: 0; } } /*공지사항*/ .btn-inner{ width: 95%; margin: auto; } .btn{} .btn span{ display: inline-block; border: 1px solid black; width: 100px; text-align: center; padding: 5px; border-radius: 5px 5px 0 0; border-bottom: none; background-color: #fff; margin-bottom: -1px;----- } .tab1, .tab2{ border: 1px solid black; padding: 0 15px;----- height:160px; } .tab1 a{ display: block; padding: 5px; border-bottom: 1px solid #ddd; text-decoration: nonel } .tab1 a:last-child{ border-bottom: none; } .tab1 a b{ float: right; font-weight: normal; } .tab2{ text-align: center; padding-top: 23px; padding-bottom: 10px; } .tab2 img{ width: 120px; } .banner img{ width: 95%; } /*navi*/ /* .menu{} .menu li{} .menu li > a{} .sub-munu{} .sub-menu a{} */ .menu{ list-style: none; padding: 0; } .menu li{ /*border: 1px solid black;*/ display: black; float: left; width: 25%; box-sizing: border-box; margin-top: 51px; text-align: center; } .menu li > a{ border: 1px solid black; display: block; padding: 5px; transition: 0.5s; } .menu li:hover > a{ background-color: #000; color: #fff; } .sub-menu{ /*background-color: #fff;*/ /*border: 1px solid black;*/ display: none; } .sub-menu a{ display: block; padding: 5px; color: #fff; transition: 0.5s; } .sub-menu a:hover{ background-color: #fff; color: #222328; } .sub-back{ width: 1200px; height: 150px; background-color: #000; position: absolute; top:100%; left: 0; z-index: -10; display: none; } /*modal*/ .modal{ background-color: rgba(0, 0, 0, 0.46); position: absolute; top:0; left: 0; width: 100%; height: 100%; z-index: 100; display: none; } .modal-content{ width: 350px; background-color: #fff; position: absolute; top:50%; left:50%; transform: translate(-50%, -50%); padding: 20px; border-radius: 20px; box-shadow: 0 0 20px rgba(0, 0, 0.13); } .close-modal{ float: right; border: 1px solid black; border-radius: 5px; padding: 0 10px; } ============================================= /*navi*/ $('.menu li').mouseenter(function(){ $('.sub-menu, .sub-back').stop().slideDown() }) $('.menu li').mouseleave(function(){ $('.sub-menu, .sub-back').stop().slideUp() }) /*modal*/ $('.open-modal').click(function(){ $('.modal').fadeIn() }) $('.close-modal').click(function(){ $('.modal').fadeOut() })
-
해결됨실전 리액트 프로그래밍
질문 드립니다!
안녕하세요 재승님! 영상 참 재밌고 유익하게 보고 있습니다. useEffect에 종속성 배열을 없애고 사용하는 활용법을 알려주셨는데요. 여기서 궁금증이 생각나서 글을 쓰게 되었습니다.. 종속성 배열을 없애고 콜백함수 내부에서 조건을 통해 로직을 핸들링하는 경우에 useEffect가 리액트에 의해 실행? 될텐데요. 이러한 경우 콜백함수는 매번 호출되고 내부로직에서 조건을 분기할 것 같아요. 제가 이해한 내용으로는 이 경우가 조금 불필요한 동작이라고 생각이 드는데요. 여기서 종속성배열과 콜백함수 내부 조건을 함께 사용하면 좋을 것 같다고 생각 했어요. 그때 종속성배열을 관리하는 리소스와 비교하였을 때 어느쪽에 중점을 두어 프로그래밍하면 좋을지 궁금증이 생겼습니다... -> 그런데 제가 생각한 것이 틀렸다면 useEffect의 실행동작을 잘 이해하지 못했을 것 같은데요. 리액트에 의해서 해당 useEffect 훅의 동작 순서가 온다면 종속성 배열로 콜백함수의 불변성만 지켜주는 것인가요? 그렇다면 매번 콜백함수를 실행해서 별로 상관 없을 것 같기두 하구요.. 여러개의 종속성 값으로 useEffect나 useMemo, useCallback류의 훅이 여러번 호출되는 것 때문에 조금 스트레스 였는데.. 이번 강의를 보고 코드 개선 아이디어에 도움이 많이 되었습니다. 주절주절 쓰다보니 길어졌네요.. 두서없이 글로만 쓰려니 정리가 안되고 있슴다ㅎㅎ; 양해 부탁드립니다; 후배에게 답변해주시는 것 같이 편하게 답변해주시면 좋겠습니다. 항상 감사드립니다!!
-
미해결인공지능 기초수학
강의 교안 부탁드려요
안녕하세요. 강사님 강의 교안 부탁드립니다. 감사합니다. jangmi4rang@naver.com
-
미해결홍정모의 따라하며 배우는 C++
char배열에서의 배열명과 int 배열에서의 배열명 출력하기
안녕하세요. int arr[5] = {1,2,3,4,5}; cout << arr << endl; => 이렇게 하면 배열명 arr의 주소값 이 출력됩니다. (저의 지식으로는 배열명이 포인터(주소를 저장하는 변수)이기 때문에 위의 출력은 이해가 갑니다만, char배열에서는 다르게 출력이 되어서 의문입니다.) 하지만 char word[6] = "hello"; cout << word << endl; => 이렇게 하면 hello가 출력되는데 왜 이렇게 되는지 알고 싶습니다... 이 강의 질문 내용 중에 교수님께서 답변하신 내용이 전통적으로 char배열명은 value값으로 출력한다고 하셨는데, 이 답변이 맞는 건가요?
-
미해결자바 스프링부트 활용 웹개발 실무용
modelAndView null 현상
menuType을 postHandle쪽에 설정해주셨는데 동일하게 했더니 페이지 이동때나 controller를 통해 이동되는경우에 호출되는것 같은데 2번또는 3번은 기본적으로 호출되는것 같은데 최초는 문제가 안되는데 2번또는 3번째는 modelAndView가 null 로 되어 에러가 지속적으로 뜨는것 같습니다. 화면작동상에는 문제가 없는데 지속적으로 이클립스 콘솔에 에러로그가 올라오네요 Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.ModelAndView.addObject(String, Object)" because "modelAndView" is null if (handler instanceof HandlerMethod) { logger.info("modelAndView : {}", modelAndView); modelAndView.addObject("menuTypes", MenuType.values()); }
-
미해결[라즈베리파이] IoT 딥러닝 Computer Vision 실전 프로젝트
dropbox 이미지 저장 참고자료
안녕하세요. 강의가 만들어진지 좀 돼서 그런지 세부 설정 부분이 좀 달라서 안됐던 부분이 있기에 다른 분들 참고하시라고 글 남깁니다 :) 강의 내용대로 따라오신다음에 실행을 하면 dropbox에서 허용하지 않는다는 듯한, 어떤 문제가 발생했다는 에러가 발생하는데, 이는 아래 방법으로 해결 가능합니다. token을 만들었던 dropbox 개발자의 웹페이지에서 자신이 만든 앱에 들어가서 setting 옆에 있는 permissions 탭을 눌러줍니다. 그러면 안에 'Files and folders'가 빈박스로 돼있는걸 확인할 수 있을겁니다. 거기 4가지를 모두 체크해주고 아래 submit을 눌러줍니다. 그리고 Setting에 돌아가서 token을 다시 발급한 뒤 DL51 소스코드에 적용해줍니다. 그러면 에러 없이 실행되며, firebase와 dropbox에 들어간 것을 확인할 수 있습니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
저거 메뉴얼 어떻게 보는 건가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드의 효율성
이렇게 코드를 짰는데 잘 짠 코드인지 궁금합니다. 시간복잡도는 O(n2)이 되는 것인가요 !? function solution(arr) { // 각 행의 합 = row, i는 고정 j는 0~배열의 길이만큼 // 각 열의 합 = column, j는 고정 i는 0~배열의 길이만큼 // 대각선의 합 = cross i와 j가 같아야한다. // 거꾸로 대각선의 합 = reverseCross, arr.length - i - 1 let row = new Array(arr.length).fill(0); let column = new Array(arr.length).fill(0); let cross = 0; let reverseCross = 0; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { if (i === j) { cross += arr[i][j]; reverseCross += arr[i][arr.length - i - 1]; } row[i] += arr[i][j]; column[i] += arr[j][i]; } } return Math.max(...row, ...column, cross, reverseCross); }
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
A3 ~ A4 헤더 영역
선생님께서 알려주신 방법대로 A1 ~ A2 타입은 잘 해결하였습니다! 그런데 A3 ~ A4 공개문제에서 헤더 로고 포토샵 지시 사항에서, " Header 폴더에 제공된 로고를 삽입한다. 로고의 색은 과제명에 맞게 반드시 변경하여 한다"에서 색 변경은 어떤 걸 의미하는 걸까요.. 예를 들어 이미 header 폴더에 제공된 로고 사진 +로 워드 타입 로고를 색 변경해서 새로 생성해서 합치라는 의미인 건가요.. 포토샵 문제로 감점될 까봐 완벽하게 이해하고 싶은데 A3 ~ A4 타입의 헤더 로고 지시사항 자체가 이해가 되지 않아서 어떻게 해결해야 되는 지 궁금합니다 ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
libs가 없어서 clean 해주고 다시했는데 안되요
수업 과정대로 따라하다가 libs파일이 없다는것을 발견하였는데요 다른 질문을 참고하여 clean 해주고 다시 해보았는데 안되네요 이런 오류가 뜨는데 어떻게 해야할까요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
html에서 DTO에담긴 객체형식이 전송가능할까요?
안녕하세요? 강의 잘 듣고있습니다. html에서 DTO에담긴 객체형식이 전송가능할까요? String city, street, zipcode가 포함된 객체 Address를 담은 회원등록DTO를 이용해서 회원등록기능을 만들고있는데요, html에선 form.address.city, form.address.street이런식으로 , 위치를 지정하면 될거라 생각하였는데, Strin이나 int 등은 값이 잘 저장되는데, address에 속한 값들은 자바에선 null로만 받아져요. 반대로 조회할때는 form.address.city, form.address.street를 이용하니 문제없이 조회가 되었습니다. 즉 자바에서 html로는 DTO안의 객체형식이 제대로 전송되는데, html에서 자바로는 DTO의 객체형식이 전송이 안되는 상태인데, 애초에 등록페이지에 모델로 해당 DTO를 form으로 전송시켜놓았고, 그래서 form.address.city으로 위치를 지정해서 값을 저장하면 문제없이 될거라 생각했는데, 어디서 잘못된걸까요? 관련코드입니다. DB 1,2행은 수동으로 추가하였습니다 DTO public class CompanyDTO { private Long id; private String name; private Address address; Controller @GetMapping("register")public String companyRegister(Model model) { model.addAttribute("form", new CompanyDTO()); return "company/register";}@PostMapping("register")public String companyRegister2(CompanyDTO companyDTO) { companyService.saveCompany(companyDTO); return "redirect:/company/list";} @GetMapping("list")public String companyList(Model model) { List<Company> companyList = companyService.findAll(); List<CompanyDTO> companyDTOList = companyService.transDTOList(companyList); model.addAttribute("company_list", companyDTOList); return "company/list";} html register(등록부분) > 이 부분이 안됩니다! <form th:action="@{register}" th:object="${form}" method="post"> <div class="form-group"> <label th:for="name">회사명</label> <input type="text" th:field="*{name}" class="form-control" placeholder="이름을 입력하세요"> </div> <div class="form-group"> <label th:for="city">도시</label> <input type="text" th:field="*{address.city}" class="form-control" placeholder="주소를 입력하세요"> </div> html list(조회부분) > 정상동작합니다 <tr th:each="company : ${company_list}"> <td th:text="${company.id}"></td> <td th:text="${company.name}"></td> <td th:text="${company.address.city}"></td> 감사합니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
index.html문의
무료강의인 스프링 입문강의를 들었을때, 강사님께서 매핑되는 html화면이 없을경우에는 resource -> static -> index.html을 자동으로 찾아서 화면에 띄어준다고 하셨는데요 꼭 resource -> static 안에 없어도 되는건가요? 이번 강의에서는 main -> webapp -> index.html경로에 있는데 welcome페이지로 index.html이 동작하길레요
-
미해결모던 안드로이드 - 코틀린과 Jetpack 활용
getAll을 직접부를 때 무한무프 질문있습니다.
getAll을 직접 쓸 때에는 무한루프고 todos를 생성해서 Textview에 연결 할 때는 정상동작하는 이유가 햇갈립니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
아래와같은 에러가 발생합니다.
[1] Error from chokidar (/Users/kyungwonhwang/Documents/boiler-plate/client/node_modules/@babel/runtime/helpers/esm): TypeError: anymatch is not a function [1] Error from chokidar (/Users/kyungwonhwang/Documents/boiler-plate/client/node_modules/@pmmmwh/react-refresh-webpack-plugin/client): TypeError: anymatch is not a function [1] Error from chokidar (/Users/kyungwonhwang/Documents/boiler-plate/client/node_modules/@pmmmwh/react-refresh-webpack-plugin/client/utils): TypeError: anymatch is not a function [1] Error from chokidar (/Users/kyungwonhwang/Documents/boiler-plate/client/node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime): TypeError: anymatch is not a function [1] Error from chokidar (/Users/kyungwonhwang/Documents/boiler-plate/client/node_modules/accepts): TypeError: anymatch is not a function 클라이언트 서버에서 위와같은 에러가 발생합니다. 깃헙 주소 : https://github.com/gof9325/boiler-plate/tree/master
-
미해결Vue.js + TypeScript 완벽 가이드
클래스 문법에 대한 의견
안녕하세요!항상 잘 보고 있습니다. 클래스 문법을 권장하지 않는다는 의견을 주셨는데요!혹시 커뮤니티나 캡틴 판교님이나 주변 개발자들도 같은 의견일까요?!여쭤보는 가장 큰 이유는 Vue CLI 팀에서 프로젝트를 만들 때 컴포넌트 스타일 방식을 기본값으로 해둔 이유가 있을거 같아서 입니다! Use class-style component syntax? (Y/n)