묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[2024 업데이트] UX/UI 시작하기 : Figma 입문 (Inflearn Original)
툴바가 캔버스 하단 중앙에 있는데 강의화면에서 보이는 것처럼 상단 중앙으로 이동할 수는 없나요
툴바가 캔버스 하단 중앙에 있는데 강의화면에서 보이는 것처럼 상단 중앙으로 이동할 수는 없나요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
java -jar jpashop-0.0.1-SNAPSHOT.jar 예외발생
20분 47초경에서 정체중입니다.위와같은 오류가 계속 발생중입니다.위는 project structure입니다인텔리제이에서 그냥실행했을떄는 잘 작동합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
java -jar hello-spring-0.0.1-SNAPSHOT.jar 까지 가는 경로 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 현재 cmd에서C:\Users\choiminseok>cd studyC:\Users\choiminseok\study>cd hello-springC:\Users\choiminseok\study\hello-spring>gradlew이렇게 쳐서 build successful이 나왔고C:\Users\choiminseok\study\hello-spring>gradlew build이렇게 입력해서마찬가지로 build successful이 나왔습니다.이제 여기서java -jar hello-spring-0.0.1-SNAPSHOT.jar이런게 보이는 쪽으로 가야하는데 뭘 입력하면 되나요?강사님은 ls -arlth를 입력해 뭔가 나오는데저는 ls를 입력하면 'ls'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.라고 나옵니다. 해결방법 알려주세요참고로 윈도우입니다.
-
해결됨실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
Logging 질문
LOGGING ={ 'version':1, 'disable_existing_loggers':False, 'handlers':{ 'file':{ 'level':'DEBUG', 'class':'logging.FileHandler', 'filename':os.path.join(BASE_DIR, 'logs/django.log'), 'formatter':'json', }, 'console':{ 'class':'logging.StreamHandler', 'formatter':'json', }, }, 'formatters':{ 'json':{ 'class': 'pythonjsonlogger.jsonlogger.JsonFormatter', 'format': '%(asctime)s %(levelname)s %(name)s %(message)s', }, }, 'root':{ 'handlers':['file','console'], 'level':'DEBUG', }, 'loggers':{ 'django':{ 'handlers':['file','console'], 'level': 'DEBUG', 'propagate':False, }, }, runserver 하는 순간 {"asctime": "2025-02-14 20:41:50,823", "levelname": "DEBUG", "name": "django.utils.autoreload", "message": "File C:\\Users\\moon\\miniforge3\\envs\\workout\\Lib\\site-packages\\PIL\\__init__.py first seen with mtime 1739352505.781736"} 이런 변경한 적 없는 것들이 자동리로드 되면서 콘솔에 계속 올라옵니다. 이유가 궁금합니다.
-
미해결[웹 개발 풀스택 코스] 부트스트랩 기초
db.json 문제 해결후 조회버튼을 누르면 테이블이 형성이 안됨
브라우저에서 조회버튼을 누르면 아무 반응이 없어요 어떻게 해야 하나요
-
미해결[웹 개발 풀스택 코스] 부트스트랩 기초
cd json-server와 json-server --watch db.json 오류
C:\Project\Bootstrap>cd json-serverThe system cannot find the path specified.C:\Project\Bootstrap>json-server --watch db.json--watch/-w can be omitted, JSON Server 1+ watches for file changes by defaultFile db.json not found이렇게 두가지 명령어에 오류가 뜹니다 어떻게 해야 하나요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
프론트에서 페이지네이션 count 계산법 질문드립니다!
페이지 번호 공식은 다음 버튼 활성화 유무만 판단하는 거고 이전 버튼 유무는 프론트에서'만' 제어하는 걸까요? 프론트에서도 페이지 번호 공식을 알고 있는걸까요? 2:50초 11~20번 페이지에 있을때프론트에서 계산한값(601) == 백엔드에서 내려준 값(601)=> 같으므로 '다음' 버튼 활성화 프론트에서 계산한값(601) == 백엔드에서 내려준 값(500)=> 601 미만 이므로 '다음' 버튼 비활성화 (강의 넘 재밌어요. 게임 하는거 보다 재밌다..)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
build 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. C:\Users\choiminseok\study\hello-spring>gradlew buildERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Files\Java\Java\jdk-17Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation. 이렇게 cmd에서 오류가 나서 환경변수에서 jdk-17에 맞게 설정해줘야한다는 이해했습니다. 근데 제가 jdk-23을 다운을 받아서 23으로 환경변수를 설정해놨는데ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Files\Java\Java\jdk-17계속 이렇게 뜨는데 directory가 17말고 23으로 가게 하고싶은데 방법이 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 build 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 윈도우를 쓰고 있어서 cmd를 켠 후C:\Users\choiminseok\study\hello-spring>gradlew.bat이렇게 입력하니 아래와 같이 뜨는데 왜 그런가요?ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Files\Java\Java\jdk-17Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation. gradlew를 입력했을때도 똑같이 나와요C:\Users\choiminseok\study\hello-spring>gradlewERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Files\Java\Java\jdk-17Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation.
-
미해결
시대인재 강대? 실모좀 알려주세요 ㅠㅠ
시대인재랑 강대쪽 에서 (플로우 브릿지 리바이벌 엣지 서바이벌(N @) 강대K 강대X? 크럭스 서킷 숏컷이 있다고 들어봤는데 이게 뭔지를 몰라서 설명해주실 수 있나요..?ㅠㅠ 과탐이랑 수학이 달라서 따로 설명해주시면 감사하겠습니다.EX) 브릿지 --과탐은 전체 모의고사. 수학은 하프 모의고사 느낌 이런 식으로요..ㅠㅠ 부탁드리겠습니다.
-
해결됨NAVER Cloud Boot Camp - 네이버 클라우드 부트 캠프
Crud DB for MySql 설정문제
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
fsm_counter모듈의 o_done
안녕하세요 🙂 강의 잘 수강하고 있습니다![1. 질문 챕터] : 9분05초[2. 질문 내용] : fsm_counter모듈에서 o_running과 o_idle은 assign문으로 처리하고 o_done은 reg타입 선언 후 always문으로 사용하는지가 궁금합니다.[3. 시도했던 내용, 그렇게 생각하는 이유] : is_done이 always문의 영향을 받아 counter의 값에 영향을 받고 이가 n_state를 S_DONE으로 만들기 때문인가요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
usereducer 투두리스트 업그레이드 질문
usereducer 강의를 들으면서 코드를 바꿨습니다import './App.css' import {useState, useRef,useReducer} from "react"; import Header from './components/Header' import Editor from './components/Editor' import List from './components/List' const mockData = [ { id : 0, isDone : false, content : "react study", date : new Date().getTime(), }, { id : 1, isDone : false, content : "lol", date : new Date().getTime(), }, { id : 2, isDone : false, content : "fifa", date : new Date().getTime(), }, ]; function reducer (state,action) { switch(action.type){ case 'CREATE' : return [action.data,...state]; case 'UPDATE' : return state.map((item)=> item.id === action.targetId ?{...item, isDone : !item.isDone} : item ); case 'DELETE' : return state.filter((item)=> item.id !== action.targetId); default: return state; } } function App() { const [todos, dispatch] = useReducer(reducer,mockData); const idRef = useRef(3); const onCreate = (content) => { dispatch({ type : "CREATE", data : { id : useRef.current++, isDone : false, content : content, date : new Date().getTime(), } }) } const onUpdate = (targetId)=> { dispatch({ type : "UPDATE", targetId : targetId, }); }; const onDelete = (targetId)=> { dispatch({ type : "DELETE", targetId : targetId, }); }; return ( <div className="App"> <Header/> <Editor onCreate = {onCreate}/> <List todos={todos} onUpdate={onUpdate} onDelete={onDelete}/> </div> ) } export default App; 문제는 이렇게 바꾼 후에 초기 mock data는 check box와 삭제가 문제가 없지만새롭게 추가한 리스트에 대해서는 check box와 삭제가 제대로 실행되지 않습니다.강의를 몇번 돌려봐도 app.jsx를 제외한 부분을 고치는 과정은 없었고 usereducer로 바꾸기 직전으로 넘어가서 section 08에서는 새롭게 추가된 리스트에 대하여 check box와 삭제가 문제없는걸 보면 usereducer를 사용하면서 문제가 생긴 것 같은데 뭐가 문제인지 잘 모르겠습니다
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
Header에서 정렬기준
Header에서 total, cost, fun 등 정렬 값이 바뀌는 건 알겠는데, 이 값이 바뀔 때 점수가 높은순으로 정렬이 되는데, 이 정렬을 지정해주는 실행 코드가 어디에 있는지 모르겠어요. <div class="filter"> <select id="sortList" class="sort-list"> <option value="total" ${sortBy === 'total' ? 'selected' : ''}>Total</option> <option value="cost" ${sortBy === 'cost' ? 'selected' : ''}>Cost</option> <option value="fun" ${sortBy === 'fun' ? 'selected' : ''}>Fun</option> <option value="safety" ${sortBy === 'safety' ? 'selected' : ''}>Safety</option> <option value="internet" ${sortBy === 'internet' ? 'selected' : ''}>Internet</option> <option value="air" ${sortBy === 'air' ? 'selected' : ''}>Air Quality</option> <option value="food" ${sortBy === 'food' ? 'selected' : ''}>Food</option> </select> </div>
-
미해결TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
[공유] State 패턴 강의 최종본 커밋에서 누락된 부분이 존재
git commit 으로 공유된 State 패턴 완성본 커밋 에서 강의 마지막 부분 (23:50) 과 달라서 해당 부분을 사용하시는 분들은 정상으로 동작하지 않을 수 있습니다.그래서 해당 공유합니다.강의 시작 부분 23:50코드 export class ChromeGrimpanMenu extends GrimpanMenu { onClickPen() { const command = new PenSelectCommand(this.grimpan); this.executeCommand(command); // { name: 'pen' }; // this.grimpan.setMode('pen'); // 변경, 해당 부분은 강의에도 나와있지는 않지만 pen 모드일때 변경이안되어서 자체적으로 추가함 this.grimpan.history.stack.push(command); } onClickEraser() { // this.executeCommand(new EraserSelectCommand(this.grimpan)); // { name: 'eraser' }; // 기존 this.grimpan.setMode('eraser'); // 변경 } onClickCircle() { // this.executeCommand(new CircleSelectCommand(this.grimpan)); // { name: 'eraser' }; this.grimpan.setMode('circle'); // 변경 } onClickRectangle() { // this.executeCommand(new RectangleSelectCommand(this.grimpan)); // { name: 'eraser' }; this.grimpan.setMode('rectangle'); // 변경 } onClickPipette() { // this.executeCommand(new PipetteSelectCommand(this.grimpan)); // { name: 'eraser' }; this.grimpan.setMode('pipette'); // 변경 }
-
미해결웹소켓/STOMP 채팅서비스(spring, vue, redis)
DISCONNECT 질문이 있습니다.
안녕하세요, 일단 양질의 강의를 올려주셔서 감사하다는 말씀을 드립니다.다름이 아니라, 화면을 그리지 않고 단순히 백엔드 소스를 구현하면서 강의를 진행하고있습니다.https://jiangxy.github.io/websocket-debug-tool/라는 사이트에서 Connect(STOMP), pub/sub을 테스트 중입니다.그 과정에서 DISCONNECT를 진행할 경우, 아래와 같은 에러 메세지가 발생합니다. ava.lang.IllegalStateException: Message will not be sent because the WebSocket session has been closed at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:455) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlockInternal(WsRemoteEndpointImplBase.java:313) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:266) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:250) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendPartialString(WsRemoteEndpointImplBase.java:223) at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:48) at org.springframework.web.socket.adapter.standard.StandardWebSocketSession.sendTextMessage(StandardWebSocketSession.java:217) at org.springframework.web.socket.adapter.AbstractWebSocketSession.sendMessage(AbstractWebSocketSession.java:108) at org.springframework.web.socket.handler.ConcurrentWebSocketSessionDecorator.tryFlushMessageBuffer(ConcurrentWebSocketSessionDecorator.java:190) at org.springframework.web.socket.handler.ConcurrentWebSocketSessionDecorator.sendMessage(ConcurrentWebSocketSessionDecorator.java:163) at org.springframework.web.socket.messaging.StompSubProtocolHandler.sendToClient(StompSubProtocolHandler.java:529) at org.springframework.web.socket.messaging.StompSubProtocolHandler.handleMessageToClient(StompSubProtocolHandler.java:516) at org.springframework.web.socket.messaging.SubProtocolWebSocketHandler.handleMessage(SubProtocolWebSocketHandler.java:386) at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:152) at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583)해당 문제를 해결하기 위해, 관련해서 자료를 검색해보았지만 해결하지 못해 질문을 드립니다.혹시 확인을 해보아야할 메소드나 검색 키워드를 알려주실 수 있을까요?이미지도 첨부드립니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
시계만들기 질문
안녕하세요 🙂[1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요.[2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂[3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.) ================ 다음 내용은 읽어보시고 지우시면 됩니다.=================질문 내용을 작성해주실 때, 위의 3단계로 제가 이해할 수 있게 작성해주시면 정확한 답변을 드릴 수 있을 것 같아요!!현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.================== 시계만들기에서 주신 자료를 wsl에서 build로 실행했을때는 강의와 같이 시뮬레이션 파형이 잘 나오는데 윈도우에서 vivado를 실행해서 올려주신 파일 그대로 가져다가 실행하면 시뮬레이션 파형이 강의와 다를까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080 연결할 수 없음이 떠요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 이렇게 해두고 서버 재시작 누르고 확인해봐도 연결할 수 없다고 뜹니다. C:\Users\choiminseok\.jdks\corretto-17.0.13\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1.4\lib\idea_rt.jar=5957:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1.4\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\choiminseok\OneDrive\Desktop\inflearn\inflearnSpringstart\hello-spring\out\production\classes;C:\Users\choiminseok\OneDrive\Desktop\inflearn\inflearnSpringstart\hello-spring\out\production\resources;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-thymeleaf\3.4.2\8dcb10dc369c51639b32bcc2a423fd5625c299f4\spring-boot-starter-thymeleaf-3.4.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\3.4.2\cf1c8efe77dccf221acf5f0ce9cc24c718c0ca44\spring-boot-starter-web-3.4.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\3.4.2\9d914208449fce99a67d3def60957cdcc98b552a\spring-boot-starter-3.4.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf-spring6\3.1.3.RELEASE\4b276ea2bd536a18e44b40ff1d9f4848965ff59c\thymeleaf-spring6-3.1.3.RELEASE.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\3.4.2\e413d51228ddaf6a9644533987faa0ae6e18fe47\spring-boot-starter-json-3.4.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\6.2.2\9b1aeb179ba9667bc78a4a5cec4ec8087db404d7\spring-webmvc-6.2.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\6.2.2\bd2ef98bf98b6ecf8dd29106ae27b7515524c21\spring-web-6.2.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\3.4.2\c50511dba751ffe7df320d27c6875feb2745654e\spring-boot-autoconfigure-3.4.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\3.4.2\b2514201ba6b838bd638a51619515501c5baefea\spring-boot-3.4.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\3.4.2\be7631ab8d3cb2a6a3c9981dcaa6d0867c964772\spring-boot-starter-logging-3.4.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\6.2.2\94269e888dc979e75a1a1b9600d7153d72e6a7f1\spring-core-6.2.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\2.3\936b36210e27320f920536f695cf1af210c44586\snakeyaml-2.3.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf\3.1.3.RELEASE\51474f2a90b282ee97dabcd159c7faf24790f373\thymeleaf-3.1.3.RELEASE.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\2.0.16\172931663a09a1fa515567af5fbef00897d3c04\slf4j-api-2.0.16.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.18.2\7b6ff96adf421f4c6edbd694e797dd8fe434510a\jackson-datatype-jsr310-2.18.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.18.2\72960cb3277347a748911d100c3302d60e8a616a\jackson-module-parameter-names-2.18.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.18.2\9ed6d538ebcc66864e114a7040953dce6ab6ea53\jackson-datatype-jdk8-2.18.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.18.2\deef8697b92141fb6caf7aa86966cff4eec9b04f\jackson-databind-2.18.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\6.2.2\aa01a7faa3694983339ca7e45619860ef34052d6\spring-context-6.2.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\6.2.2\2a1a445d4cd8e5fe2311df04fc25c0bc54bd2ce4\spring-aop-6.2.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\6.2.2\ec8ee520ff7b147de8ac04d330848d468253f84d\spring-beans-6.2.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\6.2.2\20164dd3a70d0048185cf02bb1b097b22e73d820\spring-expression-6.2.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-observation\1.14.3\cd66186a1fe8465dc732d9514bade1104044b56d\micrometer-observation-1.14.3.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.5.16\113979db51dfad6dc895b34460d7b7ff64ffe7d2\logback-classic-1.5.16.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.24.3\da1143e2a2531ee1c2d90baa98eb50a28a39d5a7\log4j-to-slf4j-2.24.3.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\2.0.16\6d57da3e961daac65bcca0dd3def6cd11e48a24a\jul-to-slf4j-2.0.16.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\6.2.2\1fbbb0b2e85c6eac7c366c5eed5b124785f05ac8\spring-jcl-6.2.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.attoparser\attoparser\2.0.7.RELEASE\e5d0e988d9124139d645bb5872b24dfa23e283cc\attoparser-2.0.7.RELEASE.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.unbescape\unbescape\1.1.6.RELEASE\7b90360afb2b860e09e8347112800d12c12b2a13\unbescape-1.1.6.RELEASE.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.18.2\985d77751ebc7fce5db115a986bc9aa82f973f4a\jackson-annotations-2.18.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.18.2\fb64ccac5c27dca8819418eb4e443a9f496d9ee7\jackson-core-2.18.2.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-commons\1.14.3\bf17f05dd6343d36ecc31076197a962cfdf46131\micrometer-commons-1.14.3.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.5.16\4f17700f046900aea2fadf115e2d67fec921f7fd\logback-core-1.5.16.jar;C:\Users\choiminseok\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.24.3\b02c125db8b6d295adf72ae6e71af5d83bce2370\log4j-api-2.24.3.jar hello.hello_spring.HelloSpringApplication . ____ _ __ _ _ /\\ / ___'_ __ _ ()_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.4.2)2025-02-14T17:51:51.150+09:00 INFO 24936 --- [hello-spring] [ main] h.hello_spring.HelloSpringApplication : Starting HelloSpringApplication using Java 17.0.13 with PID 24936 (C:\Users\choiminseok\OneDrive\Desktop\inflearn\inflearnSpringstart\hello-spring\out\production\classes started by choiminseok in C:\Users\choiminseok\OneDrive\Desktop\inflearn\inflearnSpringstart\hello-spring)2025-02-14T17:51:51.153+09:00 INFO 24936 --- [hello-spring] [ main] h.hello_spring.HelloSpringApplication : No active profile set, falling back to 1 default profile: "default"2025-02-14T17:51:52.245+09:00 WARN 24936 --- [hello-spring] [ main] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)2025-02-14T17:51:52.363+09:00 INFO 24936 --- [hello-spring] [ main] h.hello_spring.HelloSpringApplication : Started HelloSpringApplication in 1.931 seconds (process running for 4.824)Process finished with exit code 0이게 콘솔에서 나온 값이구요
-
미해결2025 정보처리기사 필기
왜 pc로밖에 못듣나요? 진짜...너무너무 불편해요
왜 pc로밖에 못듣나요? 진짜...너무너무 불편해요
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
23-05의 hoc적용시의 렌더링에 대한 질문드립니다.
강의를 너무 잘 듣고 있습니다. 쉽게 설명해주셔서 들으면 이해가 잘되지만, 혼자 코드할때에는 실수나 어림 짐작으로 적용했던 부분이 잘 작동되지 않는데, 이런 저런 시도로도 잘못한 부분을 이해하기 어려워 질문드립니다. 23강의 질문입니다. high-order-function을 진행하면서 hoc로 구분하여 설정하는 경우 렌더링에 대해 질문을 남깁니다. 특히 쿼리에 이름을 주어 작동하는 경우에 대해 질문드립니다. 23-3에서 login-success를 확인하는 쿼리를 제가 짰는데 쿼리에 이름을 주었습니다. 23-3의 login-success화면에서는 오류가 없어서, 해당 코드를 복붙하여 hoc부분에도 적용하였는데 초기 렌더링시에 데이터를 받아오지 못하는 현상이 발생하였습니다. 새로 고침을 해야 데이터가 받아와져서 나타납니다.순서를 붙여 1~4번까지 차례로 진행하였습니다. 23-3 코드의 정상 렌더링 (쿼리 네임을 주어도 정상 렌더링) loginCheck와 mypage로 구분되지 않는 코드에서 graphql에 query를 보내면서 이름을 주었습니다. (hoc가 아닌 전체 로직이 한꺼번에 구성되는 경우 쿼리에 이름을 주는 경우에도 --->정상 렌더링 되었어요. )해당 부분의 쿼리는 아래와 같으며 JWT로서 데이터를 받아와 사용자명이 렌더링 되었습니다.const FETCH_USER_LOGGED_IN = gql` query fetchUserLoggedIn{ fetchUserLoggedIn { email name } } `; 23-5부분에 hoc를 이용하여 loginCheck를 분리한 경우(이 부분은 1번의 (23-3의 코드를 복붙하여 mypage와 logincheck로 분리하였습니다. 오류가 없어서 굳이 수정하지 않아도될것 같아 그냥 두었던 부분입니다) 그런데 사용자명을 받아오지 못한채로 화면이 렌더링이 되었습니다. (graphql이 실패한 것으론 나타납니다. 네트워크를 보면 쿼리를 보내면서 토큰을 첨부하지 못해서 bearer뒷 부분이 없었습니다.) 다만 새로고침을 하면 정상 렌더링이 됩니다. MyPage 코드는 아래와 같습니다. import { gql, useQuery } from "@apollo/client"; import type { IQuery } from "../../../src/commons/types/generated/types"; import { loginCheck } from "../../../src/components/commons/hocs/loginCheck"; const FETCH_USER_LOGGED_IN = gql` query fetchUserLoggedIn{ fetchUserLoggedIn { email name } } `; function MyPage() { const { data } = useQuery<Pick<IQuery, "fetchUserLoggedIn">>(FETCH_USER_LOGGED_IN); return <>{data?.fetchUserLoggedIn.name}님, 환영합니다.</>; } export default loginCheck(MyPage); loginCheck는 아래와 같습니다.import { useEffect } from "react"; import { useRouter } from "next/router"; export const loginCheck = (컴포넌트: any) => (프롭스: any) => { const router = useRouter(); useEffect(() => { if (localStorage.getItem("accessToken") === null) { alert("로그인 후 이용가능합니다"); void router.push("/section23/23-05-login-check-hoc"); } }, []); //if return <컴포넌트 {...프롭스} />; }; hoc를 이용하여 loginCheck를 분리한 경우에 작동원리에 대해 여러가지 검색을 하고, 그 결과를 참조하여 loginCheck에서 accessToken을 받아오고, 만약에 토큰이 없으면 myPage를 렌더링하지 않도록 설정했더니 쿼리네임이 있는 경우에도 정상렌더링이 되었습니다.import { useEffect } from "react"; import { useRouter } from "next/router"; export const loginCheck = (컴포넌트: any) => (프롭스: any) => { const router = useRouter(); const accessToken = localStorage.getItem("accessToken"); useEffect(() => { if (localStorage.getItem("accessToken") === null) { alert("로그인 후 이용가능합니다"); void router.push("/section23/23-05-login-check-hoc"); } }, []); if(accessToken == null ) return null; return <컴포넌트 {...프롭스} />; }; 그리고 더불어, 원두님이 하신것처럼 이름이 없는 쿼리로 설정하였을 때는 loginCheck에 토큰 관련 설정을 넣지 않아도 페이지는 정상 렌더링 되었습니다. (이 부분은 수업에서 진행하신 것입니다)const FETCH_USER_LOGGED_IN = gql` query { fetchUserLoggedIn { email name } } `; 인공지능 모델들은 쿼리에 이름이 있는 경우는 cash에 내용을 참조하여 Header에 토큰이 없는 상태의 설정대로 query를 보내고 받아온다고 설명합니다. 그리고 원두님처럼 쿼리명을 주지 않으면 무명쿼리로서 새로 토큰을 붙이고 쿼리를 보내는 과정을 수행한다고 합니다. 그러나 제가 항상 토큰을 지우고 새로 고침한후에 로그인 부분을 확인하므로 기존의 쿼리를 받은 기록이 캐시에 남아서 영향을 미칠것 같지는 않습니다. 그리고, hoc가 아닌 기존의 23-3은 잘 작동했으니, 이 부분의 통신에 대해서 어떤 부분인가 제가 잘 이해하지 못하는 부분이 있는 것 같습니다. 이후 hoc함수를 사용할때에도 유의해야 할것 같아 왜 이러한 현상이 나타나는 것인지에 대해 조언해 주시면 추가적으로 검색을 통해 이해고자 합니다.