JSP파일 문제
미해결
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp 파일이 강의 처럼 뭔가 안뜨고 자바 클래스 import도 안했는데 빨간색이 안뜨네요. 단순히 입력만되는 창이 됐는데 어떻게 해결할 수 있을까요?
- spring
- mvc
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp 파일이 강의 처럼 뭔가 안뜨고 자바 클래스 import도 안했는데 빨간색이 안뜨네요. 단순히 입력만되는 창이 됐는데 어떻게 해결할 수 있을까요?
해결됨
한 입 크기로 잘라먹는 Next.js
안녕하세요~ 설명해주신 CSR, SSR 렌더링 강의보고 CSR, SSR 렌더링 방식에 대해 궁금한점 두가지 남겨봅니다! (유사한 질문이 있는지 찾아봤는데 글이 많아서 찾질 못해서 중복 감안하고 올려봅니다🙏🏻) 질문1 CSR은 bundle js 다운로드 레이턴시 만큼 FCP가 느리고 반대로 SSR은 bundle js 다운로드 레이턴시만큼 CSR보다 FCP가 빠르다고 이해했는데요. TTI 기준으로 보면 결국 CSR, SSR모두 차이가 없는게 맞을까요? (gzip압축 해제, js parse, hydration등의 처리에서 드는 비용의 차이가 있겠지만 이런 부분들은 크게 영향을 주진 않을거라고 생각하여 문의드립니다. 혹시 두 방식에 영향을 미치는 큰 요소가 있다면 그 부분도 고려해서 알려주시면 감사하겠습니다.) 질문2 CSR의 장점으로 초기 렌더링이 느리고 이후에 페이지 이동시 빠르게 화면을 그릴 수 있다고 하셨는데요, CSR에서 초기 렌더링의 속도를 높이기 위해 코드 스플리팅 전략을 취할 수 있을거 같습니다. 이렇게 CSR에서 코드 스플리팅 방식을 취한 경우 페이지 이동시 결국 bundle js 다운르드 레이턴시가 또 발생할거 같은데요. prefetch, preload같은 전략을 취하지 않고 코드스플리팅만 적용한 CSR방식은 단점만 남는 렌더링 전략이 맞을까요? 유일한 장점은 CSR이지만 코드 스플리팅을 했기 때문에 초기 FCP가 조금 빠르다정도일거 같은데 이해한게 맞는지 문의드려봅니다.
미해결
Next + React Query로 SNS 서비스 만들기
백엔드 취준생인데 프론트를 좀 할 일이 있어서 강의 듣고 있는데 Next-Auth 부분이 이해가 쉽지 않네요... 몇 가지 질문 드리고자 합니다. 1. session 객체에 어떤게 담기는건지 잘 모르겠습니다. export default async function Home() { const session = await auth() if (session?.user) { redirect('/home') return null } return ( <Main/> ); } export const { handlers: { GET, POST }, auth, signIn, } = NextAuth({ // 개발자가 직접 만든 화면에서 로그인 하도록 진행 pages: { signIn: '/i/flow/login', // 로그인 newUser: '/i/flow/signup' // 회원가입 }, providers: [ CredentialsProvider({ async authorize(credentials) { const authResponse = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/login`, { method: 'POST', headers: { "Content-Type": "application/json", }, body: JSON.stringify({ id: credentials.usename, password: credentials.password, }) }) if (!authResponse.ok) { return null } const user = await authResponse.json() return { email: user.id, name: user.nickname, image: user.image, ...user } } }) ], }) Home 에서 auth() 를 통해 불러온 session 객체에 CredentialsProvider 가 리턴한 객체가 담기는건가요? 그런데 그렇다고 하기엔 객체에 user 라는 속성이 없어서 아닌 것 같기도 해서 아닌 거 같다는 생각도 듭니다. export default function Login() { const router = useRouter() const { data: session } = useSession(); if (session?.user) { router.replace('/home') return null } router.replace("/i/flow/login") return ( <Main /> ) } 마찬가지로 여기서도 session 에 어떤게 담기는지 잘 모르겠습니다 ㅠㅠ auth() 로 리턴한 세션과 같은 객체가 담기는 것 같긴 한데 도대체 session 에 뭐가 담기는지 파악이 쉽지 않네요 ㅋㅋㅋ 그래서 session 객체의 user 를 클릭해서 들어가보니 다음과 같은 interface 가 나오네요. export interface DefaultSession { user?: User expires: ISODateString } auth/core 에 있는 인터페이스인 것 같은데 이 인터페이스가 어느 시점에 등장(?) 하는 건지 잘 모르겠습니다. 2. 지금 진행하는 로그인 방식은 백엔드에 로그인 관련 API 가 있다고 가정하고 진행하는 것으로 저는 이해를 했는데요 export const handlers = [ http.post(`${baseUrl}/api/login`, () => { console.log('로그인'); return HttpResponse.json(User[1], { headers: { 'Set-Cookie': 'connect.sid=msw-cookie;HttpOnly;Path=/' }, }) }), http.post(`${baseUrl}/api/logout`, () => { console.log('로그아웃'); return new HttpResponse(null, { headers: { 'Set-Cookie': 'connect.sid=;HttpOnly;Path=/;Max-Age=0' } }) }), http.post(`${baseUrl}/api/users`, async ({ request }) => { console.log('회원가입'); // return HttpResponse.text(JSON.stringify('user_exists'), { // status: 403 // }) return HttpResponse.text(JSON.stringify('ok'), { headers: { 'Set-Cookie': 'connect.sid=msw-cookie;HttpOnly;Path=/' }, }); }) ]; 이게 지금 api 를 mocking 한 건데 여기에 요청을 보내고 있으니까요. 그러면 이 API 에서 리턴한 유저(User[1]) 가 세션에 담기는 것인지 궁금하네요. (이것도 1번 질문하고 좀 연관이 되네요) 그러면 만약에 백엔드 API 가 로그인 성공했을 때 http body 에 별도의 객체를 리턴하지 않으면 어떻게 되나? 이런 궁금증도 생깁니다. 3. 그리고 로그아웃을 할 때는 왜 로그아웃 API 에 따로 요청을 보내지 않고 signOut 함수만 사용하는지 궁금합니다. 이것만 사용해도 쿠키가 삭제가 돼서 그런 것인가요? 그러면 백엔드 서버에 별도의 로그아웃 API 를 만들지 않아도 되는 것인지 궁금합니다. 장문의 질문글이 된 거 같은데, 뭔가 Next-Auth 를 처음 접하다보니 사용법이 좀 익숙치가 않네요. AI 에 물어보거나 구글링을 해 봐도 좀 파악이 쉽지 않아 여기에 질문 남겨봅니다. 감사합니다.
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[질문 내용] 선생님께서 html코드를 복사하고 강의 중간중간 설명해주시는 강의 자료는 어디에서 찾을수있나요?
미해결
스프링 DB 1편 - 데이터 접근 핵심 원리
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 서비스 계층의 순수성을 위해 체크 예외를 런타임 예외로 변환해서 던지고, 런타임 예외로 변환 시 반드시 기존 체크 예외를 포함하여 던져야 한다. 왜냐하면 예외 발생 시 어떤 예외 때문에 해당 예외가 발생했는지 스택 트레이스를 참고하기 위해서이다. 그러면 차라리 런타임 예외 클래스의 생성자에서 예외를 포함하도록 강제하면 예외를 포함하여 던져야 한다. 는 부분이 해결 될 것 같은데요 강의에서는 다음과 같이 파라미터가 없는 기본 생성자를 만드는 특별한 이유가 있는 것인지 아니면 중요한 주제가 아니라 남기셨는지 궁금합니다. public class MyDbException extends RuntimeException { public class MyDbException() { // 이 부분을 없애고 다음의 생성자만 남김 } public class MyDbException(Throwable cause) { // 이 생성자만 강제하면 반드시 예외를 포함하여 던져야 하므로 문제가 해결됨 } }
해결됨
한 입 크기로 잘라먹는 Next.js
ES Lint 설정 안녕하세요. 현재 Next.js 15.1 버전에서 ESLint가 9버전으로 업데이트 되면서 형식이 많이 바뀌었는데 기존의 8 버전에서는 { "extends": ["next/core-web-vitals", "next/typescript"], "rules": { "@typescript-eslint/no-unused-vars": "warn", "@typescript-eslint/no-explicit-any": "off" } } 하지만 9 버전에서는 형식이 많이 바뀌었는데 no-unused-vars나 on-explicit-any 같은 설정은 어떻게 해야 하나요? 일단은 이렇게 코드를 쓰기는 했는데 적용이 잘 안되는 것 같습니다.(eslint.config.mjs) import { dirname } from "path"; import { fileURLToPath } from "url"; import { FlatCompat } from "@eslint/eslintrc"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const compat = new FlatCompat({ baseDirectory: __dirname, }); export default [ ...compat.extends("next/core-web-vitals", "next/typescript"), { files: ["**/*.ts", "**/*.tsx"], rules: { "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-explicit-any": "warn", // 경고로 설정 }, }, ];
미해결
[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
검사를 눌러 개발자도구로 가면 label이 선택되어... .input-checkbox > label 로 잘가져오며 잘 테스트가 됩니다. 따라하다 보니 궁금한점이 있습니다. checkbox에 클릭을 하는게 목적인데 저는 이렇게 한번 시도해 봤습니다. checkboxes = driver.find_elements(By.CSS_SELECTOR, "input[type='checkbox']") # 각 체크박스 클릭 for checkbox in checkboxes: if not checkbox.is _selected(): checkbox.click () time.sleep(0.5) # 잠시 대기 왜 label.click()만 되는지 궁금합니다
미해결
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] FrontControllerServletV5 에서 의존성 주입을 도전해보려고 다음과 같이 코드를 작성했습니다. FrontControllerServletV5에 HandlerMappingConfig, HandlerAdapterConfig를 이용하여 handlerMappingMap, handlerAdapter를 생성자를 통한 의존성 주입을 시도했습니다. FrontControllerServletV5 @RequiredArgsConstructor @WebServlet(name = "frontControllerServletV5", urlPatterns = "/front-controller/v5/*") public class FrontControllerServletV5 extends HttpServlet { private final Map<String, Object> handlerMappingMap; private final List<MyHandlerAdapter> handlerAdapters; @Override protected void service(HttpServletRequest request, HttpServletResponse response) //... } HandlerMappingConfig @Configuration public class HandlerMappingConfig { @Bean public Map<String, Object> handlerMappingMap() { Map<String, Object> handlerMappingMap = new HashMap<>(); handlerMappingMap.put("/front-controller/v5/v3/members/new-form", new MemberFormControllerV3()); handlerMappingMap.put("/front-controller/v5/v3/members/save", new MemberSaveControllerV3()); handlerMappingMap.put("/front-controller/v5/v3/members", new MemberListControllerV3()); handlerMappingMap.put("/front-controller/v5/v4/members/new-form", new MemberFormControllerV4()); handlerMappingMap.put("/front-controller/v5/v4/members/save", new MemberSaveControllerV4()); handlerMappingMap.put("/front-controller/v5/v4/members", new MemberListControllerV4()); return handlerMappingMap; } } HandlerAdapterConfig @Configuration public class HandlerAdapterConfig { @Bean public List<MyHandlerAdapter> handlerAdapters() { List<MyHandlerAdapter> handlerAdapters = new ArrayList<>(); handlerAdapters.add(new ControllerV3HandlerAdapter()); handlerAdapters.add(new ControllerV4HandlerAdapter()); return handlerAdapters; } } 하지만 다음과 같이 순환 의존성 에러가 발생했는데, 원인을 찾지 못하고 있습니다. 정규 빈과 내부 빈이 서로 의존하고 있다는 것인가요..? 다른 수강생 분들의 코드와 다르게 작성해보려고 했는데, 이 에러가 발생해서 원인을 찾아보려고 했지만 찾지 못했습니다, 왜 발생한 것인지 도움 부탁드립니다.. The dependencies of some of the beans in the application context form a cycle: ┌─────┐ | frontControllerServletV5 ↑ ↓ | (inner bean)#61a91c9b defined in file [.../hello/servlet/web/frontcontroller/v5/FrontControllerServletV5.class] └─────┘
미해결
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 다른 질문들 중에 "DI 적용해보기"라는 질문과 답변을 보고 저도 DI 적용을 해보려고 했습니다. 그런데 일급 컬렉션을 사용했을 때는 발생하지 않는 순환 의존성이 일급 컬렉션을 사용하지 않을 때는 발생하는데 혹시 이유를 알 수 있을까요? 제가 참고했던 코드는 아래에 있습니다. https://www.inflearn.com/community/questions/1251450/di-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0
해결됨
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
안녕하세요. 한글 2014에서 실습하고 있는 중입니다. 레지스트리에 저장할 폴더가 없어서 밑에 질문 올리신 분의 글을 보고 레지스트리에 등록을 하고 PC를 재부팅했는데도 리턴값이 false로 나오고 있습니다. 뭐가 문제일까요?ㅠㅠ 제 레지스트리 화면입니다
해결됨
한 입 크기로 잘라먹는 Next.js
안녕하세요, 우선 강의 너무 잘 들었습니다. 사전 렌더링에 대한 부분에서 궁금중이 있어 문의를 남깁니다. 클라이언트 컴포넌트 또한 서버에서 JS 실행을 통해 서버 측에서 사전 렌더링이 된다는 것을 알고 있습니다. 다만, 서버에서 실행되는 사전 사이드 렌더링의 경우 useEffect, useState 등과 같은 훅은 어떤 식으로 실행이 되는지 궁금 합니다. 왜냐하면 서버 클라이언트에서는 훅 사용이 불가능한 것으로 알고 있는데, 이는 곧 서버에서 훅을 사용하지 못한다는 뜻으로 이해하고 있어서요. 만약 해당 훅 들이 서버에서 실행되지 않고, 컴포넌트에 마운트 된 이후에 실행 되는 것이라면, 컴포넌트 return 문 안에 있는 State나 로직들은 undefined 인 상태에서 렌더링 되어 Client에 HTML 형태로 전달 되는 것일까요? 또한 비슷한 질문인데, 사전 렌더링에서 local storage, DOM 조작 등과 같이 Client에서만 접근 가능한 API에서는 어떤 식으로 사전 렌더링이 진행 되는지, 그리고 초기 HTML을 그릴 때는 해당 값들을 어떻게 처리 하는 지 궁금합니다. 좋은 강의 감사합니다!
미해결
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
선생님 안녕하세요. 우선 오늘 최종 합격하여 소식을 전하게 되었습니다. 다만, 다름이 아니라 점수가 좀 턱걸이인지라.. 담주에 예정된 최종 결과에서 합격예정이 불합격으로 바뀌는 사례가 있는지 궁금합니다. 제가 알기로는 불합격 사례에서 합격 한 사례는 있는 것으로 아는데 반대 사례가 있는지요?? 우선 정말 감사드립니다. 큰 도움이 되었습니다.
미해결
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
선생님 안녕하세요! 이번 9회 시험을 55점으로 떨어지게 되어서.. 내년 6월에 있는 10회 시험을 응시하려고 합니다 ㅠㅠ 그런데 만료 기간이 내년 5월까지라, 한 달 정도 강의를 일시정지하거나 다음 회차 시험 때까지 강의를 연장할 수 있을까요?
미해결
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
금일 빅분기 실기 가체점 결과가 올라와서 확인했는데... 합격했습니다. 1교시가 너무 어렵게 나와서 힘들었었는데... 강사님이 시험전에 2교시->3교시->1교시 순으로 준비를 하라는 글을 보고 많이 도움이 됐습니다. 덕분에 2차시험 2번째에 합격해서 감사드립니다. 회사일 때문에 강사님이 올려주신강의와 모의고사 풀이를 4번이상 반복해서 풀어본거, 마이드 맵을 기반으로 리마인드 해본 것이 많이 도움 됐습니다. 감사합니다.~~
해결됨
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
안녕하세요 저번에 남겨주신 질문에 하나 더 여쭙고자 합니다. 저번에 커서위치 스타일 추출 코드 알려주셨는데요 추출하고 개요 문단 수준을 변경해서 저장하는 방법도 있을까 해서 문의 드립니다.
해결됨
한 입 크기로 잘라먹는 Next.js
안녕하세요. 지금까지 서버 액션을 트리거 하실때 form 태그를 이용해서, 제출형식으로 트리거 하셨는데, next 에서 서버 액션을 트리거 할때 단순한 작업이라면 form태그가 아닌 버튼형식으로 하는것도 괜찮은지 궁금해서 여쭤봅니다. 버튼으로 하는것도 가능은 하지만 권장되지 않는 방식인것인가요? 이를테면 각각의 북페이지에 유저가 좋아요와 싫어요를 누를 수 있는 기능이 있다고 가정했을때, 좋아요와 싫어요는 단순한 기능이라고 생각이 되는데, 이런 경우에는 버튼으로 서버 액션을 트리거하는 방법도 괜찮은것인지 궁금합니다!. 감사합니다.
미해결
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
안녕하세요~! 잔재미코딩님을 열심히 믿고 따라가고 있는 수강생입니다. 다름이 아니라 함수 사용에서 print와 return의 차이점이 잘 이해가 되지 않아서요. def cal(a, b, c): if c == '+' : return a + b elif c == '*' : return a * b else : return 0 예를 들면 위 함수 코드를 실행하고 data = cal(2, 3, "*") print(data) 를 실행하면 바로 6이 나오지만 위의 코드에서 return대신 print()를 사용하면 data = cal(2, 3, "*") print(data) 를 실행 시 6 None 이 나온다는 차이점은 느꼈습니다. 근데 왜 이런것인지 잘 이해가 안돼요 ㅠㅠ 정확한 둘의 사용상 차이점이 무엇인가요?
해결됨
[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
next.config.mjs /** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, trailingSlash: true, generateBuildId: () => "tranme24", // 아래 주소들만 out 폴더에 만들기 exportPathMap: () => ({ "/": {page: "/"}, "/boards": {page: "/boards"}, "/404": {page: "/404"}, }) }; export default nextConfig; 위와같이 설정 경로에서 아래의 이미지와 같이 파일들이 동일한걸 확인했습니다. 왜 안되는걸까요.
미해결
Next + React Query로 SNS 서비스 만들기
지금 강의에서 보여주신게 아직 업데이트가 안 된 것인지 궁금합니다! Auth.js 홈페이지에 있는 문서와 코드가 조금 다른 것 같아서요. next.js 15 버전으로 강의 따라가고 있고 auth.js 설치할 때 auth@5 하니까 설치가 안 돼서 auth@beta 이렇게 설치하고 진행 중 입니다! 제가 본 페이지는 다음과 같습니다. https://authjs.dev/getting-started/authentication/credentials 추가 일단 제로초님이 하신 방법으로 CredentialsProvider 직접 import 하니까 되는 것 같습니다!
해결됨
한 입 크기로 잘라먹는 Next.js
안녕하세요, 강사님. 강의 너무 잘 듣고 있습니다. 혹시 사용중이신 Theme과 어떻게 설정하고 있는지 공유 부탁드려도 될까요? 가독성이 좋아서 저도 동일하게 적용하고 싶습니다. 감사합니다.