안녕하세요. next.js 16 버전으로 해당 강의를 보며 달리고 있는데요. revalidateTag 설정에서 파라미터 값이 하나 더 늘어나 있습니다. revalidateTag(tag: string, profile: string | { expire?: number }): void; tag 파라미터 뒤에 profile 파라미터를 넣어야 하네요. 기본적으로는 'max' 값을 넣었고, expire로 사용자 지정 만료 동작을 위한 값을 지정하게 되어 있습니다. 이것이 구체적으로 어떤 매개변수인지 궁금합니다. 그리고 이전의 tag 파라미터만 있을 경우 와 같은 조건의 매개변수 값은 어떻게 되는지 알고 싶습니다.
예시만 봤을 때는 continue와 pass의 차이점이 명확히 구분되지 않는 것 같아 질문드립니다. 1. continue: if문에 해당하여 continue를 만나면 (print가 있다는 가정하에) 출력하지 않고 다음 반복으로 넘어감 pass: if문에 해당하여 pass를 만나면 그 부분만 지나가고 (print가 있다는 가정하에) 밑에 출력은 실행함 저는 이렇게 이해하고 있는데 오류가 있을까요? 2. pass 예제2번에 else 없이 print(i)만 있었더라면 3도 출력이 되는건가요?
안녕하세요 멘토님, 정말 쉽게 설명해주셔서 수업 잘 듣고 있습니다. 인증 처리하기 부분에 대해서 흐름도를 자세하고 재밌게 설명해주셔서 덕분에 이해하기 수월했습니다. 다만 현재 토큰들을 localStorage에 저장하고 이 값을 zustand로 관리하고 있는 것 같은데 사실 토큰을 storage에 저장하는 방식이 일반적이지는 않은 것 같습니다. 이 부분에 대해서 찾아본 결과 supabase를 이용하기에 쿠키에 저장하는 건 무리인 것 같고, 그렇다면 그나마 토큰을 메모리에 저장하는 방식이 안전할 것 같습니다. 로그인을 진행하면 토큰이 localStorage에 저장되는 형태인데, 이때 만약 storage에 저장하지 않고 메모리에 받게하려면 어떻게 할 수 있을까요 .. ? 또한 사실 토큰 자체를 zustand에서 가지고 있는 것도 괜찮은지 의문입니다.. 전역상태로 들고 있는 것이라서 충분히 탈취위험이 있을 것이라고 생각이 되어서요.. 사실 백엔드 서버가 있었다면 쿠키에 저장하는 로직으로 진행했을 거 같은데 만약 이때는 로그인 상태를 어떻게 판별하는지에 대해서도 궁금합니다 !
저는 False 가 나옵니다. 찾아보니 False가 정상이고 True는 캐싱으로 설명이 나옵니다. ( 256보다 큰 숫자 이므로 작은 정수 캐싱 범위에 해당하지 않음) 강사님 설명 부탁합니다. m = 800 n = 800 print(id(m)) print(id(n)) print(id(m) == id(n))
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 캐글에 있는 문제들 코랩에서 풀어보려고하는데 데이터를 어떻게 불러와야하는지 모르겠어요ㅜ 깃허브 URL이나 이런건 없나요? import pandas as pd import numpy as np df = pd.read_csv('../input/titanic/train.csv')
프로그래밍 시작하기 : 도전! 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의 고유값을 찾아내는지 궁금하네요. 기초과학 실험하는 연구자 이다보니 컴퓨터의 작동 원리가 이해가 안돼서 질문을 드립니다.
안녕하세요. 제목과 같이 독립성검정의 경우 chi2_contingency 함수를 사용하는데 공부하다 보니 chi2_contingency(table, correction = True) 이렇게 되어있는 글을 보게 되어서 검색하여보니 correction 옵션은 자유도와 관련된 부분이라고 해서 자유도가 1인 경우에는 True이고 , True가 기본값이긴 하지만 1보다 클 경우에는 False를 사용해야 한다고 하는데 예시 문제를 살펴보면 ddof = 1인 경우에만 있었는데 혹시 실기에서도 해당 부분을 고려해야 할까요 ? 감사합니다 :)
19분 21초 null나온 이유가 msg에 값이 초기화 되기 전에 호출해서 null이라고 하셨는데 초기화 여부를 아는 방법이 생성자? 문장이 끝나야 초기화 되는 건가요? 초기화 하려고 하는 구문이 끝나지 않은 상태이면 초기화 되지 않은 상태이다 이렇케 이해해도 되는 부분인가요?
🚨 필독) 질문하시기 전에 꼭 읽어주세요 (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 ,...이 되게 하는 방법이 있는 지 궁금합니다.
ElectricCar() 이 자식이라 부모를 불러와야한다는건 알겠는데 불러오는 부모가 class Car 을 불러오는건가요, 아님 public Car() 을 불러오는건가요? public Car() 를 불러오는거라 "Car created" 만 출력하는거고 그 밑에 있는 startEngine() 은 부르지않는게 맞는건지 궁금해요
안녕하세요 강의 보면서 한글 자동화 겉핥기 중인 수강생입니다. 현재 제가 관리카드 형식의 한글 자동화를 템플릿을 통해 만들고있습니다. 엑셀에 로우데이터 입력 후 엑셀 입력된 데이터들을 한글 템플릿 표 안에 원하는 위치에 까진 입력을 한 상태입니다만. 이후 한글 템플릿 표 안에 삽도를 삽입하는 과정에서 막혔습니다. 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, 검토결과_사진에 강의에 올라온 사진리스트 추출을 이용하여 삽도들을 삽입하고 싶습니다. 어떻게 해야 할까요??ㅠ 답변 기다리겠습니다. 감사합니다.