묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
ABItemBox 아이템 에셋 배열이 비어있는 경우 크래쉬
LoginId:a941906b4a64d255e61742bb3c03f580 EpicAccountId:06c1d8e5195c4b94839c2f03669096c0 Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:D:\Epic Games\UE_5.4\Engine\Source\Runtime\Core\Public\Containers\Array.h] [Line: 758] Array index out of bounds: 0 into an array of size 0 UnrealEditor_ArenaBattle!AABItemBox::PostInitializeComponents() [C:\Users\jinhy\Desktop\Unreal\Inflearn\UE5Part2\ArenaBattle\Source\ArenaBattle\Item\ABItemBox.cpp:54] UnrealEditor_Engine UnrealEditor_Engine 강의 내용 중 ABItemPotionData와 ABItemScrollItemData 클래스를 생성한 뒤 코드를 똑같이 입력하고 에디터 실행했더니 위 에러 메시지와 함께 에디터가 열리지 않고 있습니다.DefaulGame.ini의 셋팅도 문제 없습니다.+PrimaryAssetTypesToScan=(PrimaryAssetType="ABItemData",AssetBaseClass="/Script/ArenaBattle.ABItemData",bHasBlueprintClasses=False,bIsEditorOnly=False,Directories=((Path="/Game/ArenaBattle/Item")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) bOnlyCookProductionAssets=False bShouldManagerDetermineTypeAndName=False bShouldGuessTypeAndNameInEditor=True bShouldAcquireMissingChunksOnLoad=False bShouldWarnAboutInvalidAssets=True MetaDataTagsForAssetRegistry=() // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Item/ABItemData.h" #include "GameData/ABCharacterStat.h" #include "ABScrollItemData.generated.h" /** * */ UCLASS() class ARENABATTLE_API UABScrollItemData : public UABItemData { GENERATED_BODY() public: UABScrollItemData(); FPrimaryAssetId GetPrimaryAssetId() const override { return FPrimaryAssetId("ABItemData", GetFName()); } public: UPROPERTY(EditAnywhere, Category = Stat) FABCharacterStat BaseStat; }; // Fill out your copyright notice in the Description page of Project Settings. #include "Item/ABScrollItemData.h" UABScrollItemData::UABScrollItemData() { Type = EItemType::Scroll; } // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Item/ABItemData.h" #include "ABPotionItemData.generated.h" /** * */ UCLASS() class ARENABATTLE_API UABPotionItemData : public UABItemData { GENERATED_BODY() public: UABPotionItemData(); FPrimaryAssetId GetPrimaryAssetId() const override { return FPrimaryAssetId("ABItemData", GetFName()); } public: UPROPERTY(EditAnywhere, Category = Stat) float HealAmount; }; // Fill out your copyright notice in the Description page of Project Settings. #include "Item/ABPotionItemData.h" UABPotionItemData::UABPotionItemData() { Type = EItemType::Potion; } ABItemBox.cpp 의 에셋 매니저에서 에셋을 불러올 때 배열이 비어있는 것 같습니다.void AABItemBox::PostInitializeComponents() { Super::PostInitializeComponents(); UAssetManager& Manager = UAssetManager::Get(); TArray<FPrimaryAssetId> Assets; Manager.GetPrimaryAssetIdList(TEXT("ABItemData"), Assets); ensure(0 < Assets.Num()); int32 RandomIndex = FMath::RandRange(0, Assets.Num() - 1); FSoftObjectPtr AssetPtr(Manager.GetPrimaryAssetPath(Assets[RandomIndex])); if (AssetPtr.IsPending()) { AssetPtr.LoadSynchronous(); } Item = Cast<UABItemData>(AssetPtr.Get()); ensure(Item); Trigger->OnComponentBeginOverlap.AddDynamic(this, &AABItemBox::OnOverlapBegin); } 깃헙에 올려주신 코드와 비교해보았는데 다른 부분이 없어서 어느 것이 문제인지 알고 싶습니다.에디터가 열리지 않아서 설정을 확인할 수 없습니다。추가로, 올려주신 프로젝트를 다운받아 실행했더니 똑같은 문제가 발생했습니다..
-
해결됨데이터분석 준전문가(ADsP) 자격증 대비
교안 및 문제의 PDF파일은 어디서 다운로드 받나요?
3강에 공지된 "교안 및 문제의 PDF파일"은 어디서 다운로드 받을 수 있나요? 모듬파일을 다운받으라고 공지되어있는데 다운로드 받을 수 있는 링크가 없습니다.
-
미해결따라하며 배우는 아임웹으로 홈페이지 만들기 [공유오피스편]
예약 프로그램 연동
되는 시간 연동은 잘 적용했습니다.독서실 좌석 예약 프로그램을 만들고 싶은데요참고할만한 관련 싸이트가 있을까요?
-
미해결HTML/CSS 베이스캠프
섹션 9 css구현에서 background img넣는게 안되네요
background-image: url('images/img_hodu_header.png') bottom right no-repeat이렇게 했는데 배경에 이미지로 고양이 사진이 안들어가요ㅜ
-
해결됨Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
useActionState에서 반환값 필드 생략 시 조건에 따라 에러 발생 여부가 다른 이유
안녕하세요! 강의 잘 듣고 있습니다. 제가 혼자 실습하다가 createPostAction 의 반환값에 success 필드를 넣은 후에 useActionState의 initialState 에도 이 필드를 아래와 같이 추가했었는데요, const [state, formAction, isPending] = useActionState(createPostAction, { message: '', errors: {}, formData: { title: '', tag: '', content: '', }, success: false, });useActionState 훅을 사용할 때 initialState에 포함된 필드 중 일부를 이후 action 함수의 반환값에서 생략하면 어떤 경우에는 에러가 발생하고, 어떤 경우에는 아무 문제 없이 동작하는 게 잘 이해가 되지 않아서요. 예를 들어 initialState에는 success 필드가 있지만, 유효성 검사 실패 시 반환 객체에서 success를 생략하면 에러가 발생합니다. if (!validatedFields.success) { return { errors: validatedFields.error.flatten().fieldErrors, message: 'Validation failed', formData: rawFormData, success: false, // 없으면 useActionState 에서 에러 발생 }; }그런데 try...catch 문에서는 success 없이 반환하면 에러가 발생하지 않는 걸 확인할 수 있었습니다. try { const { title, tag, content } = validatedFields.data; await createPost({ title, tag, content }); revalidateTag('posts'); return { success: true, // 없어도 에러 안남 message: 'Post created successfully', }; } catch (e) { return { message: 'Failed to create post : ' + e, formData: rawFormData, }; }formData 필드도 비슷하게 행동하는데 이 차이가 왜 발생하는지, 어떤 기준으로 반환 객체의 필드 구조를 검사하고 에러를 발생시키는지 궁금합니다. useActionState에서 반환 객체의 필드가 initialState와 구조적으로 정확히 일치해야 하는 조건이 언제 적용되는 건가요?
-
미해결Vue 3 & Firebase 10 커뮤니티 만들기 풀스택 - "활용편" (with Pinia, Quasar, Tiptap, VueUse)
짐코딩님..! unplugin-vue-router/vite 적용 최근방식 부탁드령요 ㅜㅜ
unplugin-vue-router/vite를 다운받고 공식문서 참고해서 설정했는데 pages의 index.vue가 오토라우팅이 되지않습니다. router.index.jsimport { defineRouter } from '#q-app/wrappers' import { createRouter, createMemoryHistory, createWebHistory, createWebHashHistory } from 'vue-router/auto' import routes from './routes' /* * If not building with SSR mode, you can * directly export the Router instantiation; * * The function below can be async too; either use * async/await or return a Promise which resolves * with the Router instance. */ export default defineRouter(function (/* { store, ssrContext } */) { const createHistory = process.env.SERVER ? createMemoryHistory : (process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory) const Router = createRouter({ scrollBehavior: () => ({ left: 0, top: 0 }), routes, // Leave this as is and make changes in quasar.conf.js instead! // quasar.conf.js -> build -> vueRouterMode // quasar.conf.js -> build -> publicPath history: createHistory(process.env.VUE_ROUTER_BASE) }) return Router }) quasar.config.js// Configuration for your app // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file import VueRouter from 'unplugin-vue-router/vite' import { defineConfig } from '#q-app/wrappers' export default defineConfig((/* ctx */) => { return { // https://v2.quasar.dev/quasar-cli-vite/prefetch-feature // preFetch: true, // app boot file (/src/boot) // --> boot files are part of "main.js" // https://v2.quasar.dev/quasar-cli-vite/boot-files boot: [ ], // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#css css: [ 'app.scss' ], // https://github.com/quasarframework/quasar/tree/dev/extras extras: [ // 'ionicons-v4', // 'mdi-v7', // 'fontawesome-v6', // 'eva-icons', // 'themify', // 'line-awesome', // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! 'roboto-font', // optional, you are not bound to it 'material-icons', // optional, you are not bound to it ], // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#build build: { target: { browser: [ 'es2022', 'firefox115', 'chrome115', 'safari14' ], node: 'node20' }, vueRouterMode: 'hash', // available values: 'hash', 'history' // vueRouterBase, // vueDevtools, // vueOptionsAPI: false, // rebuildCache: true, // rebuilds Vite/linter/etc cache on startup // publicPath: '/', // analyze: true, // env: {}, // rawDefine: {} // ignorePublicFolder: true, // minify: false, // polyfillModulePreload: true, // distDir // extendViteConf (viteConf) {}, // viteVuePluginOptions: {}, vitePlugins: [ ['vite-plugin-checker', { eslint: { lintCommand: 'eslint -c ./eslint.config.js "./src*/**/*.{js,mjs,cjs,vue}"', useFlatConfig: true } }, { server: false }, ], // 자동 라우터 플러그인 사용하기 VueRouter({ }), ] }, // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#devserver devServer: { // https: true, open: true // opens browser window automatically }, // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#framework framework: { config: {}, // iconSet: 'material-icons', // Quasar icon set // lang: 'en-US', // Quasar language pack // For special cases outside of where the auto-import strategy can have an impact // (like functional components as one of the examples), // you can manually specify Quasar components/directives to be available everywhere: // // components: [], // directives: [], // Quasar plugins plugins: [] }, // animations: 'all', // --- includes all animations // https://v2.quasar.dev/options/animations animations: [], // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#sourcefiles // sourceFiles: { // rootComponent: 'src/App.vue', // router: 'src/router/index', // store: 'src/store/index', // pwaRegisterServiceWorker: 'src-pwa/register-service-worker', // pwaServiceWorker: 'src-pwa/custom-service-worker', // pwaManifestFile: 'src-pwa/manifest.json', // electronMain: 'src-electron/electron-main', // electronPreload: 'src-electron/electron-preload' // bexManifestFile: 'src-bex/manifest.json // }, // https://v2.quasar.dev/quasar-cli-vite/developing-ssr/configuring-ssr ssr: { prodPort: 3000, // The default port that the production server should use // (gets superseded if process.env.PORT is specified at runtime) middlewares: [ 'render' // keep this as last one ], // extendPackageJson (json) {}, // extendSSRWebserverConf (esbuildConf) {}, // manualStoreSerialization: true, // manualStoreSsrContextInjection: true, // manualStoreHydration: true, // manualPostHydrationTrigger: true, pwa: false // pwaOfflineHtmlFilename: 'offline.html', // do NOT use index.html as name! // pwaExtendGenerateSWOptions (cfg) {}, // pwaExtendInjectManifestOptions (cfg) {} }, // https://v2.quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa pwa: { workboxMode: 'GenerateSW' // 'GenerateSW' or 'InjectManifest' // swFilename: 'sw.js', // manifestFilename: 'manifest.json', // extendManifestJson (json) {}, // useCredentialsForManifestTag: true, // injectPwaMetaTags: false, // extendPWACustomSWConf (esbuildConf) {}, // extendGenerateSWOptions (cfg) {}, // extendInjectManifestOptions (cfg) {} }, // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-cordova-apps/configuring-cordova cordova: { // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing }, // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-capacitor-apps/configuring-capacitor capacitor: { hideSplashscreen: true }, // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/configuring-electron electron: { // extendElectronMainConf (esbuildConf) {}, // extendElectronPreloadConf (esbuildConf) {}, // extendPackageJson (json) {}, // Electron preload scripts (if any) from /src-electron, WITHOUT file extension preloadScripts: [ 'electron-preload' ], // specify the debugging port to use for the Electron app when running in development mode inspectPort: 5858, bundler: 'packager', // 'packager' or 'builder' packager: { // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options // OS X / Mac App Store // appBundleId: '', // appCategoryType: '', // osxSign: '', // protocol: 'myapp://path', // Windows only // win32metadata: { ... } }, builder: { // https://www.electron.build/configuration/configuration appId: 'vue3-quasar-firebase-app' } }, // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex bex: { // extendBexScriptsConf (esbuildConf) {}, // extendBexManifestJson (json) {}, /** * The list of extra scripts (js/ts) not in your bex manifest that you want to * compile and use in your browser extension. Maybe dynamic use them? * * Each entry in the list should be a relative filename to /src-bex/ * * @example [ 'my-script.ts', 'sub-folder/my-other-script.js' ] */ extraScripts: [] } } }) 기존의 라우터를 냅두면 MainLayout 으로 가고 주석처리해버리면 빈화면입니다. const routes = [ { path: '/', component: () => import('layouts/MainLayout.vue'), children: [ { path: '', component: () => import('pages/IndexPage.vue') } ] }, // Always leave this as last one, // but you can also remove it { path: '/:catchAll(.*)*', component: () => import('pages/ErrorNotFound.vue') } ] export default routes
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
체험환경 신유형 2번 문제 강의 요청
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요안녕하세요 강사님 오늘 방금 시간으로 RMSE 내용이랑 test.csv 예측칼럼 삭제 확인했는데 혹시 강의 업로드 가능하신지 문의드립니다~
-
해결됨대기업 근무하며 경험한 Redis를 야무지게 사용하는 방법 [이론편]
Cache-Aside 패턴에서 Cache Miss 시
안녕하세요 강사님!Look-Aside 패턴과 Thundering Herd 관련 강의(3:37~) 내용을 듣다가 궁금한 점이 있어 질문드립니다. 캐시-어사이드 패턴에서 캐시 미스가 발생했을 때, 강의 중 보여주신 그림에서는 ‘캐시가 직접 DB를 조회하고 데이터를 업데이트한 뒤 서버에 응답까지 전달하는 구조’처럼 표현해주셔서 다소 혼란스럽습니다. 제가 알고 있기로는 캐시-어사이드 패턴은 캐시 미스 발생 시 애플리케이션(서버)이 직접 DB를 조회하고, 조회한 데이터를 캐시에 갱신(PUT)한 뒤 클라이언트에 응답하는 방식으로 동작하는 것으로 알고 있습니다. 만약 MSA 환경에서 캐시 서버가 별도로 구성되어 있고, 데이터를 API 통신 형태로 제공하는 구조라면 그림으로 그리시면서 설명해주신 부분이 어느 정도 이해가 되지만, 해당 파트가 MSA 를 전제하고 설명하는 맥락은 아닌 것 같아서요. 혹시 이 부분에 대해 제가 잘못 이해한 부분이 있다면 피드백 주시면 감사하겠습니다!
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
[HDL 35장 AXI-Stream I/F 실습편] sync_fifo 사용 이유
안녕하세요 🙂[HDL 35장 AXI-Stream I/F 실습편] 내용 중 sync_fifo 사용의 이유에 대해서 궁금하여 질문 드립니다. 제 짧은 생각으로는 현재 matbi_gradation.v 에서 sync_fifo를 없애고, 바로 AXI-stream output port로 연결해도 동일하게 동작할거라고 생각하였습니다.그럼에도 지금은 fifio가 depth 4로 선언이 되어 있습니다.[질문 1] 혹시 sync_fifo를 굳이 중간에 두는 이유가 무엇인지 궁금합니다.[질문 2] 현업에서 저런 식으로 output을 내보내기 전에 sync_fifo를 보통 두는 것이 일반적이기 때문이라서 그런 것인지, 맛비님의 의도가 궁금합니다..!![질문 3] 또한 만약 sync_fifo를 두는 것이 일반적이라고 하더라도, 그러면 fifo depth를 1 혹은 2로 두어도 충분할거 같은데, 4로 설정하신 특별한 이유가 있는지도 궁금합니다!항상 좋은 강의 감사드립니다.
-
미해결React Native with Expo: 제로초에게 제대로 배우기
Expo 패키지 혹은 React native 패키지를 사용하는 기준
안녕하세요 Expo 패키지 혹은 React native 패키지를 사용하는 기준이 무엇인가요?예를 들어 Image도 react native 패키지로도 가져올 수 있고 expo로도 가져올 수 있는데 강의에서는 expo를 사용하셨더라구요 혹시 그 이유를 알 수 있을가요?
-
미해결[입문자를 위한 UE5] Part5. 언리얼 엔진 VR
선생님 짱짱~!!
collision preset에 3DWidget이 어딨는지 잘몰랐는데 왜 이런 메뉴가 없는지 몰랐는데 선생님덕분에 해결했습니다 감사합니다!
-
미해결비전공자도 합격하는 개발자 이력서/포트폴리오 작성법
경력 사항
안녕하세요! 회사 경력이 있을 경우에는 경력사항을 어떻게 적어야하나요? 강의에서 알려주신것처럼 똑같이 도입배경/사용이유/성과 -> 모두 포함해서 작성하면 되는걸까요??
-
미해결스프링 배치
질문이 있습니다.
강의 내용이 전반적으로 이론 위주로 구성된 것 같은데요, 혹시 강의 후반부도 비슷한 흐름으로 진행될까요?개인적으로 실무에서 바로 적용 가능한 사용 예제나 흐름이 궁금해서 그런데, 혹시 그런 예제가 포함되어 있는지 궁금합니다.감사합니다!
-
미해결비전공자도 합격하는 개발자 이력서/포트폴리오 작성법
이력서에 적을 내용에 관하여
안녕하세요!강의 중에 단순 게시판 구현한 분도 합격하였다는 사례를 말씀주셨는데요,단순 기능만 구현하지말고 그 기술을 왜 선택했는데, 기술의 특징과 장단점 등을 학습하라고 하셨는데 그러면 이력서에 기술 선택 내용과, 기술의 특징 및 장단점을 이력서에 적어야하는건가요??
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫인코딩에 대해 질문 드립니다.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요. 2유형 문제에서 원-핫 인코딩을 진행할 때, 기존에는 train과 test 데이터를 먼저 합친 뒤 pd.get_dummies()를 적용하고, 이후 다시 분리하는 방식으로 학습했었습니다. 그런데 최근 기출문제 풀이를 보면, train과 test를 따로 인코딩하는 경우도 종종 보이더라고요. 혹시 범주의 유니크 값 개수가 동일하다면, 굳이 합치지 않아도 인코딩을 개별적으로 진행해도 무방한 건지 궁금합니다. 인코딩 처리 방식에 대해 혼동이 있어 문의드립니다. 감사합니다.
-
해결됨Flutter 앱 개발 기초
수강 기간 연장 문의
안녕하세요! 연초에 구매하였는데 사정이 있어 제대로 듣지 못했습니다.. ㅠㅠ 혹시 수강 기간 연장이 가능할까요?🥹
-
미해결나만의 포트폴리오 웹페이지 만들기
CSS가 적용이 안됩니다.
/* ABOUT AREA */ .about-area { height: auto; position: relative; } .about-area > .picture { display: block; text-align: center; padding: 20px; } @media (min-width: 992px) { .about-area > .picture { width: calc(40% - 40px); display: inline-block; } } .about-area > .picture > img { max-width: 300px; max-height: 300px; border-radius: 15px; } .about-area > .picture > .name { font-size: 25px; text-align: center; padding: 15px 0; } .about-area > .picture > .description { font-size: 14px; font-family: 'Noto Sans KR', sans-serif; } .about-area > .text { display: block; padding: 30px; } @media (min-width: 992px) { .about-area > .text { width: calc(60% - 100px); display: inline-block; padding: 0 50px; } } .about-area > .text * { font-size: 16px; }4-2. CSS 강의에서분명 똑같은 방식으로 붙여넣었지만 소개 글 및 정보란이 사진 오른쪽으로 가지 않습니다... 어떻게 해야할까요
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
영상 보기 전에 직접 풀어봤습니다.
export default function solution(str) { let answer = ''; let l = 1; for (let i = 0; i < str.length; i++) { if (answer[answer.length - 1] !== str[i]) { if (l > 1) { answer += l + str[i]; l = 1; } else { answer += str[i]; } } else { l++; } if (i === str.length - 1 && l > 1) answer += l; } return answer; }여러 경우에 대해서 대응은 되는거 같은데 괜찮은가요 ?
-
미해결AWS Certified Cloud Practitioner 자격증 준비하기
AWS Elastic Beanstalk 실습 메뉴 문의
안녕하세요 32강 AWS Elastic Beanstalk 실습 메뉴 관련 문의 드립니다.2단계 - 서비스 엑세스 구성에서 화면이 강의 내용과 다르게 나오는데 어찌 실습 진행해야 할까요?새 서비스를 선택할 수도 없고AWS-ElasticBeanstalk-service-role로 도 검색되지 않습니다.
-
미해결직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
[응용] 엑셀문서 값을 필드에 입력하기 질
# 모듈 임포트 import win32com.client as win32 # 한/글 열기 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") hwp.Open(r"C:\Users\smj02\Desktop\누름틀필드.hwp") # 엑셀 열기 excel = win32.gencache.EnsureDispatch("Excel.Application") excel.Visible = True wb = excel.Workbooks.Open(r"C:\Users\smj02\Desktop\취미.xlsx") ws = wb.Worksheets(1) # 필드삽입 함수 정의 def 필드삽입(index, value): field_list = ["이름", "성별", "생일", "취미"] for idx, field in enumerate(field_list): hwp.PutFieldText(f"{field}{{{{{index}}}}}", value[idx]) # 첫 쪽 복사 hwp.Run("CopyPage") # while문 실행 row = 2 while True: if not ws.Cells(row, 1).Value: hwp.Run("DeletePage") break else: data = list( ws.Range(ws.Cells(row,1), ws.Cells(row, 4)).Value[0] ) data[2] = data[2].strftime("%Y년 %#m월 %#d일") 필드삽입(row-2, data) hwp.Run("PastePage") row += 1위 코드를 실행 시켰을때 한글 첫페이지만 아래처럼 생성되고 다음 페이지(빌, 일론 등)가 생성이 안됩니다. 이름 : 마크성별 : 남생일 : 1984년 5월 14일취미 : VR 그대로 복붙해서 했는데 안되서 질문 남깁니다ㅠ첫 쪽 복사와 붙여넣기가 안먹는거 같은데 이상하네요