묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 2편
안녕하세요. 강의록 오타 제보입니다.
파일: 9. 컬렉션 프레임워크 - Map, Stack, Queue.pdf위치: 22페이지 최상단 그림 양쪽에 poll이 아닌 pool로 나와있습니다
-
미해결직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
hwp 페이지별 분할 저장하는 코드 관련 문의
일코님, 안녕하세요.오랜만에 질문 올립니다.여러 장이 있는 hwp파일의 첫 페이지부터 한 페이지 씩1.hwp, 2.hwp, 3.hwp, ... 로 저장하는 코드를 작성해 보았는데요.한 가지 문제점만 빼면 원하는 대로 작동합니다.한 가지 문제점은, 코드 실행 후 저장된 1.hwp 파일 속에 1페이지가 아닌 전체 페이지가 들어가 있다는 점입니다.그거 외에 다른 페이지는 문제 없이 작동되고 있습니다.이거 왜 그럴까요?코드를 반복해서 살펴봐도,논리적으로는 저장되는 1.hwp 파일에는 원본파일의 첫 페이지만 들어가 있어야 할 거 같은데.. 그렇게 안되는 이유가 궁금합니다.전체 코드는 아래와 같습니다.import os from pyhwpx import Hwp hwp = Hwp() target_dir = r"D:\magicfolder" os.chdir(target_dir) hwp.add_tab() hwp.switch_to(0) # 탭0: 카피해 올 원본 파일용 hwp.open("D:\magicfolder\페이지분할대상.hwp") hwp.switch_to(1) # 탭1: 한 페이지씩 붙여서 저장할 일종의 작업공간 hwp.open("D:\magicfolder\페이지분할대상.hwp") hwp.switch_to(0) for j in range(1, hwp.PageCount + 1): hwp.goto_page(j) hwp.CopyPage() hwp.switch_to(1) hwp.HAction.Run("SelectAll") hwp.HAction.Run("Delete") hwp.MoveDocBegin() hwp.PastePage() # 바로 위에서 hwp.PastePage()할 때 페이지가 넘어가서 붙으므로, 앞 페이지로 당겨 붙이기 위해서 맨 위 페이지로 커서 옮기고 Del 2번 해 준 것임. hwp.MoveDocBegin() hwp.HAction.Run("Delete") hwp.HAction.Run("Delete") hwp.save_as(target_dir + "\\" + str(j) + ".hwp") hwp.switch_to(0) hwp.Close() hwp.FileClose() 코드를 많이 짜봐야 늘텐데 정말 오랜만에 시도해 본 거 같습니다. ^^ㅋ
-
미해결실무 중심! FE 입문자를 위한 React
학습 링크
학습 링크 어디에서 확인할 수 있나요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
개인적인 궁금증입니다
강사님께서는 실무에서 JPA를 잘 사용하지 않으신다고 하신 걸 댓글에서 봤습니다.그러면 MyBatis나 JDBC를 주로 사용하시는 건가요?아니면 JPA는 사용하시는데 쿼리 메소드 기능 대신 @Query로 직접 native query를 작성하시는 건가요?
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
강의의 목적
이 강의를 통해 나는 다음과 같은 3가지를 얻고 싶다.PM적 사고 저는 작은 규모의 회사에서 백엔드 개발자로 일하면서 TPM 업무도 일부 수행해 왔습니다. 그 과정에서 점차 PM 업무에 흥미를 느껴 본격적으로 공부하기로 결정했습니다. 개발자적인 사고방식과는 달리, PM적 사고방식이란 무엇이며 어떠한 요소들을 고려해야 하는지를 심도 있게 배우고자 합니다.데이터 기반의 의사결정 과정 이해PM이나 운영 관련 직무 기술서에서 자주 언급되는 “데이터 기반의 의사결정 경험”은, 지금까지 직관에 의존해 프로젝트를 이끌어온 저에게 다소 모호하게 다가왔습니다. 이번 강의를 통해 데이터 분석을 통한 문제 정의부터 최종 의사결정에 이르기까지 전 과정을 체계적으로 학습하고, 이를 실제 업무에 적용하는 방법을 터득하고자 합니다.제품에 따른 지표 설정 능력다양한 지표들이 존재하는 만큼, 각 지표의 의미와 활용법을 정확하게 이해하는 것이 중요하다고 생각합니다. 담당 제품에 따라 필요한 지표를 적절히 설정할 줄 아는 능력을 기르고 싶습니다.그것을 위해 나는 이렇게 노력할 것이다.강의 내용 중 세 가지 핵심 목표를 항상 염두에 두고 학습에 임합니다.게시판을 적극적으로 활용합니다.강의를 수강한 후에는 복습을 통해 배운 내용을 정리하고, 실무에 어떻게 적용할 수 있을지 고민합니다.수강한 나는 어떤 모습이고 싶다.데이터를 기반으로 체계적인 전략을 설계하고 실행할 수 있는 사람으로 성장하고 싶습니다.
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
이렇게 오류뜨는데 어떻게 해야할까요..?
처음 파일 만들 때 이렇게 오류가 나는데 뭐가 문제일까요..?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
무한 스크롤 쿼리와 페이지 번호 쿼리 질문 있습니다.
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 페이지 넘버 쿼리무한 스크롤 쿼리 안녕하세요위 두 쿼리 모두 (board_id, article_id)를 인덱스로 설정해놔서 secondary index만 접근해도 될 것 같은데 페이지 넘버 쿼리에서 clustered index도 접근하는 것은 offset의 특성(?) 때문일까요? 무한 스크롤 쿼리에서는 secondary index의 정보(board_id, article_id)만으로 기준점을 찾아내고, limit 개수만큼 clustered index에 접근하는 것 같아서페이지 넘버 쿼리에서도 secondary index의 정보(board_id, article_id)만으로도 offset의 위치를 찾을 수 있을 것 같은데 왜 clustered index까지 접근하는 걸까요??
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Window API 강의 수강 중 LARGE_INTEGER 타입 변환 오류
안녕하세요!10주차의 Window API 강의를 듣던 중 TimeManager.cpp에서 QueryPerformanceFrequency와 QueryPerformanceCounter메서드에 LARGE_INTEGER 타입으로 변환해서 인자를 넘겨주는 과정에서 오류가 있었는데 해결 과정을 문의하고 싶습니다. Types.h에 문제가 있을까 싶어서 찾아봤지만, 별다른 이상이 없어서 원인을 모르겠습니다.
-
미해결비전공자도 이해할 수 있는 DB 설계 입문/실전
주문수량과 재고량 관련하여 테이블 분리시
안녕하세요, 선생님.강의 감사히 잘 보고 있습니다. 주문수량에 따라 재고량 반영다는 기획일시 테이블 분리는 어떻게 할 수 있을까요?(다른 질문에 답변 올려주신 것 봤는데 직접 하려니 안되서요) 현업에서 일반적으로 매입도 존재할텐데 이 경우까지 포함한다면 재고에 대한 테이블 구성은 어떻게 되는지요? 감사합니다.
-
해결됨블렌더 3D 미피 캐릭터 인사하는 애니메이션 만들기
블렌더 F12 렌더 오류
수업 16:01 부분에 렌더를 돌리는 부분에서 오브젝트는 나오지 않고 그리드만 나오는데 해결방법이 없을까요? 인터넷에 나오는visivility - mask 체크, 카메라 확인, 슬롯 확인, Post Processing의 compositing과 Sequencer 체크 등등 확인 했는데 나오지 않습니다.
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
무한 rewrite 발생시 대처 방법
2.3 강의에서 generate 이후 스코어를 통해 rewrite를할지 end를 할지 판단할때, 쿼리 자체에서 document와 관련이 없는 질문을 했을때 무한으로 rewrite에 빠질 경우 어떻게 대처하면 될까요?
-
미해결쉽게 설명하는 AWS 기초 강의
파일질라에서 ec2 서버 접속이 되지 않습니다.
800명이 넘는 AWS 강의실 오픈채팅방에 오시면 더 좋은 답변을 실시간으로 받아보실 수 있습니다.질문내용은 상세하고 자세하게 부탁드립니다.예시 : "Amazon EC2의 t2.micro 타입으로 Amazon Linux 2023타입으로 퍼브릭 서브넷에 프로비전 했습니다. 키페어와 같이 프로비전해서 SSH로 접속하고 싶은데 접속 요청시 Timeout이 발생합니다. 어디를 확인하면 될까요?" 설정 역시 모두 강의 영상대로 따라왔으며, 아래 이미지와 같은 오류가 발생합니다.웹 브라우저에서 ip를 그대로 입력하면 접속은 되지만, 가끔씩 타임아웃으로인한 오류 때문인지 접속이 안 되고, http://www.gstatic.com/generate_204라는 새탭이 발생합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
tsconfig.json 파일에 대해 질문있습니다.
안녕하세요 타입스크립트 강의를 보고 있는 중인데 영상대로 tsconfig.json 파일에{ "$schema": "https://json.schemastore.org/tsconfig", "_version": "2.0.0", "compilerOptions": { "lib": ["dom", "dom.iterable", "esnext"], "module": "esnext", "moduleResolution": "bundler", "target": "es2015", "allowJs": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, "isolatedModules": true, "jsx": "react-jsx", "noEmit": true, "noFallthroughCasesInSwitch": true, "resolveJsonModule": true, "skipLibCheck": true, "strict": true } }이렇게 넣으니 아래 이미지처럼 오류가 뜨는데 찾아봐도 왜 오류가 뜨는지 잘 모르겠습니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
5.4) Props로 데이터 전달하기 에서 toUpperCase() 오류
Button.jsx?t=1739152459356:22 Uncaught TypeError: Cannot read properties of undefined (reading 'to') at Button (Button.jsx?t=1739152459356:22:17)An error occurred in the <Button> component. Consider adding an error boundary to your tree to customize error handling behavior. Visit https://react.dev/link/error-boundaries to learn more about error boundaries. Error Component Stack at Button (Button.jsx?t=1739152290133:19:112) at App (<anonymous>)
-
해결됨스마트시트 사용하기 A to Z
Smartsheet-Dashboard
안녕하세요Smartsheet 관련하여 dashboard를 강의보고 만들었는데 질문이 있습니다.Dashboard 만들때 결국 report 를 보고자 하는 방식으로 여러 개 만들어야 구현이 가능한거죠?예를들어 status별, owner별 즉, 필터값이 다른 조건일 때 여러 개의 report를 만들어서 끌고와야만 가능한건지 문의드립니다. dashboard자체에서는 구현할 수 있는지 궁금해서요~ Smartsheet의 궁극적인 목적은 협업을 위한 시간관리와 project등을 효율적으로 tracking하기 위한 툴로 이해했습니다. 이게 맞는지요? 혹시 KPI(시간 MANAGEMENT가 아닌..) 도 스맛싯에서 진행하나요? 예를들어 Inventory관리라던지 등등이요. 그런 예제가 만약 있다면 공유 해 주실수 있으실까요?
-
미해결자바 코딩테스트 - it 대기업 유제
현관문 출입순서
안녕하세요 강사님현관문 출입순서를 풀어보고 강사님 코드를 보면서 한 if문 조건이 불필요하다고 생각해서 질문드립니다. for(int t = 0, i = 0, cnt = 0; ; t++){ //아래 조건은 아직 현관문을 다 사용하지 않았다는 조건이다. if(enter.isEmpty() && exit.isEmpty() && i < n) { if(t < arrival[i]){이 부분에서if(t < arrival[i]) 는 필요 없는 것 같아서요혹시 이게 없다면 어떤 테스트 케이스에서 막히는지 알 수 있을까요?코드 자체가 바로 아래에서이미 시간을 건너뛰는 메커니즘 t = arrival[i] 을 갖추고 있어서 굳이 필요 없다고 느껴서요 알려주시면 감사하겠습니다 강의 잘 듣고 있습니다
-
미해결Next + React Query로 SNS 서비스 만들기
로그인과 인증 관련 질문드립니다!
안녕하세요. 강의를 마치고 혼자 구현을 해보고 있는데, 로그인과 인증 관련해서 궁금한 부분이 있습니다.프론트에 로그인한 유저인지의 판단을 미들웨어에서 auth함수로 next 서버를 통해 하고있는데,로그인 후에 접속 가능한 페이지를 이동할때마다 무조건 서버에 체크를 해주어야 하나요?데이터 페칭은 리액트 쿼리를 설명하며 말씀해주신것 처럼 컨텐츠에 따라 판단해서 캐싱하고 새로 받아오고의 개념이 이해가 되었는데, 세션체크라고 해야 할까요? 로그인 후에 이 유저가 로그인이 되어있는지에 대한 체크를 서버에 얼마나 자주 해주어야 하는지 모르겠습니다.현재는 미들웨어에서 로그인이 필요한 페이지에 auth함수를 호출하여 프론트 서버에서 체크를 하고, api를 호출할때는 쿠키에 next-auth의 세션 토큰과 서버에서 발급한 세션 아이디를 담아서 서버에서 로그인과 인증 확인을 하고있는것으로 이해를 했습니다. 현재는 혼자서 nestjs를 통해 jwt 토큰 2개 (access,refresh)을 발급해서 구현을 해보고있는데, 로그인이 필요한 페이지로 이동한다면 무조건 미들웨어에서 토큰 확인을 서버를 통해 해주어야 하는건가 잘 모르겠어서 질문 드립니다..강의 정말 잘 듣고 도움이 많이 됐습니다. 감사합니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
오픈채팅방 참여 인원수
안녕하세요.오픈 채팅방에 참여하려 하는데 인원수가 꽉 찬 거 같습니다ㅜㅜ
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
안녕하세요, onopen() 문제로 질문드립니다.
똑같이 코딩한거같은데 Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING이런 문제가 생겨 connect()에서 console.log로 this.ws 찍어보니까. readystate가 0에서 바뀌지 않고 onsubmit()에서도 0인걸 확인했습니다. 그래서 웹소켓이 연결되지 않았으니, this.ws.send()에서 걸리는것이라고 생각은하는데, 어디를 고쳐야 될지 모르겠습니다.{# Chat room #} {% extends "chat/base.html" %} {% block extra-style %} <style> .chat-message > div { background-color: #3b3b3b; color: #e1e1e1; border-radius: 0.8em; padding: 0.4em; margin: 0.4em 0; display: inline-block; white-space: pre-wrap; max-width: 80%; word-wrap: break-word; } </style> {% endblock %} {% block content %} <h2>채팅방 :{{ room_name }}</h2> {# 웹소켓으로 실시간 채팅 기능 구현하기 #} <div class="container"> <div class="row"> <div class="col-sm-12"> <div class="card" style="height: 600px;"> <div class="card-header"> 채팅방:{{ room_name }} </div> <div class="card-body overflow-hidden"> <div id="chat_messages" class="w-100 h-100 border-0 overflow-hidden overflow-scroll"></div> </div> <div class="card-footer"> <form id="message_form"> <input type="text" name="message" class="form-control" autofocus autocomplete="off" /> </form> </div> </div> <hr class="my-3" /> <a href="{% url 'chat:index' %}" class="btn btn-primary"> 대기실로 이동 </a> </div> </div> </div> {% endblock %} {% block extra-script %} <script> const handler = { chat_messages_tag: null, ws: null, retry: 0, init(){ console.log("handler.init() 실행됨"); this.chat_messages_tag= document.querySelector("#chat_messages"); document.querySelector("#message_form").addEventListener("submit", this.onsubmit.bind(this)); }, connect(ws_url){ if(this.ws) { this.ws.close(); } this.ws = new WebSocket(ws_url || this.ws?.url); console.log(this.ws, "연결1.") this.ws.onopen = this.onopen.bind(this); this.ws.onclose = this.onclose.bind(this); this.ws.onerror = this.onerror.bind(this); this.ws.onmessage = this.onmessage.bind(this); }, reconnect() { this.connect(); }, onopen(){ console.log("웹소켓 서버와 접속, : Room_chat"); this.retry = 0; }, onclose(event){ if (!event.wasClean) { console.error("웹소켓이 죽었거나, 네트워크 에러"); if (this.retry < 3) { this.retry++; setTimeout(() => { this.reconnect(); console.log(`[${this.retry}] 접속 재시도 ...`); }, 1000 * this.retry) } else { console.log("웹소켓 서버에 접속할수 없습니다. 메인페이지로 이동합니다."); window.location.href = "{% url 'chat:index' %}"; } } }, onerror(){ console.log("웹소켓 에러 발생. 메인페이지로 이동합니다."); window.location.href = "{% url 'chat:index' %}" ; }, onmessage(event){ const message_json = event.data; console.log("메세지 수신 :", message_json); const { type, message } = JSON.parse(message_json); switch (type){ case "chat.message": this.append_message(message); break; default: console.error('Invalid message type: &{type}'); } }, append_message(message){//인자로 받은 채팅 메세지 로그에 추가 const element = document.createElement("div"); element.className = "chat-message"; const wrapper = document.createElement("div"); wrapper.textContent = message; element.appendChild(wrapper); this.chat_messages_tag.appendChild(element); this.chat_messages_tag.scrollTop = this.chat_messages_tag.scrollHeight; }, onsubmit(event){ //입력된 채팅 메세지 문자열을 획득하고, 메세지 로그에 추가. event.preventDefault(); const form_data = new FormData(event.target); //폼필드의 값을 오브젝트로 변환하여 props로 저장하고, 폼필드는 리셋합니다. const props = Object.fromEntries(form_data); event.target.reset(); // reset form const { message } = props; console.log("웹소켓으로 전송할 메세지: ", message); console.log(this.ws, "onsubmit"); {#this.append_message(message);#} this.ws.send(JSON.stringify({ type: "chat.message", message: message, })) } }; handler.init(); const protocol = location.protocol === 'https:' ? 'ws:' : 'wss:'; const ws_url = protocol + "//" + location.host + "/ws" + location.pathname; handler.connect(ws_url); </script> {% endblock %}from django.urls import path from chat import consumers websocket_urlpatterns = [ path("ws/chat/<str:room_name>/chat/", consumers.ChatConsumer.as_asgi()), ] import os from channels.routing import ProtocolTypeRouter, URLRouter from django.core.asgi import get_asgi_application import app.routing import chat.routing os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') django_asgi_app = get_asgi_application() application = ProtocolTypeRouter({ "http" : django_asgi_app, "websocket" : URLRouter( chat.routing.websocket_urlpatterns + app.routing.websocket_urlpatterns, ) })from django.shortcuts import render # Create your views here. def index(request): return render(request, "chat/index.html") def room_chat(request, room_name): return render(request, "chat/room_chat.html",{ "room_name": room_name, })
-
해결됨[Unity6] 나만의 서바이벌 게임 만들기
character movement 반응속도
move에 대한 animator 작업도 진행하고 코드작업도 진행을 했는데요.처음 게임 시작누르고 방향키를 한 2~3초눌러야 run상태로 가더라고요. idle상태는 그거보단 빠른 1초정도?어떤게 문제일까요..condition에서 스피드에 대한 값도 지정해서 0.1 0.01까지 낮춰보았고, setting에서 exit time과 transition duration까지 낮춰보면서 해봤는데 안되네요.음 좀 보는데 idle에서 모션변환까지 duration이 좀 걸리는거같은데요..void Move() { // key 방향 float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); Vector3 cameraForward = Camera.main.transform.forward; Vector3 cameraRight = Camera.main.transform.right; cameraForward.y = 0.0f; cameraRight.y = 0.0f; cameraForward.Normalize(); cameraRight.Normalize(); Vector3 moveDirection = cameraRight * horizontal + cameraForward * vertical; // mobile, pc 속도 차이 줄이기위해 controller.Move(moveDirection * moveSpeed * Time.deltaTime); // moveDirection.magnitude를 좀 더 빠르게 반영하도록 float currentSpeed = moveDirection.magnitude * moveSpeed; animator.SetFloat("a_Speed", currentSpeed); }