inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

revalidateTag 에서 매개 변수가 하나 더 늘어서 질문합니다.

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요. next.js 16 버전으로 해당 강의를 보며 달리고 있는데요. revalidateTag 설정에서 파라미터 값이 하나 더 늘어나 있습니다. revalidateTag(tag: string, profile: string | { expire?: number }): void; tag 파라미터 뒤에 profile 파라미터를 넣어야 하네요. 기본적으로는 'max' 값을 넣었고, expire로 사용자 지정 만료 동작을 위한 값을 지정하게 되어 있습니다. 이것이 구체적으로 어떤 매개변수인지 궁금합니다. 그리고 이전의 tag 파라미터만 있을 경우 와 같은 조건의 매개변수 값은 어떻게 되는지 알고 싶습니다.

  • react
  • typescript
  • next.js
  • 카카오공채-개발
Codingbear 댓글 1 좋아요 0 조회수 109

continue와 pass 차이점

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

예시만 봤을 때는 continue와 pass의 차이점이 명확히 구분되지 않는 것 같아 질문드립니다. 1. continue: if문에 해당하여 continue를 만나면 (print가 있다는 가정하에) 출력하지 않고 다음 반복으로 넘어감 pass: if문에 해당하여 pass를 만나면 그 부분만 지나가고 (print가 있다는 가정하에) 밑에 출력은 실행함 저는 이렇게 이해하고 있는데 오류가 있을까요? 2. pass 예제2번에 else 없이 print(i)만 있었더라면 3도 출력이 되는건가요?

  • python
  • java
  • c
  • 정보처리기사
BSI 댓글 2 좋아요 0 조회수 81

토큰 관리에 대해 질문을 드리고 싶습니다.

해결됨

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

안녕하세요 멘토님, 정말 쉽게 설명해주셔서 수업 잘 듣고 있습니다. 인증 처리하기 부분에 대해서 흐름도를 자세하고 재밌게 설명해주셔서 덕분에 이해하기 수월했습니다. 다만 현재 토큰들을 localStorage에 저장하고 이 값을 zustand로 관리하고 있는 것 같은데 사실 토큰을 storage에 저장하는 방식이 일반적이지는 않은 것 같습니다. 이 부분에 대해서 찾아본 결과 supabase를 이용하기에 쿠키에 저장하는 건 무리인 것 같고, 그렇다면 그나마 토큰을 메모리에 저장하는 방식이 안전할 것 같습니다. 로그인을 진행하면 토큰이 localStorage에 저장되는 형태인데, 이때 만약 storage에 저장하지 않고 메모리에 받게하려면 어떻게 할 수 있을까요 .. ? 또한 사실 토큰 자체를 zustand에서 가지고 있는 것도 괜찮은지 의문입니다.. 전역상태로 들고 있는 것이라서 충분히 탈취위험이 있을 것이라고 생각이 되어서요.. 사실 백엔드 서버가 있었다면 쿠키에 저장하는 로직으로 진행했을 거 같은데 만약 이때는 로그인 상태를 어떻게 판별하는지에 대해서도 궁금합니다 !

  • react
  • typescript
  • react-query
  • supabase
  • zustand
이헨 댓글 2 좋아요 0 조회수 128

여러 줄 한꺼번에 주석처리

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

하는 방법이 있을까요?? 강의에서는 슉슉 빠르게 되는 것이 신기해서 여쭤봅니다!

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
랄랄라 댓글 2 좋아요 0 조회수 248

fetch api의 상태값 유지

미해결

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

안녕하세요..강의 잘 보고 있습니다. import { ITodoInfo } from "@/utils/types"; export async function fetchTodos(blngCoCd:string, userId:string) { const respose = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/todo/list?blngCoCd=${blngCoCd}&userId=${userId}` ); if (!respose.ok) { throw new Error("Fetch Todo Error"); } const data: ITodoInfo[] = await respose.json(); console.log('todo data=',JSON.stringify(data, null, 2)); return data; } import { fetchTodos } from "@/api/todo/fetch-todos"; import useUserInfoStore from "@/store/user-info-store"; import { ILoginUserInfo } from "@/utils/types"; import { useQuery } from "@tanstack/react-query"; export function UserTodosData() { const loinData: ILoginUserInfo = useUserInfoStore((state) => state.userInfo); return useQuery({ queryFn: () => fetchTodos(loinData.blngCoCd, loinData.userId) , queryKey: ["todos"], }); } 이런식으로 zustand의 유저 정보를 가져와 훅에서 api를 호출을 하면 처음은 정보를 가져오는데. refresh를 하면 다시 가져 올때 blngCoCd와 userId가 null이 되면서 리스트를 가져오지 못하네요. zustand의 정보는 localstorage로 보관하고 있고... const loinData: ILoginUserInfo| null = useUserInfoStore((state) => state.userInfo); const blngCoCd = loinData?.blngCoCd; const userId = loinData?.userId; // blngCoCd와 userId가 모두 존재할 때만 쿼리를 활성화합니다. const enabled = !!blngCoCd && !!userId; return useQuery({ queryFn: () => fetchTodos(blngCoCd, userId) , queryKey: ["todos", blngCoCd, userId], enabled: enabled, }); 이렇게 변경을 했는데... api에 파라미터를 넘겨야 하는경우 새로고침을 할 경우 이런식으로 하는게 일반적인가요?

  • react
  • typescript
  • react-query
  • supabase
  • zustand
shoncg 댓글 2 좋아요 0 조회수 107

print(id(m) == id(n)) --> False

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

저는 False 가 나옵니다. 찾아보니 False가 정상이고 True는 캐싱으로 설명이 나옵니다. ( 256보다 큰 숫자 이므로 작은 정수 캐싱 범위에 해당하지 않음) 강사님 설명 부탁합니다. m = 800 n = 800 print(id(m)) print(id(n)) print(id(m) == id(n))

  • python
Zetta Kim 댓글 1 좋아요 0 조회수 62

원하는 값이 없을 때

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요 강의 잘 수강하고 있습니다. 현재 subject, link, content, press, date를 추출하는데 만약 해당 값들 중 하나가 없다면 검증은 어떤 식으로 하시나요?? 제가 생각한 방법은 pydantic으로 검증하여 해결할 수 있지 않을까 생각하는데 너무 오버엔지니어링인지 강사님은 어떻게 유연하게 처리하는지 궁금합니다. 예시를 들기 위해 pydantic으로 한 코드 첨부합니다. from typing import Annotated import requests from bs4 import BeautifulSoup from urllib.parse import urljoin, urlencode from datetime import datetime from pydantic import AfterValidator, BaseModel, HttpUrl, field_validator def non_empty_str(v: str) -> str: s = (v or "").strip() if not s: raise ValueError("빈 문자열입니다.") return s def valid_url(url: str) -> str: try: response = requests.get(url) # throw error if status 4xx, 5xx response.raise_for_status() return url except Exception as _: raise ValueError("유효하지 않은 URL입니다.") def valid_date(date: str) -> str: v = (date or "").strip() if not v: raise ValueError("빈 문자열입니다.") try: datetime.strptime(v, "%Y-%m-%d %H:%M:%S") return date except ValueError: raise ValueError("유효하지 않은 날짜 형식입니다.") class NewsItem(BaseModel): subject: Annotated[str, AfterValidator(non_empty_str)] detail_article_url: Annotated[str, AfterValidator(valid_url)] content: Annotated[str, AfterValidator(non_empty_str)] press: Annotated[str, AfterValidator(non_empty_str)] article_date: Annotated[str, AfterValidator(valid_date)] ROOT = "https://finance.naver.com/" PATH = "news/mainnews.naver" def get_news_page_url(page: int, date: str): base_url = urljoin(ROOT, PATH) query_string = urlencode({"date": date, "page": page}) return f"{base_url}?{query_string}" def get_detail_news_url(path): return urljoin(ROOT, path) def get_current_date(format: str ="%Y-%m-%d") -> str: now = datetime.now() return now.strftime(format) def crawl_news_per_page(soup: BeautifulSoup): result = [] news_per_page = soup.select(".block1") for article_card in news_per_page: # subject subject = article_card.select_one(".articleSubject > a").text # detail article link detail_article_url = get_detail_news_url(article_card.select_one(".articleSubject > a").get("href")) # content content_tag = article_card.select_one(".articleSummary") content = content_tag.contents[0].strip() press = content_tag.select_one(".press").text.strip() article_date = content_tag.select_one(".wdate").text.strip() new_item = NewsItem(subject=subject, detail_article_url=detail_article_url, content=content, press=press, article_date=article_date) result.append( new_item.model_dump() ) return result def crawl_all_news(page_total_count: int, date: str): result = [] for page in range(1, page_total_count + 1): request_url = get_news_page_url(page, date) response = requests.get(request_url) soup = BeautifulSoup(response.text, "html.parser") result.extend(crawl_news_per_page(soup)) # 마지막 페이지 검증 if (not soup.select_one(".pgRR")): break return result all_news = crawl_all_news(20, get_current_date()) print(all_news)

  • python
  • 웹-크롤링
rlwjd31 댓글 2 좋아요 0 조회수 120

캐글 데이터 코랩에서 불러오기

미해결

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 캐글에 있는 문제들 코랩에서 풀어보려고하는데 데이터를 어떻게 불러와야하는지 모르겠어요ㅜ 깃허브 URL이나 이런건 없나요? import pandas as pd import numpy as np df = pd.read_csv('../input/titanic/train.csv')

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
댓글 1 좋아요 0 조회수 70

기초적인 질문입니다.

미해결

프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)

x = ["grapes", "mango", "orange", "peach", "apple", "lime", "banana", "cherry", "tomato", "kiwi", "blueberry", "watermelon"] 라고 되어 있을때, for문과 if 문을 사용하여 apple, kiwi를 찾고 대문자로 변경하는 수업을 듣다가 궁금한 점이 생겨 질문을 드립니다. 컴퓨터에서 위와 같이 리스트된 x가 있을때, for문과 if 문을 통해 특정 단어 (apple, kiwi)를 찾게 명령하면, 컴퓨터는 apple, kiwi 라는 단어의 스펠링 모양이 일치하는지 아닌지를 가지고 찾는건가요? 아니면 x 내부에 각 각의 요소들에 고유한 값을 부여하여, 일치하는 값을 찾는 건가요? 즉, x 안에 apple = 10322, kiwi = 10323으로 값이 이미 부여되어 있고, 사용자가 apple 이라는 단어를 찾는 명령어를 코딩하는 경우 컴퓨터가 알아서 사용자가 입력한 apple을 10322로 변환후 x 내부에서 찾는지 궁금합니다. 그리고 만약 그렇다면, 이미 입력된 apple과 사용자가 새롭게 입력한 apple 사이의 고유값이 왜 같아지는지 이유도 궁금합니다. 즉, 누군가 apple을 입력해 놨을 때 10322로 지정되지만 새로운 사용자가 apple을 입력했을땐 10932로 될 수 있지 않을까 해서입니다. 누군가 apple 이라는 단어의 고유값을 지정했으면 컴퓨터가 눈이 달린것도 아닌데 무엇을 보고 apple의 고유값을 찾아내는지 궁금하네요. 기초과학 실험하는 연구자 이다보니 컴퓨터의 작동 원리가 이해가 안돼서 질문을 드립니다.

  • python
열심학습자 댓글 1 좋아요 0 조회수 76

독립성검정에서 correction 옵션과 관련하여 문의드립니다.

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요. 제목과 같이 독립성검정의 경우 chi2_contingency 함수를 사용하는데 공부하다 보니 chi2_contingency(table, correction = True) 이렇게 되어있는 글을 보게 되어서 검색하여보니 correction 옵션은 자유도와 관련된 부분이라고 해서 자유도가 1인 경우에는 True이고 , True가 기본값이긴 하지만 1보다 클 경우에는 False를 사용해야 한다고 하는데 예시 문제를 살펴보면 ddof = 1인 경우에만 있었는데 혹시 실기에서도 해당 부분을 고려해야 할까요 ? 감사합니다 :)

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
bbororora9 댓글 2 좋아요 0 조회수 35

생성자 호출순서

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

19분 21초 null나온 이유가 msg에 값이 초기화 되기 전에 호출해서 null이라고 하셨는데 초기화 여부를 아는 방법이 생성자? 문장이 끝나야 초기화 되는 건가요? 초기화 하려고 하는 구문이 끝나지 않은 상태이면 초기화 되지 않은 상태이다 이렇케 이해해도 되는 부분인가요?

  • python
  • java
  • c
  • 정보처리기사
jongbin7245 댓글 2 좋아요 0 조회수 76

함수나 변수 작성(선언?) 위치 선택 기준

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

아래의 코드를 기준으로 했을때, getMonthlyData함수는 Home 컴포넌트의 바깥에서 작성해주고 있고, 그외에 onIncreaseMonth같은 것은 Home 내부에 작성해주고 있는데, 매번 이런 작성 위치가 헷갈리더라고요. 작성 위치를 정하는 명확한 기준이 따로 있을까요?? import { useState, useContext } from "react"; import { DiaryStateContext } from "../App"; import Header from "../components/Header"; import Button from "../components/Button"; import DiaryList from "../components/DiaryList"; const getMonthlyData = (pivotDate, data) => { const beginTime = new Date( pivotDate.getFullYear(), pivotDate.getMonth(), 1, 0, 0, 0 ).getTime(); const endTime = new Date( pivotDate.getFullYear(), pivotDate.getMonth() + 1, 0, 23, 59, 59 ).getTime(); return data.filter( (item) => beginTime <= item.createdDate && item.createdDate <= endTime ); }; const Home = () => { const data = useContext(DiaryStateContext); const [pivotDate, setPivotDate] = useState(new Date()); const monthlyData = getMonthlyData(pivotDate, data); const onIncreaseMonth = () => { setPivotDate(new Date(pivotDate.getFullYear(), pivotDate.getMonth() + 1)); }; const onDecreaseMonth = () => { setPivotDate(new Date(pivotDate.getFullYear(), pivotDate.getMonth() - 1)); }; return ( <div> <Header title={`${pivotDate.getFullYear()}년 ${pivotDate.getMonth() + 1}월`} leftChild={<Button onClick={onDecreaseMonth} text={"<"} />} rightChild={<Button onClick={onIncreaseMonth} text={">"} />} /> <DiaryList /> </div> ); }; export default Home;

  • javascript
  • react
keeenco 댓글 2 좋아요 0 조회수 93

one과 two의 값지정

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

🚨 필독) 질문하시기 전에 꼭 읽어주세요 (10초 소요) 제목을 구체적으로 작성해 주세요 ✅ 좋은 예 : 감정일기장 Home 구현중 xx 이슈가 발생합니다. ⛔ ️ 나쁜 예 : 이거 왜 안되나요?, 오류나요 도와주세요 등 비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요! 코드의 이슈는 전체 프로젝트를 "링크 형태"로 올려주셔야 원인을 파악할 수 있습니다. 깃허브, 구글드라이브 등의 수단을 통해 링크 형태로 전달해주세요 직접 실행해보며 원인을 파악해야 하기 때문에 텍스트 형태로 붙여넣는건 삼가해주세요 🥲 답변이 도움이 되셨다면 답글 or 해결완료 버튼을 클릭해주세요 비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요! 제 답변이 여러분께 도움이 되었는지 저도 알고 싶어요 🥲 강의 내용에 궁금한 점이 있다면 몇 챕터의 몇 분 몇 초인지 알려주시면 더 좋아요 더 빠른 답변이 가능합니다! 2.4 강의 중 rest매개변수 부분에서 // 2. Rest 매개변수 // -> Rest는 나머지, 나머지 매개변수 function funcB(one,two,...rest) { console.log(rest); } funcB(...arr1); 여기서 혹시 one과 two에 값을 지정할 수 있는 방법도 있을까요?? one = 10, two =20 해서 console.log()로 찍어봤을 때 10, 20 ,...이 되게 하는 방법이 있는 지 궁금합니다.

  • javascript
  • react
  • node.js
  • 카카오공채-개발
고민지 댓글 1 좋아요 0 조회수 48

혹시 해당 강의 보면서 테스트용으로 사용할 맥북을 구매할 예정인데 어느정도 스펙 이상으로 사야 할지 의견 받아볼수있을까요?

해결됨

React Native with Expo: 제로초에게 제대로 배우기

혹시 해당 강의 보면서 테스트용으로 사용할 맥북을 구매할 예정인데 어느정도 스펙 이상으로 사야 할지 의견 받아볼수있을까요?

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
hjjoo 댓글 2 좋아요 0 조회수 94

28강 8분 54초 Electric Car 문제 질문드려요

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

ElectricCar() 이 자식이라 부모를 불러와야한다는건 알겠는데 불러오는 부모가 class Car 을 불러오는건가요, 아님 public Car() 을 불러오는건가요? public Car() 를 불러오는거라 "Car created" 만 출력하는거고 그 밑에 있는 startEngine() 은 부르지않는게 맞는건지 궁금해요

  • python
  • java
  • c
  • 정보처리기사
whks 댓글 2 좋아요 0 조회수 59

.

미해결

React Native with Expo: 제로초에게 제대로 배우기

.

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
이영훈 댓글 1 좋아요 0 조회수 135

한글 자동화 삽도 삽입!!

해결됨

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

안녕하세요 강의 보면서 한글 자동화 겉핥기 중인 수강생입니다. 현재 제가 관리카드 형식의 한글 자동화를 템플릿을 통해 만들고있습니다. 엑셀에 로우데이터 입력 후 엑셀 입력된 데이터들을 한글 템플릿 표 안에 원하는 위치에 까진 입력을 한 상태입니다만. 이후 한글 템플릿 표 안에 삽도를 삽입하는 과정에서 막혔습니다. ai를 통해 질문해보고 다시 코드를 짜보고 있으나 계속 삽도부분에서 막혀 질문드립니다. import os from collections import defaultdict from io import BytesIO import pandas as pd import win32clipboard import win32com.client as win32 from PIL import Image import time def init_hwp(visible=False): """ 아래아한글 시작 """ hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") return hwp def get_nst_table(n): """ n번째 표 앞으로 이동 n은 0부터 시작함. """ ctrl = hwp.HeadCtrl count = 0 while ctrl: if ctrl.CtrlID == "tbl": if count == n: hwp.SetPosBySet(ctrl.GetAnchorPos(0)) break else: ctrl = ctrl.Next count += 1 else: ctrl = ctrl.Next def insert_text(text): """ 문서에 텍스트 삽입 """ hwp.HAction.GetDefault("InsertText", hwp.HParameterSet.HInsertText.HSet) hwp.HParameterSet.HInsertText.Text = text hwp.HAction.Execute("InsertText", hwp.HParameterSet.HInsertText.HSet) def get_text(): """ 문서 선택범위의 문자열을 추출 """ hwp.InitScan(Range=0xff) total_text = "" state = 2 while state not in [0, 1]: state, text = hwp.GetText() total_text += text hwp.ReleaseScan() return total_text def append_hwp(filename): """ 문서 끼워넣기 """ hwp.HAction.GetDefault("InsertFile", hwp.HParameterSet.HInsertFile.HSet) hwp.HParameterSet.HInsertFile.KeepSection = 0 hwp.HParameterSet.HInsertFile.KeepCharshape = 0 hwp.HParameterSet.HInsertFile.KeepParashape = 0 hwp.HParameterSet.HInsertFile.KeepStyle = 0 hwp.HParameterSet.HInsertFile.filename = filename hwp.HAction.Execute("InsertFile", hwp.HParameterSet.HInsertFile.HSet) def 사진리스트추출(): """ '삽도폴더' 하위의 모든 서브폴더에서 모든 그림 파일 경로를 추출하여 단일 리스트로 반환합니다. """ all_pic_paths = [] # "삽도폴더"의 경로를 설정합니다. (현재 스크립트 위치 기준) 삽도폴더_경로 = os.path.join(os.getcwd(), "삽도폴더") # "삽도폴더"가 존재하는지 확인합니다. if not os.path.exists(삽도폴더_경로): print(f"경고: '{삽도폴더_경로}' 폴더가 존재하지 않습니다.") return [] # os.walk를 사용하여 서브폴더를 포함한 모든 파일을 탐색합니다. for root, _, files in os.walk(삽도폴더_경로): for file in files: # 이미지 파일 확장자를 확인합니다. 필요에 따라 추가/수정 가능합니다. if file.lower().endswith((".png", ".jpg", ".jpeg", ".gif", ".bmp")): all_pic_paths.append(os.path.join(root, file)) return all_pic_paths # 사용 예시: # 이 함수를 호출한 결과를 사진리스트 변수에 저장해야 합니다. # 예: 사진리스트 = 사진리스트추출() def 사진제목추출(): 제목사전 = defaultdict(list) 제목리스트 = [] for 사진파일 in 사진리스트: 파일명 = os.path.basename(사진파일) 본문, _ = os.path.splitext(파일명) if "_" not in 본문: continue 연번, 삽도종류 = 본문.split("_", 1) 제목명 = f"{연번}_{삽도종류}" if 제목명 not in 제목리스트: 제목리스트.append(제목명) 제목사전[제목명].append(사진파일) return 제목리스트, 제목사전 def 클립보드로_이미지_삽입(filepath): """ 한/글 API의 InsertPicture 메서드는 셀의 크기를 변경하지 않는 반면(이미지가 찌그러짐) 클립보드를 통해 이미지를 삽입하면 이미지의 종횡비에 맞춰 셀의 높이가 자동으로 조절됨. """ 이미지 = Image.open(filepath) 아웃풋 = BytesIO() 이미지.convert('RGB').save(아웃풋, 'BMP') 최종데이터 = 아웃풋.getvalue()[14:] 아웃풋.close() win32clipboard.OpenClipboard() win32clipboard.EmptyClipboard() win32clipboard.SetClipboardData(win32clipboard.CF_DIB, 최종데이터) win32clipboard.CloseClipboard() hwp.Run("Paste") def 첫번째행으로_이동(): """ 표의 A2 셀로 이동 """ hwp.Run("TableColBegin") hwp.Run("TableColPageUp") hwp.Run("TableLowerCell") hwp.Run("TableCellBlock") def 위셀과병합(): """ 제목 그대로임 """ hwp.Run("TableDeleteCell") # 아래 셀 내용을 지운 후 hwp.Run("TableCellBlockExtend") # 셀 다중선택모드 hwp.Run("TableUpperCell") # 위 셀까지 선택 hwp.Run("TableMergeCell") # 선택된 셀 병합 hwp.Run("TableCellBlock") # 다시 셀 선택 모드 def 다음페이지로(): """ 표에서 나와서 문서 끝으로 이동 후 Ctrl-Enter를 통해 다음페이지로 넘어감 """ hwp.Run("Cancel") hwp.Run("MoveTopLevelEnd") hwp.Run("BreakPage") def 완료메시지(): msgbox = hwp.XHwpMessageBox # 메시지박스 생성 msgbox.string = "문서작성을 완료하였습니다." msgbox.Flag = 0 # [확인] 버튼만 나타나게 설정 msgbox.DoModal() # 메시지박스 보이기 if __name__ == '__main__': hwp = init_hwp() # hwp.Open(os.path.join(os.getcwd(), "예시파일.hwp")) hwp.Run("FileOpen") os.chdir(hwp.Path.rsplit("\\", maxsplit=1)[0]) # 현재 열린 문서가 위치한 경로로 이동 df = pd.read_excel(os.path.join(os.getcwd(), "관리카드 데이터 정리.xlsx")) 사진리스트 = 사진리스트추출() 사진리스트 제목리스트, 제목사전 = 사진제목추출() 제목리스트 제목사전 관리카드_리스트 = df pd.set_option('display.max_rows', None) 관리카드_리스트 # === 이 부분이 가장 중요합니다! NaN 값을 빈 문자열로 채우는 코드 === 관리카드_리스트 = 관리카드_리스트.fillna('') 훼손지_리스트 = [i.split("_")[0] for i in 제목리스트] 훼손지_리스트 삽도명_종류 = [i.split("_")[1] for i in 제목리스트] 삽도명_종류 for i in range(len(관리카드_리스트)): # ========================엑셀 내부 데이터 값 정의=============================== 연번_누름틀_값 = 관리카드_리스트.iloc[i]["연번_누름틀"] 순번_값 = 관리카드_리스트.iloc[i]["순번"] 토지이용현황_값 = 관리카드_리스트.iloc[i]["토지이용현황"] 소유구분_값 = 관리카드_리스트.iloc[i]["소유구분"] 당초차량진출입_값 = 관리카드_리스트.iloc[i]["당초차량진출입"] 검토내용_값 = 관리카드_리스트.iloc[i]["검토내용"] 도로포장_값 = 관리카드_리스트.iloc[i]["도로포장"] 교행여부_값 = 관리카드_리스트.iloc[i]["교행여부"] 검토결과_값 = 관리카드_리스트.iloc[i]["검토결과"] i_지적도 = 관리카드_리스트.iloc[i]["지적도"] i_항공사진 = 관리카드_리스트.iloc[i]["항공사진"] i_현장사진_1 = 관리카드_리스트.iloc[i]["현장사진_1"] i_현장사진_2 = 관리카드_리스트.iloc[i]["현장사진_2"] i_검토결과_사진 = 관리카드_리스트.iloc[i]["검토결과_사진"] # ========================표 내부 데이터 입력하기================================ append_hwp(os.path.join(os.getcwd(), "템플릿1.hwp")) # 문서 끼워넣기 # hwp.RenameField("연번_누름틀",연번_누름틀_값) # 누름틀 필드 이름 바꾸기 # hwp.PutFieldText(연번_누름틀_값,연번_누름틀_값) # 누름틀에 연번_누름틀 값 텍스트로 넣기 hwp.RenameField("순번",순번_값) hwp.PutFieldText(순번_값,순번_값) hwp.RenameField("토지이용현황",토지이용현황_값) hwp.PutFieldText(토지이용현황_값,토지이용현황_값) hwp.RenameField("소유구분",소유구분_값) hwp.PutFieldText(소유구분_값,소유구분_값) hwp.RenameField("당초차량진출입",당초차량진출입_값) hwp.PutFieldText(당초차량진출입_값,당초차량진출입_값) hwp.RenameField("검토내용",검토내용_값) hwp.PutFieldText(검토내용_값,검토내용_값) hwp.RenameField("도로포장",도로포장_값) hwp.PutFieldText(도로포장_값,도로포장_값) hwp.RenameField("교행여부",교행여부_값) hwp.PutFieldText(교행여부_값,교행여부_값) hwp.RenameField("검토결과",검토결과_값) hwp.PutFieldText(검토결과_값,검토결과_값) hwp.RenameField("지적도",i_지적도) hwp.PutFieldText(i_지적도,i_지적도) hwp.RenameField("항공사진",i_항공사진) hwp.PutFieldText(i_항공사진,i_항공사진) hwp.RenameField("현장사진_1",i_현장사진_1) hwp.PutFieldText(i_현장사진_1,i_현장사진_1) hwp.RenameField("현장사진_2",i_현장사진_2) hwp.PutFieldText(i_현장사진_2,i_현장사진_2) hwp.RenameField("검토결과_사진",i_검토결과_사진) hwp.PutFieldText(i_검토결과_사진,i_검토결과_사진) hwp.Run("MoveTopLevelEnd") hwp.Run("BreakPage") 위 코드를 실행하여 만든 결과물입니다. 지적도, 항공사진, 현장사진1,2, 검토결과_사진에 강의에 올라온 사진리스트 추출을 이용하여 삽도들을 삽입하고 싶습니다. 어떻게 해야 할까요??ㅠ 답변 기다리겠습니다. 감사합니다.

  • python
  • 한컴오피스
ㅇㅇㅇㅇ 댓글 2 좋아요 1 조회수 443

다차원 배열 포인터 변수 선언할때

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

포인터 조작과 출제패턴 강의 27:07초에서 다차원 배열 포인터 변수 선언할때 왜 괄호를 *ptr 에 씌워주는지 궁금하네요. 원래 그런 방식으로 사용하기로 합의가 된건가요?

  • python
  • java
  • c
  • 정보처리기사
csgwe 댓글 2 좋아요 1 조회수 88

import 파일 경로를 찾지 못 해서 에러가 발생합니다.

미해결

Next + React Query로 SNS 서비스 만들기

안녕하세요. 에러가 발생해서 질문드립니다. 경로는 아무리 봐도 맞게 쓴거 같은데 찾지를 못 합니다. Build Error Module not found: Can't resolve '@/app/(afterLogin)/_component/FollowRecommend' ./Desktop/FRONT/z-com/src/app/(afterLogin)/layout.tsx (10:1) Module not found: Can't resolve '@/app/(afterLogin)/_component/FollowRecommend' 8 | import LogoutButton from "@/app/(afterLogin)/_component/LogoutButton"; 9 | import TrendSection from "@/app/(afterLogin)/_component/TrendSection"; > 10 | import FollowRecommend from "@/app/(afterLogin)/_component/FollowRecommend"; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 11 | 12 | export default function AfterLoginLayout({ children }: { children: ReactNode }) { 13 | return ( Import map: aliased to relative './src/app/(afterLogin)/_component/FollowRecommend' inside of [project]/Desktop/FRONT/z-com/src https://nextjs.org/docs/messages/module-not-found

  • react
  • next.js
  • react-query
  • next-auth
  • msw
김영제 댓글 2 좋아요 0 조회수 144

변수 선언에 관련한 질문.

해결됨

[왕초보] [누적 5,000명+] Python 프로그래밍 기초 완성 로드맵

안녕하세요. 변수선언에 관련된 질문이 있습니다. # 하나의 변수에 하나의 값을 대입 a = 1 b = 1 위와 같은 경우에 변수와 값을 띄워쓰기 하는데 붙여쓰기를 해도 동일하게 적용은 가능한데 띄워쓰기 하는 이유가 있는지 궁금합니다.

  • python
  • 머신러닝
  • 빅데이터
  • 인공지능(ai)
  • ax(에이전트-경험)
김기연 댓글 2 좋아요 1 조회수 115

인기 태그

인프런 TOP Writers

주간 인기글