묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿,서블릿 객체
@WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet {} HelloServlet 가 서블릿이고, 스프링부트 실행시 서블릿의 객체가 생성되는것 같은데name = "helloServlet" 가 의미하는것은 무엇인가요?? 서블릿 객체 이름을 의미하는건가요?아니면 그냥 서블릿 식별자 정도 인가요??
-
미해결React + GPT API로 AI회고록 서비스 개발 (원데이 클래스)
speed.js란 파일자체가 프로젝트에 없습니다!
그런데 글만 회고록에 글만입력하면 오류가 납니다. 오류의 원인은 speed.js파일 때문이라고 합니다. 현재 코드는 아래와 같습니다. 허파가 뒤집어집니다.import { Input, Button} from 'antd'; const { TextArea } = Input; import { useState } from "react";// 저장하는 곳임포트 const DiaryInput = ({ isLoading, onSubmit }) => { const [userInput, setUserInput] = useState(""); // isLoading 로딩상태에서 사용하는 변수 // inSubmit 다입력 작성하면 사용 const handleUserInput = (e) => { setUserInput(e.target.value); }; const handleClick = () => { onSubmit(userInput); }; return ( <div> <TextArea value={userInput} onChange={handleUserInput} placeholder="오늘 일어난 일들을 간단히 적어주세요." /> <Button loading={isLoading} onClick={handleClick}> GPT 회고록을 작성해줘! </Button> </div> ); } export default DiaryInput; // import { Input , Button} from 'antd'; // import { useState } from 'react'; // const { TextArea } = Input; // const DiaryInput = ({isLoading, onSubmit}) => { // const [userInput, setUserInput] = useState(""); // //사용자의 입력을 받아 상위 컴포넌트로 넘기기 // // 로딩상태에서는 제출버튼 못누루게 // const handleUserInput =(e)=>{ // setUserInput(e.target.value); // const handleClick = ()=>{ // onSubmit(userInput); // } // } // return ( // <div> // <TextArea value={userInput} onChange={handleUserInput} placeholder='오늘 하루 회고'/> // <Button loading={isLoading} onClick={handleClick}>GPT회고록 시작</Button> // </div> // ); // }; // export default DiaryInput;import { useState } from 'react'; import { CallGPT } from './api/gpt'; import DiaryInput from './components/DiaryInput'; const dummyData = { "title": "고립된 개발자의 고민", "thumbnail": "https://source.unsplash.com/1600x900/?programming", "summary": "혼자 코딩과제를 진행하면서 걱정이다.", "emotional_content": "최근 혼자 코딩과제를 진행하면서, 협업이 없이 모든 것을 혼자 결정하고 해결해야 한다는 부담감에 많이 무겁습니다. 강의를 듣고 최선을 다해 프로젝트를 진행했지만, 예상치 못한 버그들로 인해 스트레스가 많이 쌓였습니다. 스택오버플로와 GPT를 통해 문제를 해결하긴 했지만, 이러한 문제해결 방식이 정말로 제 개발 실력을 향상시키는지에 대해 의문이 듭니다. 왠지 스스로의 능력을 시험할 기회를 잃은 것 같아 아쉽고, 불안감도 커지고 있습니다.", "emotional_result": "이 일기에서 감지되는 감정은 불안, 부담감, 그리고 자신감의 결여입니다. 고립된 상황에서의 성공에 대한 압박감과 문제 해결 방법에 대한 의심은 정서적으로 큰 부담을 주고 있습니다. 자기 효능감이 낮아짐을 느끼는 상황입니다.", "analysis": "고립되어 문제를 해결하는 과정은 큰 스트레스와 불안을 유발할 수 있습니다. '혼자서 하는 일은 좋은 일이든 나쁜 일이든 더욱 크게 느껴진다'는 에릭 에릭슨의 말처럼, 혼자서 모든 것을 해결하려는 시도는 때로는 개인의 성장에 도움이 될 수 있지만, 지속적인 고립은 자기 효능감을 저하시킬 수 있습니다. 이러한 상황에서는 자신의 노력을 인정하고, 필요한 경우 도움을 요청하는 것이 중요합니다.", "action_list": [ "프로젝트 중 발생하는 문제를 혼자 해결하려 하지 말고, 멘토나 동료 개발자와 상의를 통해 해결 방안을 모색하라.", "정기적으로 자신의 학습 방법과 진행 상황을 평가하여, 필요한 경우 학습 방식을 조정하라.", "개발 과정에서의 스트레스 관리를 위해 적절한 휴식과 여가 활동을 통해 정서적 안정을 찾으라." ] }; function App() { const [data, setData] = useState(dummyData); // 우선 빈문자열로 해놓고 const [isLoading, setIsLoading] = useState(false); const handleClickAPICall = async (userInput) => { try { setIsLoading(true);// 처음에는 로딩을 트루 const message = await CallGPT({ prompt: `${userInput}`, }); // Assuming callGPT is a function that fetches data from GPT API setData(JSON.parse(message)); } catch (error) { // Handle error (you might want to set some error state here) } finally { setIsLoading(false);//다음에는 펄스로 } }; const handleSubmit = (userInput) => { handleClickAPICall(userInput); }; console.log(">>data", data); return ( <> <DiaryInput isLoading={isLoading} onSubmit ={handleSubmit} /> <button onClick={handleClickAPICall}>GPT API call</button> <div>title : {data?.title}</div> <div>analysis : {data?.analysis}</div> <div>emotional_content : {data?.emotional_content}</div> <div>emotional_result : {data?.emotional_result}</div> </> ); }; export default App; // import { useState } from "react"; // import { CallGPT } from "./api/gpt"; // import { message } from "antd"; // import DiaryInput from "./components/DiaryInput"; // const dumyData = JSON.parse(` // { // "title": "당황스러운 예제 에러", // "thumbnail": "https://source.unsplash.com/1600x900/?confused", // "summary": "가끔 예제 에러가 발생하여 당황함", // "emotional_content": "가끔 예제 에러가 나타나는 것이 정말 당황스럽다. 이런 상황들은 예상치 못한 문제로 인해 나를 혼란스럽게 만든다. 그럼에도 불구하고, 이런 에러들은 동시에 나의 문제 해결 능력을 시험한다.", // "emotional_result": "당황스러움과 혼란스러움이 느껴진다. 그러나 이는 예상치 못한 문제에 대처하는 능력을 향상시키는 과정일 수 있다.", // "analysis": "당신의 당황함과 혼란스러움은 예상치 못한 상황에 대한 불안감과 두려움을 반영할 수 있습니다. 하지만, '문제는 기회다'라는 유명한 격언을 기억하십시오. 이러한 에러들은 당신의 문제 해결 능력을 향상시키는 좋은 기회일 수 있습니다.", // "action_list": [ // "예상치 못한 에러에 대비하는 습관 만들기", // "문제 해결 능력 향상을 위한 자기계발", // "당황하지 않고 차분하게 상황을 평가하는 능력 기르기" // ] // } // `); // function App() { // const [data, setData] = useState(dumyData); // const [isLoading, setIsLoading] = useState(false); // // 여기로딩상태가 // const handleClickAPICall = async (userInput) => { // try{// try catch로 감싸서, 처음에는 로딩상태를 트루라고 하고 // setIsLoading(true); // const message = await CallGPT({ // prompt:'{userInput}', // }); // setData(JSON.parse(message));// 그리고 데이터가 잘오면 받아보자 // } catch (error){ // }finally{ // setIsLoading(false);// 나중에는 false라고 하자 // } // }; // const handleSubmit = (userInput)=>{ // handleClickAPICall(userInput); // }; // console.log(">>data", data); // return ( // <> // <DiaryInput isLoading={isLoading} onSubmit={handleSubmit} /> // // 여기로 옴 // <button onClick={handleClickAPICall}>GPT API call</button> // <div>data : {data?.title}</div> // <div>thumbnail: {data?.thumbnail}</div> // <div>summary : {data?.summary}</div> // <div>emotional_resul : {data?.emotional_resul}</div> // <div>emotional_content : {data?.emotional_content}</div> // <div>analysis: {data?.analysis}</div> // <div>action_list: {data?.action_list}</div> // </> // ); // } // export default App;{ "name": "my-gpt-diary", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview" }, "dependencies": { "@ant-design/icons": "^5.4.0", "antd": "^5.20.1", "react": "^18.3.1", "react-dom": "^18.3.1", "styled-components": "^6.1.12" }, "devDependencies": { "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@typescript-eslint/eslint-plugin": "^7.15.0", "@typescript-eslint/parser": "^7.15.0", "@vitejs/plugin-react": "^4.3.1", "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", "typescript": "^5.2.2", "vite": "^5.3.4" } }
-
미해결김영한의 실전 자바 - 중급 2편
<> 유무
MyLinkedListV3 stringList = new MyLinkedListV3<>();에서는 <> 가 있어야 하는데 왜 MyLinkedListV3 stringList = new MyLinkedListV3[CAPACITY]; 에서는 <> 를 쓰면 안되는지 궁금합니다.
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
데이터 로그 설계하기 (메뉴 카테고리)
안녕하세요. 이번엔 메뉴 카테고리에 대한 로그 테이블을 작성해 두었습니다.수정이 필요할 경우 말씀해주세요~!1. 메뉴 카테고리 영역1) 클릭률 (CTR)① 분자: 카테고리별 클릭 수- event_name: click_home_category- parametercategory_idcategory_namecategory_sequencesession_id② 분모: 홈 화면 진입 수- event_name: view_home- parametersession_id2) 카테고리 영역을 통한 주문 전환율 (CVR)① 분자: 메뉴 카테고리 영역을 사용해 주문한 수- event_name: click_payment- parameteruse_home_category: truecategory_idcategory_namerestaurant_idrestaurant_namepayment_type: cardsession_id② 분모: 카테고리를 통해 레스토랑 상세 화면에 진입한 수- evnet_name: view_restaurant- parametersession_idrestaurant_idrestaurant_nameues_home_category:truecategory_idcategory_name추가 질문은 아래와 같습니다.- 어떤 카테고리에서 들어왔는지 구분할 수있게 업체 상세보기 파라미터에도 카테고리 id와 name을 추가해 두었는데요.수집해야하는 필요 정보인지가 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
문제 번호를 어디서 찾나요?
다른 강의들은 시작할때 백준 몇번인지 알려주 셨는데 이번 강의는 없는 것 같아서요. 각 강의가 몇번 문제인지 작성된 곳이 있나요?
-
해결됨서류합격률 4%를 탈출하는 개발자 이력서 작성법(실습 포함)
지원동기 관련 질문
자소서를 작성하지 않는 지원구조인 경우 이력서에 지원동기를 넣으라는 내용이 있었는데이 때 지원동기를 별도의 섹션으로 구분하는 것과 이력서 앞 자기소개 부분에 넣어서 작성을 하는것 중 어떤 방법이 일반적인가요?
-
미해결김영한의 실전 자바 - 중급 2편
6강 해시 충돌 구현
2:30 를 보면 영한님께서 해시 테이블에서 Linkedlist 를 전체 버킷의 컨테이너로 사용하셨는데, ArrayList 를 전체 버킷의 컨테이너로 사용해도 전혀 문제가 없지 않나요 ?따라서, 해시 테이블에서 ArrayList를 전체 버킷의 컨테이너로 사용하고, 각 버킷 내에서는 LinkedList를 사용해 충돌을 처리하는 방법도 괜찮지 않나요 ?
-
미해결스프링 핵심 원리 - 기본편
프로젝트 생성 오류
강의 내용 그대로 따라했는데 강사님은 다운로드 하고 build.gradle 을 누르면 바로 인텔리제이로 이동되는것같은데 저는 인텔리제이로 열어지지가 않고 자꾸 비주얼스튜디오코드로 열립니다. 제가 인텔리제이에서 따로 들어가서 설치를 하거나 설정을 해야할것이 있는걸까요? 강의 처음부터 놓치지 않고 따라하고 있는데 안되니까 몇시간째 너무 스트레스를 받고있는 상황입니다.
-
미해결MS Azure 애저 클라우드 서비스 구축 이해와 보안
공인 IP 질문있습니다.
공인 IP에 지역, 전역 나눠져 있던데, 그 차이점이 뭔가요?
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
질문있습니다!
여기서 experience를 모델에서 못찾아서??experience.startYearMonth 등 인식이 안되는것 같습니다.cannot resolve라고 뜹니다. 혹시 제가 컨트롤러라든지 DTO라든지 잘못적고 놓쳤나보다 하고 봤는데 왜 안되는지 못찾겠습니다. 한번 확인 가능할까요?컨트롤러서비스DTO 데이터 초기화 이렇게 타임리프 적용이 안될 떄는 어떻게 찾는게 좋은 방법일까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
graphql 서버 언제 고쳐질까요.. ㅠ
공부하고 싶어요..ㅠ
-
해결됨김영한의 실전 자바 - 중급 1편
강의 완강 시간 질문?
안녕 하세요. 궁금증이 생겨서 질문을 남깁니다.공식 서포터즈님들의 댓글 들을 보다가, "이분 들은 강의를 완강하는데 얼마나 걸리까?"라는 생각을 하게 되었습니다.뜬금없는 질문이긴 합니다만, 만약에 시간의 여유가 아주 넘쳐 난다면, 공식 서포즈님들 이나, 정식 개발자 분들(개발자로 취직하신 분이시거나 프리랜서 등등)은, 영한님의 강의 중급1편, 중급 2편을 완강(체득 포함)하는데 시간이 얼마나 걸리나요?답변 부탁 드립니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
다중 포트 실행시 계정 로그인 질문
안녕하세요 현재 실전 프로젝트 restApi 쪽을 공부하고 있습니다! 여기서 한가지 의문점이 든게 있다면, 제가 port 8080 과 port 9001 두개를 열어두고, :8080 에는 /login (From로그인) , >> User..Filter 토큰:9001 에는 /api/login (Rest로그인), >> Rest..Filter 토큰이렇게 열어둔 뒤 같은 admin 계정으로 로그인 시도 결과 >> 로그인이 풀리는 것을 확인하였습니다. 저는 토큰이 두가지가 되어있어서 각각 다른 계정으로 인식 하는 줄 알았는데 이 경우 선생님의 강의에 있던 [세션5] 동시 세션 관리 부분을 따로 설정을 해줘야 하는 것인가요??
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
제이쿼리 슬라이드제작(2) left : 0 이 왜 들어가는지 모르겠습니다.
slide-items를 애니메이트해서 -1200픽셀만큼 이동시킨후 다시 left 0 은 무슨소린지 모르겠습니다 그러면 첫번째 이미지가 보여야하는게아닌가요 ? 첫번째 이미지가 보여진후 appendTo로 인해서 마지막 요소로 이동해야하는게 정상아닌가요..?
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
데이터 로그 설계하기 (배너)
문제 주신 내용들을 설계하다보니 많이 길어져서요.하나씩 등록할게요~! 수정이 필요한 곳이 있다면 말씀해주세요!1. 배너 영역1) 클릭률 (CTR)① 분자: 배너 클릭 수- event_name: click_home_topbanner- parameterbanner_type (광고, 이벤트, 공지)banner_idbanner_sequencebanner_namesession_id② 분모: 홈 화면 진입 수- event_name: view_home- parametersession_id2) 구매 전환율 (CVR)① 분자: 배너로 인입해 주문한 수 - event_name: click_payment- parameteruse_home_banner: truesession_idrestaurant_idrestaurant_namepayment_type: card② 분모: 배너를 통해 레스토랑 상세 화면에 진입한 수- evnet_name: view_restaurant- parametersession_idrestaurant_idrestaurant_nameues_home_topbanner추가 질문은 아래와 같습니다!※ 메인 페이지(home)에 여러가지 배너가 있을텐데요, 상단에 있는 배너라 구분을 위해서 topbanner라고 명칭했는데 이벤트 네임을 설정할 때 배너들의 구분은 어떻게 하면 좋을지 궁금합니다.ㄴ 결재 시 어떤 배너를 사용해서 들어왔는지 판단을 위해 필요할거 같아요.
-
미해결[실전 게임 코드 리뷰] 유니티 클리커 게임
코드 분석하면서 강의 복습중인데 질문 있습니다!
안녕하세요.저만의 게임을 완성해본적이 한번도 없어서 이번에는 꼭 완성하고 출시까지 가고싶어서 강사님 코드를 분석중에 있습니다.문득 궁금한 점이 생겼는데요, 초심자 입장에서 코드를 다 짜고 나서 리팩토링을 하는 편이 나을지 아니면 처음부터 감안하고 강사님처럼 폴더랑 스크립트를 최대한 단일책임원칙에 입각해서 나누는게 좋을지 고민입니다.후자가 이상적이라고 생각은 드는데, 아직 초심자다보니 선뜻 손이 안가는 문제가 있습니다.- 혹시 강사님께서는 앤트 컴퍼니정도 규모의 게임을 만드실 때 코드를 애초부터 분할해서 작성하셨나요...?- 강사님이 초심자이실 때는 어떻게 하셨는지, 지금 현실적으로 어떻게 하기를 권장하실지도 궁금합니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전 문제 풀이 3 - 5 질문
안녕하세요. 실전 문제풀이 3의 QUESTION 05번 질문이 있습니다. 해당 문제의 정답이 B인데 Redis용 Amazon ElastiCache가 문제의 "장바구니 데이터가 항상 보존되도록"을 만족할 수 있나요?? elastiCache가 메모리 기반이라 빠른 속도를 제공하지만 일시적인 데이터 저장용으로 알고 있어서 질문드립니다.
-
미해결코드로 배우는 스프링 웹 프로젝트 - Basic
Failed to load ApplicationContext 해결 방법 부탁드립니다.
안녕하세요. 의존성 주입 연습하기 강의 중 10:30 쯤에서 test 하는 중 java.lang.IllegalStateException: Failed to load ApplicationContext예외가 발생했습니다.여러 가지 자료들을 검색해 보고 시도해봤으나 안 됩니다.어떻게 하면 되는지요?
-
미해결DevOps를 위한 Docker 가상화 기술 (Private Harbor Registry)
Prometheus 및 컨테이너 상태 메트릭 수집
Prometheus 설명 부분에서요,컨테이너 상태에 대한 Metrics 수집 부분에 대해서 질문있습니다.실무에서 컨테이너 환경에서 애플리케이션을 개발한적은 없고, Prometheus, Grafana, Loki, Promtail 정도만 컨테이너 기반에서 로그 수집하는 정도로만 활용해봤는데요,스프링 부트 환경에 액츄에이터, 마이크로미터 라이브러리 구성해서 N개의 서버(운영, 개발, 스테이징 서버 등)에서 프로파일에 따른 로그를 수집하고, Promtail도 각 서버에 설치하고, 별도의 모니터링 서버에 컨테이너 기반으로 Prometheus, Grafana, Loki 셋팅해서 사용하고 있습니다.(이렇게 구성한 아키텍쳐?가 베스트 프랙티스인지는 잘모르겠네요)그런데 해당 강의를 듣고 생각한게 컨테이너 기반의 애플리케이션을 올릴 경우 추가적으로 컨테이너 상태에 대한 메트릭 수집이 있을 것 같은데요, 컨테이너 실행/중지 같은 상태 제외하면 어떤 유의미한 데이터를 수집할 수 있는지 감이 안오는데, 어떤것들이 있을까요? CPU나 메모리 같은 리소스 정도가 있을꺼 같고..추가적으로 컨테이너 환경의 애플리케이션을 구성한다면 MSA 환경이 아니더라도 로그 정보를 별도의 로그 서버에서 관리하는게 일반적인가요? 이 강의를 듣기전에는 애플리케이션 서버가 당연히 로그도 수집하는거로 생각해서 Promtail도 각 로그파일이 있는 서버에 다 설치했거든요. 이전 섹션에서 로그를 별도 컨테이너에서 관리하는거 보고 궁금증이 생겼습니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
프록시 패턴 vs 데코레이터 패턴
섹션11에서 프록시에 대한 설명이 있는데요, 제가 알고 있는 데코레이터 패턴과 완전히 동일한 거 같은데 둘간의 차이점은 뭐라고 봐야하나요?