묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링부트 시큐리티 & JWT 강의
필터 동작 순서에 따라 login결과가 달라지는 이유
안녕하세요. 선생님 좋은 강의 제공해주셔서 감사합니다.선생님 덕분에 거의 마지막 강의까지 진행하고 있습니다. 그러다가 25강에서 '/login'요청에서 response헤더에 토큰이 포함되었음에도 불구하고 자꾸 404에러가 뜨는 것을 확인하였습니다. 확인 결과 SecurityConfig에서 아래의 코드를 넣느냐 빼느냐에 따라서 결과가 달라지는데요. 여기서 2가지 이해가 가지 않는 점이 생겼습니다.필터 동작 순서를 바꾼다고 해도 결국 그 뒤에 FiterChain이 동작하기 때문에 MyFilter3에서 정상적으로 처리하고 FilterChain으로 넘어갔다면 '/login' 요청도 제대로 처리되어야 하는거 아닌가요?@Bean SecurityFilterChain filterChain(HttpSecurity http) throws Exception { // http.addFilterBefore(new MyFilter3(), SecurityContextPersistenceFilter.class);선생님께서 포스트맨으로 로그인 시도하신 것을 보면 password가 일치하지 않을 경우 401 에러가 뜨던데 저 같은 경우에는 password가 일치하든 불일치 하든 상관없이 http body에는 공백이 뜨고 헤더에 토큰이 반환되느냐 마느냐의 차이만 있고 콘솔에 아래처럼 인증에 실패했다는 로그만 뜨는데 왜 저는 결과가 다르게 뜰까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
9번 모두의 약수 for문 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 처음 하는 c++수업인데 좋은 강의 잘 듣고 있습니다.선생님께서 말씀하신 i의 배수를 통해 개수를 구한다고 하셨는데for (int i = 1; i <= a; i++) { for(int j=i; j<=a; j=j+i) { cnt[j]++; }for(j=i; j<=a; j=j+i)부분 에서 j=j+i가 어떻게 i배수로 되는지 이해가 되질 않습니다. 제가 알기론 증감 부분인데 그러면 j=j+i에서 i=1, j=1일때 j=1+1로 2가 되면서 1~2로 cnt[1] cnt[2]에만 cnt[j]에 1씩 들어가고i=2일떄 j=2가 되면서 j=2+2=4가 되는데 그러면cnt[2]=2 cnt[4]=1이 되는게 맞는건가요?
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
테이블 관계 질문한가지 있습니다!
안녕하세요. 강좌를 바탕으로 개인적으로 토이 프로젝트를 만들어보려고 하고있는데요.지도에 마커로 위치를 표시할수 있고, 마커 하나당 게시글 하나를 포함합니다. 게시글에는 제목, 설명, 사진이 들어갑니다. 프론트에서 지도화면에서는 마커들을 표시하고 마커 하나를 눌렀을때 해당하는 게시글과 사진을 보여주고 싶습니다. 마커 테이블과 게시글 테이블을 만들어서 one to one 관계가 좋을까요, 아니면 이런경우 하나의 테이블에 마커와 게시글 정보를 넣으면 될까요? chatGPT를 사용해봤는데 답변이 두가지입니다.Marker와 Post 테이블 간에 일대일 (one-to-one) 관계를 설정하는것이 좋다. Marker와 Post 테이블을 조인하여 필요한 정보를 가져올 수 있다.하나의 테이블에 마커와 게시글 정보를 함께 저장하고, 해당 정보를 조회할 때는 필요한 컬럼들만 선택하여 조회하는 것이 좋다. 마커 정보와 게시글 정보가 함께 저장되므로, 마커를 클릭하여 게시글 정보를 조회할 때 JOIN 연산이 필요하지 않아 성능상 이점이 있다. 테이블 구조를 어떻게 짜는것이 맞는것인가요? 그리고 테이블 구조 짜는것이 어려운데 이런것을 판단하기 위해 어떻게 학습하면 좋을까요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
봉우리문제 if문에서 && 연산자
선생님께서 풀어주신 풀이에서if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=arr[i][j]){flag = 0;break;}if(flag) answer++; 이 부분에서 질문이 있습니다. if 문에서 nx, ny가 각각 0이상이고 n미만이면서 arr[i][j]보다 arr[nx][ny]가 크다면 flag를 0으로 만드는 것이고 이에 해당하지 않는거라면 다 answer++를 하는 것으로 이해했는데요.&&연산자를 써서 위 조건 중 하나라도 해당하지 않는다면 answer++ 로 이어지는 걸로 알고 있습니다. 그렇다면 arr[1][0] =3을 기준으로 봤을때 왼쪽이 arr[1][-1]가 나오기 때문에 ny<0으로 해당 if문 조건을 충족시키지 못해 answer++로 이어지는 것 아닌가요?arr[1][-1]이라면 undefined가 나올텐데 이럴 땐 어떻게 되는 지 궁금합니다. 알아서 무시해버리나요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
CSpinLock 코드 작성중 원리에 대해서 의문점이 들어 질문 드립니다.
void CSpinLock::lock(){ bool expected = false; bool desired = true; while (_locked.compare_exchange_strong(expected, desired) == false) { expected = false; }}SpinLock의 해당 코드에서 _locked의 값이 true일때, expected의 값이 초기에는 false임으로, 해당 반복문을 통과하지 못하고 기다립니다. 그런데 expected가 locked의 값인 true로 바뀌므로 이를 반복문 내에서 expected = false; 값으로 변경해주는데, expected의 값을 false로 변경해주기 전에 true인 locked의 값이 들어오면 아직 expected의 값은 변경되기 전이므로 SpinLock을 빠져 나올 수 있지 않을까요?코드를 실행해보니 SpinLock이 잘 실행되고 있는 것은 확인했지만, 머리속에서는 납득하지 못한 의문점이 멤돌아서 이렇게 질문 드립니다.
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
정답오류가 있는것 같습니다.
안녕하세요 선생님다름이 아니라 제가 작성한 코드가 정답처리가 되었는데 이 코드는 정답이 되면 안되는 코드가 아닌가 해서 여쭤보고 싶어서 질문글 남깁니다.예를들면 첫번째 문제에서는 CBA 순서로 무조건 짜야하지만제 코드에서 str1 은 꼭 순서를 지켜야 하는 값이고str2는 C의 순서를 알 수 없는데 정답처리가 되어서 제가 작성한 코드가 제대로 정답이 맞는건지 궁금해서 질문글을 남깁니다!
-
미해결3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
쿠폰 발급 요청방법
모든 (기존,신규)수강생에 한해 https://www.inflearn.com/course/%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%BD%94%EC%8A%A4-ea-%EC%A0%84%EC%9E%90%EC%A0%95%EB%B6%80-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC무료쿠폰드리고 있습니다.자신의 인프런 닉네임을 적어서 쿠폰요청으로 메일 주시면 감사하겠습니다.vmproductor@gmail.com
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
그림에 있는 웹서버가 무엇인가요??
그림에 있는 웹서버가 무엇인가요?? 요청을 사용자 컴에서 보내면 문서 + css파일 + js파일 다 받아온 후에 사용자 컴퓨터의 브라우저가 조립해서 표기를 해주는것으로 알고있습니다.제가 헷갈리는 부분은 웹서버에서 정적 파일 서빙이후파일 받으면 웹서버를 거쳐서 was를 갈 필요 없이바로 was로 갈 수 있을텐데 구조가 저렇게 되있으면 반드시 거쳐가야 하는것 아닌가? 하는 의문이 들었습니다. 물론 서비스를 제공하는 회사별로 다르겠지만 일반적으로 어떻게 되는 것인가요?
-
미해결3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
EA + egovframe 쿠폰
EA + egovframe 신규 강의를 보고 어?! 설마 하고 찾아봤는데 기존에 전자정부 수강생에게는 쿠폰을 준다하여 문의 남깁니다~
-
미해결3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
EA + egovefrm 수강 관련 쿠폰 요청합니다.
EA + egovefrm 수강 관련 쿠폰 요청합니다.
-
미해결
EA + egovefrm 수강 관련 쿠폰 요청합니다.
EA + egovefrm 수강 관련 쿠폰 요청합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
onSaved의 타입
안녕하세요. 중급까지 다 듣긴했는데 프로젝트 중, 폼필드 부분에 복습을 할 필요성이 생겨 돌아와서 보던중 궁금한 점이 생겨서 질문드립니다.onSaved의 타입이 현재의 플러터(3.7.11) 혹은 다트(2.19.6)에서 확인을 해보면 text_form_field.dart에서 내용이 저는 ValueChanged<String?> onFieldSubmitted, super.onSaved, super.validator,로 표기가 됩니다. text_form_field.dart 에서는 FormFieldSetter<String> 에 해당하는 타입이나 문구는 cmd+f를 해서 찾아보아도 나오진 않아요.다만 Form 위젯의 정의에서는 타입데프로 나오긴 하며, 강의에서 처럼 onSaved를 매개변수로 받아 외부에서 입력하도록 했을때 FormFieldSetter<String>로 해도 작동은 하네요.버전이 바뀌며 변경이 있었던 건지 이 부분은 왜 text_form_field.dart에서 찾을 수가 없는지 궁금합니다. 또한 이런 경우 Form위젯을 뒤지지 않고도 적절한 타입을 찾을 수 있는 방법을 알고 싶습니다.감사합니다.
-
미해결비전공 기획자 및 관리자를 위한 IT 필수 지식
안녕하세요! 강의자료 요청드립니다.
안녕하세요! 강의자료 요청드립니다.tnfl0825@gmail.com 이메일로 보내주시면 감사드리겠습니다!좋은 하루 보내세요.
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
HTML 유효성 검사에서 오류가 나옵니다.
<!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/logo-header.png" alt="header logo"></a> </div> <div class="navi"> <ul class="menu"> <li><a href="#none">OnSale</a></li> <li><a href="#none">기획전</a></li> <li><a href="#none">푸른마을 레시피</a></li> <li><a href="#none">매장안내</a></li> <div class="sub-back"> <div class="mega-menu"> <div class="sub-menu"> <a href="#none">할인행사</a> <a href="#none">덤증정</a> </div> <div class="sub-menu"> <a href="#none">봄 먹거리</a> <a href="#none">여름 먹거리</a> <a href="#none">가을 먹거리</a> <a href="#none">겨울 먹거리</a> </div> <div class="sub-menu"> <a href="#none">메인요리</a> <a href="#none">밑반찬</a> <a href="#none">간식</a> <a href="#none">브런치</a> </div> <div class="sub-menu"> <a href="#none">신규매장</a> <a href="#none">추천매장</a> <a href="#none">공지사항</a> </div> </div> </div> </ul> </div> <div class="spot-menu"> <a href="#none">로그인</a> <span>|</span> <a href="#none">회원가입</a> </div> </header> </div> <div class="right"> <div class="slide"> <div class="slide-image"> <div class="slide-image-inner"> <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="banner"> <a href="#none"><img src="images/banner-01.jpg" alt="banner1"></a> <a href="#none"><img src="images/banner-02.jpg" alt="banner2"></a> <a href="#none"><img src="images/banner-03.jpg" alt="banner3"></a> </div> </div> <div class="items"> <div class="shortcut"> <img class="shortcut-image" src="images/shortcut-01.jpg" alt="shortcut image"> <div class="shortcut-content"> <h2>얼리버드 선착순 할인 이벤트, 신규강의 최대 30% 할인</h2> <p> 12월은 사랑의 달~ 코딩웍스에서 여러분께 사랑을 뿌려요~<br> 12월 개강반을 12월 06일까지 접수하는 분들께는 15%~ 20% 의 얼리버드 할인을 제공합니다.<br> 더불어 소중한 리뷰를 꼼꼼히 남겨주시는 분들을 뽑아 더 큰 적립금을 추가지급해 드릴 예정이오니 리뷰도 놓치지 마시고 작성해주세요~^^<br> 기간: 2022년 12월 18일~ 12월 25일 </p> </div> <a href="#none"><img src="images/shortcut-02.png" alt="shortcut link"></a> </div> <div class="news-gallery"> <div class="tab-inner"> <div class="btn"> <a class="active" href="#none">공지사항</a> <a href="#none">갤러리</a> </div> <div class="tabs"> <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">월 500만원 매출을 내는 블로그 운영하는 노하우<b>2022.07.07</b></a> </div> <div class="tab2"> <a href="#none"><img src="images/gallery-01.jpg" alt="gallery1"><span>체스키크룸로프성</span></a> <a href="#none"><img src="images/gallery-02.jpg" alt="gallery2"><span>럭셔리 범선 선셋</span></a> <a href="#none"><img src="images/gallery-03.jpg" alt="gallery3"><span>거제 바람의언덕</span></a> <a href="#none"><img src="images/gallery-04.jpg" alt="gallery4"><span>연천 덴마크 가평</span></a> <a href="#none"><img src="images/gallery-05.jpg" alt="gallery5"><span>담양 메타프로방스</span></a> <a href="#none"><img src="images/gallery-06.jpg" alt="gallery6"><span>잘츠카머쿠트</span></a> </div> </div> </div> </div> </div> </div> </div> <footer> <div class="footer-logo"> <a href="#none"><img src="images/logo-footer.png" alt="footer logo"></a> </div> <div class="footer-content"> <div class="footer-link"> <a href="#none">회사소개</a> <a href="#none">찾아오시는길</a> <a href="#none">개인정보처리방침</a> <a href="#none">이용약관</a> <a href="#none">고객지원</a> <a href="#none">제휴문의</a> </div> <div class="copyright"> 상호 : (주)코딩웍스 | 대표자 : 홍길동 | 개인정보관리책임자 : 성춘향 부장 사업장주소 : 경기도 남양주시 별내동 1234 코딩웍스 빌딩 6층 (주)코딩웍스 </div> </div> </footer> </div> <div class="modal"> <div class="modal-content"> <h2>스트리밍 서버 이전으로 서비스 장애</h2> <p> 스트리밍 서버 이전 작업으로 2시간 서비스 중지됩니다.<br> 주요 작업 내용은 아래와 같습니다.<br> <br> 1. 서버 이전에 따른 DNS 이전으로 기존 호스팅 서비스 대체<br> 2. 문자셋을 utf-8로 변경 후 모바일 등에 대처하기 위해 미리 조치<br> 3. 스트리밍 서버 CDN과 연동 후 멀티미디어 이러닝 서비스가 제공<br> <br> 위 내용을 보시면 제법 큰 작업이었음을 알 수 있습니다.<br> 특히 문자셋의 변경에 따라 기존의 DB, data, 웹사이트 솔루션 등의 커스트마이징 등에 상당한 어려움이 있었고, 이에 따른 일부 접속 오류가 있을 수 있었음에 양해를 구합니다.<br> 서버 이전 작업으로 고객님들께 불편을 드려서 대단히 죄송합니다.<br> 정상 운영되도록 최선을 다하겠습니다. 감사합니다. </p> <a class="close-modal" href="#none">닫기</a> </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: #333; font-size: 15px; } a { color: #333; text-decoration: none; } .container {} .main-content { display: flex; } .main-content > div { /* border: 1px solid black; */ /* height: 800px; */ } .left { width: 200px; } .right { flex: 1; } header { position: relative; z-index: 10; } header > div { /* border: 1px solid red; */ } .header-logo { height: 100px; display: flex; align-items: center; } .navi { height: 200px; } /* Navigation */ .menu { list-style: none; padding: 0; width: 90%; margin: auto; margin-top: 10px; position: relative; } .menu li { text-align: center; background-color: #fff; } .menu li > a { border: 1px solid #000; display: block; padding: 5px; transition: 0.5s; } .menu li:hover > a { background-color: #000; color: #fff; } .sub-back { background-color: rgba(0, 0, 0, 0.5); position: absolute; top: 0; left: 100%; width: calc(100vw - 208px); z-index: 1000; display: none; } .mega-menu {} .sub-menu { height: 32px; display: flex; align-items: center; gap: 15px; margin-left: 15px; } .sub-menu a { padding: 5px; transition: 0.5s; color: #fff; } .sub-menu a:hover { background-color: #000; } .spot-menu { height: 50px; text-align: center; } .spot-menu a { color: blue; } .spot-menu a:hover { text-decoration: underline; } .slide { position: relative; } .slide > div { /* border: 1px solid blue; */ } .slide-image { height: 400px; } .slide-image-inner { font-size: 0; height: inherit; overflow: hidden; position: relative; } .slide-image-inner a { height: inherit; position: absolute; top: 0; left: 0; animation: slide 10s linear infinite; visibility: hidden; } .slide-image-inner a:nth-child(1) { animation-delay: 0s; } .slide-image-inner a:nth-child(2) { animation-delay: 3.5s; } .slide-image-inner a:nth-child(3) { animation-delay: 7s; } .slide-image-inner a img { height: inherit; width: 100%; object-fit: cover; } @keyframes slide { 0% { opacity: 0; } 5% { opacity: 1; visibility: visible; } 35% { opacity: 1; } 40% { opacity: 0; visibility: hidden; } 100% { opacity: 0; } } .banner { width: 150px; height: 300px; position: absolute; top: 0; right: 10px; } .banner a img { width: 150px; border-radius: 10px; margin: 5px 0; } .items {} .items > div { /* border: 1px solid green; */ } .shortcut { height: 200px; display: flex; align-items: center; justify-content: space-around; } .shortcut .shortcut-image { height: 150px; border-radius: 30px; } .news-gallery { height: 250px; } /* News & Gallery */ .tab-inner { width: 95%; margin: auto; margin-top: 25px; } .btn {} .btn a { border: 1px solid #000; display: inline-block; width: 100px; text-align: center; padding: 5px; border-radius: 5px 5px 0 0; border-bottom: none; margin-right: -6px; margin-bottom: -1px; background-color: #ccc; } .btn a.active { background-color: #fff; } .tabs {} .tab1 { /* display: none; */ border: 1px solid #000; height: 170px; box-sizing: border-box; padding: 10px 15px; } .tab1 a { display: block; padding: 5px; border-bottom: 1px solid #000; } .tab1 a:last-child { border-bottom: none; } .tab1 a b { float: right; font-weight: normal; padding-right: 50px; } .tab2 { border: 1px solid #000; height: 170px; text-align: center; box-sizing: border-box; padding-top: 10px; display: none; } .tab2 a { display: inline-block; text-align: center; } .tab2 a img { height: 130px; border-radius: 10px; margin: 0 55px; } .tab2 a span { display: block; } footer { display: flex; height: 120px; align-items: center; } footer > div { /* border: 1px solid red; */ } .footer-logo { width: 200px; } .footer-content { flex: 1; } .footer-content div { /* border: 1px solid red; */ /* height: 60px; */ padding: 10px 15px; } .footer-link {} .copyright {} .footer-link a { color: blue; } .footer-link a::after { content: "|"; margin-left: 5px; } .footer-link a:last-child::after { display: none; } .footer-link a:hover { text-decoration: underline; } .modal { background-color: #00000060; position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 100; display: none; } .modal-content { background-color: #fff; width: 500px; padding: 20px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .close-modal { float: right; border: 1px solid #000; padding: 5px 10px; } .modal-content h2 { text-align: center; } $('.menu').mouseenter(function(){ $('.sub-back').stop().fadeIn() }) $('.menu').mouseleave(function(){ $('.sub-back').stop().fadeOut() }) $('.btn a:first-child').click(function(){ $('.tab1').show() $('.tab2').hide() $(this).addClass('active') $(this).siblings().removeClass('active') }) $('.btn a:last-child').click(function(){ $('.tab2').show() $('.tab1').hide() $(this).addClass('active') $(this).siblings().removeClass('active') }) $('.open-modal').click(function(){ $('.modal').fadeIn() }) $('.close-modal').click(function(){ $('.modal').fadeOut() })
-
미해결CloudNet@ - AWS 네트워킹 입문
학습 자료 압축 풀기
학습 자료 다운로드 받아서, 압축 해제가 안됩니다. M1 Mac pro이고 다른 인프런 강의 자료 받아서 압축해제 잘 되는 것 확인했습니다...!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
얍바레
라잇웨잇 베이베!!!!!!!!!!!!!!!!!!!!!!
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
sonarqube와 powershell, cmd의 호환성
sonarqube 실행 시 powershell에서는 계속 에러가 발생하는데 cmd에서는 정상적으로 실행되서 질문입니다.제 컴퓨터는OS: Windows 10 Homeversion: 22H2이고,sonarqube는 vmware centos7 환경에서 docker로 실행했습니다. springboot project에서 pom.xml의 plugin 설정입니다.<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.9.1.2184</version> </plugin> </plugins> </build> 그리고 powershell로 sonarqube를 실행했을 때의 상태입니다.cmd로 sonarqube를 실행했을 때의 상태입니다.git bash shell로 했을 때도 정상적으로 실행됐습니다.https://okky.kr/questions/804636 에서는"다른 쉘 환경이다보니 환경변수를 다루는 방식이 달라서 " 라고 하기도 하고,https://okky.kr/questions/1403875 에는"반면에 PowerShell은 .NET 프레임워크 기반으로 만들어졌기 때문에," 나,"PS는 .Net 기반이다 보니 .Net 버전 별 호환성 이슈가 있습니다." 말이 있는데 "아파치 메이븐은 자바 프로젝트들을 위한 빌드 자동화 도구" 라서 powershell과 호환성이 안맞는 부분도 있을 수 있다 라고 해석해도 될까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
[Error] Member cannot be resolved to a type
save.jsp를 요청할 때, Member cannot be resolved to a type라는 에러가 나옵니다.패키지의 문제인가 싶어서 아래와 같이 확인했습니다.스프링부터 2.6.3버전이고, implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.44' implementation 'javax.servlet:jstl' //스프링부트 3.0 미만위 코드를 gradle에 추가했습니다. 프로젝트창에 jstl과 tomcat을 검색하면 외부 라이브러리로 설치됨을 알 수 있습니다. 경로의 문제일 수 있을까요? 내 파일경로는 위와 같고, save.jsp의 코드는 아래와 같습니다.<%@ page contentType="text/html;charset=UTF-8" language="java"%> <%@ page import="hello.servlet.domain.member.Member" %> <%@ page import="hello.servlet.domain.member.MemberRepository" %> <% MemberRepository memberRepository = MemberRepository.getInstance(); String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); %> <html>...</html>경로의 문제일까요? jsp파일이 Member클래스를 참조못하는듯보입니다.
-
해결됨우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
클로져를 학습 중에 궁금한게 생겨 질문드립니다
#1def clos(): series = [] def averager(v): series.append(v) return sum(series) / len(series) return averager avg_clos = clos() print(avg_clos(10)) print(avg_clos(20)) print(avg_clos(30))#2def clos(): a = 0 b = 0 def averager(v): a += v b += 1 return a / b return averager avg_clos = clos() print(avg_clos(10)) print(avg_clos(20)) print(avg_clos(30)) series든 a,b든 변수에 할당하고 수정하는건 같은데 왜 #2번만 nonlocal을 적용해야 실행이 되는 건지 잘모르겠습니다 . ㅠ.ㅠ
-
미해결조코딩의 코딩 기초와 웹 풀스택 개발
인프런은 질문을 안받아주시나요?
ㅠㅠㅠ