묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인자로 전달되는 request, response 객체는 참조값으로 공유되는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]FrontControllerServletV2 에서 호출한 MemberListControllerV2 인스턴스 내부에서 인자로 받은 요청 객체에 members 값을 setAttribute 로 설정한것을 봤습니다. 이후 해당 인스턴스에서 반환한 MyView 객체를 통해 render를 수행하던데, 이때 req 에는 MemberListControllerV2에서 요청객체에 설정했던 members 값이 들어가는 것 같던데 원리가 무엇인가요?.. 저는 요청,응답 객체를 다른 인스턴스에 인자로 전달(복사)한다고 생각했습니다. 어떻게 frontControllerServletV2에서 MemberListControllerV2 에서 설정한 members 객체를 사용할 수 있는 건가요?
-
해결됨C개발자를 위한 최소한의 C++
차이점을 잘 모르겠습니다.
주신 프로그램 중 constructSelect.cpp 에서 디폴트 생성자를 지우면 에러가 발생하는데 virtualFunction 에서는 디폴트 생성자가 없어도 동작합니다. constructSelect.cpp 에서 선언 방식이 아닌 new 연산자를 사용해서 해봐도 에러가 발생하고객체 내에 멤버메서드가 없어서 그런가 해서 멤버를 만들어도 에러가 발생합니다VirtualFunction 내의 소멸자의 virtual 을 제거해도 이건 잘 작동합니다.눈으로 봐서는 도저히 차이점을 모르겠습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ModelAttribute 사용 이유가 헷갈립니다.
@Slf4j @Controller @RequiredArgsConstructor public class LoginController { private final LoginService loginService; @GetMapping("/login") public String loginForm(@ModelAttribute("loginForm") LoginForm form) { return "login/loginForm"; } @PostMapping("/login") public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if (loginMember == null) { // 정보 불일치 시... // reject : 글로벌 오류 bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다."); return "login/loginForm"; } // 로그인 성공 처리 // TODO return "redirect:/"; // 성공 시 홈으로 리다이렉트 } }안녕하세요 '로그인 기능' 강의를 듣고 궁금한 점이 생겨 질문을 올립니다. @GetMapping("/login") public String loginForm(@ModelAttribute("loginForm") LoginForm form) { return "login/loginForm"; }위 메서드는 "/login"이라는 GET 요청이 오면 loginForm 파일을 실행하게 됩니다. 따라서 단지 화면을 출력하는 역할에 불과한데, 왜 @ModelAttribute("loginForm") LoginForm form을 작성하신건지 이해가 잘 가지 않습니다. @GetMapping("/login") public String loginForm() { return "login/loginForm"; }그냥 위처럼 작성하면 안되는건가요? 만약 PostMapping처럼 데이터를 저장하는 요청이라면, ModelAttribute를 통해 LoginForm의 인스턴스를 저장하는 것이 이해가 가지만,GetMapping에는 왜 작성하신건지 이해가 잘 안갑니다 ㅠㅠ감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링메세지 소스 사용 오류
@SpringBootTest public class MessageSourceTest { @Autowired MessageSource ms; @Test void helloMessage() { String result = ms.getMessage("hello", null, null); assertThat(result).isEqualTo("안녕"); } }를 실행했더니org.opentest4j.AssertionFailedError: Expecting: <"??">to be equal to: <"안녕">but was not.필요:"안녕"실제 :"??" 2024-04-07 17:34:37.790 INFO 6288 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'오류가 뜹니다. 이유가 뭔가요?
-
해결됨C개발자를 위한 최소한의 C++
이동생성자 관련
안녕하세요. 선생님 이동 생성자 강의 내용 중 질문이 있습니다. (아래 코드 참고) delete pnData를 하면, 포인터 변수가 해제되어pnData = rhs.pnData;를 실행할 수 없는 것이 아닌지 궁금합니다. 실재로는 포인터 값은 그대로고, 가리키는 값(int 0)만 삭제되는 것인가요? 포인터 값은 놔두고 가리키는 값만 없애는 문법은 어떻게 되나요? delete를 안하고, pnData = nullptr; 로만 수정해도 됬을 것 같습니다. class TestData { public: TestData(){ pnData = new int(0); } ... TestData(TestData&& rhs) noexcept{ delete pnData; pnData = rhs.pnData; rhs.pnData = nullptr; } ... TestData& operator=(TestData&& rhs) noexcept{ delete pnData; pnData = rhs.pnData; rhs.pnData = nullptr; } }
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
로그인까지는 되는데 /welcome에서 403 Forbidden 에러가 뜹니다.
안녕하세요. 깃허브에서 spring boot 3.2 브랜치통해 코드를 작성했습니다. 그런데 회원가입, 로그인까지 해서 jwt토큰까지는 잘 받아오는데, 그 이후에 /welcome으로 헤더에 토큰으로 추가해서 요청을 보내도 403 forbidden에러가 뜹니다. 코드는 spring boot 3.2 브랜치와 동일합니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
팩토리얼 함수 질문
처음 메인함수에서 factorial(5)를 실행하면팩토리얼 함수로 들어가서 return을 n * factorial(n - 1)이잖아요 그러면5 * factorial(4)니까 함수가 다시실행되서5 * 4 * factorial(3)이런식으로 계속 호출 되는건가요?그리고 리턴값이 왜 120이 나오는지 조금 헷갈립니다 처음factorial(5)를하면 5 * factorial(4)일텐데 이값을 리턴해주는게 아니고 또다시 함수가 호출되는거같은데 혹시 리턴값이왜 120이 나오는지 설명해주실 수 있으실까요 ㅠ
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
온 프라미스의 서버랙, 클라우드의 리전 장애에 대비할 수 있는 카프카 설정이 무엇인가요??
안녕하세요! 2강에서 설명해주신 레플리케이션 설정을 통한 고가용성 외에 서버 랙, 리전 장애에도 대비할 수 있는 카프카 설정이 무엇인지 궁금하여 질문드립니다.
-
미해결데이터 분석 SQL Fundamentals
비상관 서브쿼리 'DALLAS' 문의
안녕하세요, 비상관 서브쿼리 강의에서 아래 where 절의 여러 컬럼에 대해 문의드립니다.dept 테이블에는 loc 컬럼이 없고, 'DALLAS' 또한 새로 생성된 컬럼으로 보이는데 이것이 어떻게 매핑되어 dept가 '20'만 남는 건지 궁금합니다. select * from hr.dept where (deptno, loc) in (select deptno, 'DALLAS' from hr.emp where sal < 1300)
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
localstorage.setItem 위치 질문
수업에서는 '카운트다운 시작' 버튼 눌러서 Starter 함수가 실행되면 로컬 스토리지가 setInterval 함수로 인해 비워지기 때문에, CounterMaker 함수 내에 if문을 작성하여 해결하고 있습니다.저는 이 방법 말고 사진처럼 starter 함수 내부에서 setInterval 함수(clearTimer라고 작성한..) 호출 위치를 조정하여 해결하였는데, 이 방법에 문제가 있을지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
현재 1강 테스트중 오류내용입니다.
MemberRepositoryTest를 작성하고 실행하면 자꾸 이 오류가 뜨는데 이유를 모르겠습니다..
-
미해결UX/UI 시작하기 : Adobe XD 입문(Inflearn Original)
텍스트툴 질문
안녕하세요. 툴 강의 듣다가 질문이 생겼습니다. 강의에서는 포인트 텍스트랑 영역 텍스트 버튼이 나오던데 저는 다른 버튼이 나오더라고요 (사진 첨부합니다)강의 내용과 이 세가지 버튼의 기능도 알고 싶습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-M 질문드립니다.
안녕하세요 큰돌 강사님 v[y-1][x-1].push_back(z); 로 하면 틀리는 이유를 알고 싶습니다. 입력으로 들어오는 x가 열 아닌가요?? 처음 두 개의 정수는 나무의 위치 (x, y)를 의미하고, 마지막 정수는 그 나무의 나이를 의미한다 답변 미리 감사드립니다 😄
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
실무 Asserta 사용여부가 궁금합니다.
안녕하세요 강의를보다가 validation 검사를Assert Class를 활용하여 하고 계시던데실무에서도 자주 쓰는 문법인지 궁금합니다.
-
해결됨독하게 시작하는 C 프로그래밍
섹션 13 배열의 기본 문법
안녕하세요 강사님 섹션 13 배열의 기본 문법 관련해서 질문이 있습니다강의에서 "Hello"이라는 문자의 배열의 요소를 6개라고 하셨는데, 이것은 Hello라는 문자는 알파벳 5개지만 문자의 배열(문자열)의 끝에는 항상 null이 들어가서 6개라고 말씀하신걸까요?그렇다면 모든 문자열의 요소 개수 = 문자열의 알파벳 개수 +1(null)라고 생각하면 될까요? 또한 문자열 상수는 이름이 없는 문자의 배열이라고 하셨는데 이름이 없는 문자의 배열이라는 것이 이해가 잘 가지 않습니다. 예를 들어 "Hello"는 문자열이고 변하지 않는 상수가 맞으니깐 문자열 상수라는 것은 알겠는데 이름이 없다는게 무슨 의미일까요? 감사합니다.
-
해결됨빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
aws ubuntu 22.04 크롬 드라이브 설치 및 경로 확인
wget 설치 후 wget 으로 2023_BIGDATA 디렉토리에 크롬.deb 파일 내려 받고 dpkg -i 명령어로 설치 하여 google-chrome --version 이 나왔습니다 chromedriver.Chrome('chromedriver') 라는 파일은 어디에서 찾을 수 있을까요? driver = webdriver.Chrome("/home/ubuntu/2023_BIGDATA/google-chrome-stable_current_amd64.deb" pip install wget sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb # google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb google-chrome --version Google Chrome 123.0.6312.105
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
index 와 max, min 함수로 풀어도 시간상 상관없는 걸까요?
l=int(input())a=list(map(int,input().split()))m=int(input())for i in range(m): #print(a.index(max(a)),a.index(min(a)),max(a),min(a)) a[a.index(max(a))]-=1 a[a.index(min(a))]+=1print(max(a)-(min(a)) ) 이렇게 간단하게 풀었는데 혹시 값이 많아지면 이게 sort보다 시간이 더 오래 걸리게 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
no such
zsh: parse error near `\n'(base) mongsil@sinjihwan-ui-MacBookAir ~ % cd /usr/local/includemkdir bitscd bitsvi stdc++.hcd: no such file or directory: /usr/local/include(base) mongsil@sinjihwan-ui-MacBookAir bits % clang --versionApple clang version 14.0.3 (clang-1403.0.22.14.1)Target: arm64-apple-darwin22.5.0Thread model: posixInstalledDir: /Library/Developer/CommandLineTools/usr/bin(base) mongsil@sinjihwan-ui-MacBookAir bits % clang++ -vApple clang version 14.0.3 (clang-1403.0.22.14.1)Target: arm64-apple-darwin22.5.0Thread model: posixInstalledDir: /Library/Developer/CommandLineTools/usr/bin(base) mongsil@sinjihwan-ui-MacBookAir bits % ~/Library/Application Support/Code/User/settings.jsonzsh: no such file or directory: /Users/mongsil/Library/Application(base) mongsil@sinjihwan-ui-MacBookAir bits % cd /usr/local/includemkdir bitscd bitsvi stdc++.hcd: no such file or directory: /usr/local/include
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
섹션 7. 문제와 풀이 4 마지막 문제
상품 구매와 총 결제 금액 나타내는 마지막 문제를 switch로 풀어봤는데 프로그램 종료가 되지 않습니다.뭐가 문제인지 봐주실 수 있나요?case 1~2, 4에서 break; 를 거는 게 맞는 건가요?ㅠ 사실 break;를 걸어도 계속해서 돌아가요ㅠㅠif문으로 풀었을 때는 break;를 만나면 제대로 나가지는데 swtich는 왜 이런 건가요ㅠㅠpublic static void main(String[] args) { Scanner scanner = new Scanner(System.in); int totalCost = 0; while (true) { System.out.println("1 : 상품 입력, 2 : 결제, 3 : 프로그램 종료"); int option = scanner.nextInt(); switch (option) { case 1 : scanner.nextLine(); System.out.print("상품명 : "); String name = scanner.nextLine(); System.out.print("가격 : "); int price = scanner.nextInt(); System.out.print("수량 : "); int quantity = scanner.nextInt(); int cost = price * quantity; totalCost += cost; System.out.println("상품명 : " + name + " 가격 : " + price + " 수량 : " + quantity + " 합계 : " + cost); continue; case 2 : System.out.println("총 비용 : " + totalCost); totalCost = 0; continue; case 3 : System.out.println("프로그램을 종료합니다."); break; default : System.out.println("올바른 옵션을 선택해주세요."); continue; } } }
-
해결됨빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
섹션2 실습1 코드 공유 문의..
안녕하세요 강사님.. 실습 1번은 현재 저로서는 해석이 불가능하여해석은 나중에 하기로 하고일단 쳐보기만 열심히 쳐봤는데 역시나 안되네요..코드 공유좀 부탁 드릴 수 있을까요.. 죄송합니다from bs4 import BeautifulSoup from urllib.request import * from urllib.parse import * from os import makedirs import os.path, time, re proc_files = {} def enum_links(html, base): soup = BeautifulSoup(html, "html.parser") links = soup.select("link[rel='stylesheet']") # CSS links += soup.select("a[href]") # link result =[] for a in links : href = a.attrs['href'] url = urljoin(base, href) result.append(url) return result def download_file(url): o = urlparse(url) savepath = "./" + o.netloc + o.path if re.search(r"/$", savepath): savepath += "index.html" savedir = os.path.dirname(savepath) if os.path.exists(savepath): return savepath if not os.path.exists(savedir): print("mkdir=", savedir) makedirs(savedir) try: print("download=", url) urlretrieve(url, savepath) # url 다운 받고 파일 이름은 savepath로 저장 time.sleep(1) return savepath except: print("다운 실패", url) return None def analyze_html(url, root_url): savepath = download_file(url) if savepath is None: return if savepath is proc_files: return proc_files[savepath] = True print('analyze_html', url) html =open(savepath, "r", encoding="utf-8").read() links = enum_links(html, url) for link_url in links: if link_url.find(root_url) != 0: if not re.search(r".css$", link_url): continue if re.search(r".(html|htm)$", link_url): analyze_html(link_url, root_url) continue download_file(link_url) if __name__ == "__main__": url = "https://docs.python.org/3.5/library/" analyze_html(url, url)