inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

강의 교재 및 실습 파일 제공되나요?

미해결

[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]

사이트에서 찾을 수 없네요 제공된다면 어디서 받을 수 있을까요? - 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.) - 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~ - 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.

  • python
  • pandas
ckehdud 댓글 1 좋아요 0 조회수 203

MemberRepository, ItemRepository

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 내용] ItemRepository에서 save() 메소드를 만들 때 아직 등록한게 없다면 id 값이 없으니 persist하고 id가 있다면 merge하는 조건문이 있습니다. 그렇다면 MemberRepository에서도 save()메소드에 아직 아무런 회원이 없다면 똑같이 ItemRepository의 save()메소드 처럼 조건문을 넣어야 하지 않을까요? 왜 MemberRepository의 save()메소드는 단지 em.persist(member)만 존재하는 건지 궁금합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
soojinkimss 댓글 1 좋아요 0 조회수 61

강의자료 부탁드립니다.

미해결

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

삭제된 글입니다

  • python
댓글 1 좋아요 0 조회수 49

강의자료 부탁드립니다.

미해결

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

안녕하세요. 강의자료 부탁드려요.

  • python
김준섭 댓글 2 좋아요 0 조회수 73

Order에서 JPA 메타데이터 분리 - XML 사용

해결됨

토비의 스프링 6 - 이해와 원리

안녕하세요, 강의에서 올려주신 META-INF/orm.xml을 통해 orders의 table과 id가 만들어지는 것을 확인했습니다. 다만 Order의 no가 고유한 값을 가져야한다는 데이터 정합성 관련 SQL(schema.sql의 2,3번째 줄)이 Hibernate에서 표시되지 않는 것을 확인하여 unique="true"를 다음과 같이 넣어주면 원래의 JPA 어노테이션을 대체한 것으로 볼 수 있을지 문의드립니다. 감사합니다. <basic name="no"> <column name="no" length="255" unique="true"/> </basic>

  • java
  • spring
이정수 댓글 2 좋아요 0 조회수 274

강의 처음부터 보고있는데 질문있습니다.

미해결

코딩테스트 [ ALL IN ONE ]

안녕하세요 강의 잘 보고 있습니다. 코드 짜고 파이썬 실행하시던데 한줄씩 실행은 어떻게 하는건가요?

  • python
  • 코딩-테스트
  • 알고리즘
happy_kaiser 댓글 2 좋아요 1 조회수 207

연관관계 편의 메소드를 만들면 set()함수는 지워도 되나요?

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 연관관계 편의 메소드로 값을 저장하는데 set()은 없어도 되지않나해서요? 그래도 왠만하면 넣나요?

  • java
  • jpa
캐내기 댓글 1 좋아요 0 조회수 110

SpringDataJPA 강의따라서 환경설정 후 test코드 실행하면 오류가납니다

미해결

실전! 스프링 데이터 JPA

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. Could not initialize plugin: interface org.mockito.plugins.MockMaker에러가 발생합니다.. 환경설정이 문제인걸까요..? 아래의 테스트 코드 실행시 아래와 같은오류가 발생합니다. 도와주세요ㅠㅠ <gradle파일> plugins { id 'java' id 'org.springframework.boot' version '3.4.1' id 'io.spring.dependency-management' version '1.1.7' } group = 'study' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } <test파일> package study.data_jpa; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class DataJpaApplicationTests { @Test void contextLoads() { } } <오류> Could not initialize plugin: interface org.mockito.plugins.MockMaker Caused by: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker It appears as if your JDK does not supply a working agent attachment mechanism. Java : 17 JVM vendor name : Oracle Corporation JVM vendor version : 17.0.10+11-LTS-240 JVM name : Java HotSpot(TM) 64-Bit Server VM JVM version : 17.0.10+11-LTS-240 JVM info : mixed mode, sharing OS name : Windows 10 OS version : 10.0 DataJpaApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at PluginLoader.java:85 Caused by: java.lang.IllegalStateException at DefaultMockitoPlugins.java:105 Caused by: java.lang.reflect.InvocationTargetException at Constructor.java:499 Caused by: org.mockito.exceptions.base.MockitoInitializationException at InlineDelegateByteBuddyMockMaker.java:254 Caused by: java.lang.IllegalArgumentException at InstrumentationImpl.java:-2

  • java
  • spring
  • spring-boot
  • jpa
guswhd903 댓글 1 좋아요 0 조회수 176

가상환경 설정 시 vscode 실행 오류

미해결

모두를 위한 파이썬 : 필수 문법 배우기 Feat. 오픈소스 패키지 배포 (Inflearn Original)

code 입력 시 visual studio code가 실행되지 않습니다.

  • python
archibook 댓글 2 좋아요 0 조회수 582

세션 4까지 들었는데, 여기서 DRF로 넘어가도 될까요?

해결됨

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

제가 API Server 구축에 더 관심이 가서... 세션 4까지 복습했는데, 바로 DRF로 넘어가도 될까요?

  • react
  • python
  • django
  • web-api
  • htmx
임찬 댓글 2 좋아요 0 조회수 139

누름틀의 메모를 조회하는 방법이 궁금합니다.

해결됨

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

질문 남겨주셔서 감사합니다. 막히면 언제든 무엇이든 자주 질문 던져주세요. 수학/과학이나 알고리즘과는 달리 업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다. 다시 말씀드리지만, 질문을 자주자주 남겨주세요. 저도 최대한 빠르게 회신 드리겠습니다. 당부드릴 두 가지가 있습니다. ① 가급적 구체적으로 설명해주세요. ② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ ==================================== 안녕하세요~ 막히는 부분이 있을 때마다 항상 많은 도움을 받고 있습니다. 예전에 누름틀의 메모를 가져오는 방법에 문의하고 잘 활용하고 있는데 누름틀의 개수가 많아지면 생각보다 조회하는 시간이 오래 걸려서 다시 질문을 합니다. 누름틀 필드로 커서를 이동한 후 내용을 추출하는 방법 말고 다른 방법이 없을까요?? 누름틀의 필드이름을 알면 누름틀 안의 안내문, 메모 내용을 추출하는 방법이 궁금합니다.

  • python
  • 한컴오피스
박민수 댓글 1 좋아요 1 조회수 209

동시성 문제와 volitale의 연관성

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요! 현재 CAS연산 강의를 보고있습니다. 그러다가 문득 "volatile 키워드가 메모리 가시성 문제를 해결해 주지만 동시성 문제는 완벽하게(?) 해결해주지 못한다." 라는 이유에 대해서 곰곰히 생각해 보았는데 혹시 CPU 가 싱글코어와 멀티코어냐에 따라서 결과가 달라지는건지 궁금합니다. 이 이유가 아니라면, 왜 volatile키워드가 동시성 문제를 해결해주지 못하는지 알려주시면 감사하겠습니다!

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
insub2004 댓글 1 좋아요 0 조회수 165

변경 감지를 통한 데이터 수정할 때 추가, 삭제는 어떻게 처리해야 할까요?

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. 데이터 수정은 변경 감지로 처리하는게 적절한걸로 강의를 통해 이해했습니다. 강의를 학습 후, 상품 정보를 수정하는 API를 개발하고 있습니다. 상품 정보 업데이트를 진행할 때 옵션 목록과 같은 하위 데이터에 대해 추가, 삭제는 어떤식으로 로직을 처리해야 하는게 적절한지 판단이 안되어 질문 드립니다. 클라이언트에서 상품 정보 수정 API를 호출할 때, 생각한 프로세스는 아래와 같습니다. - 수정하는 옵션의 경우 ID와 변경되는 데이터를 필드에 담아서 보내줍니다. - 신규 옵션을 추가하는 경우에는 ID를 제외한 추가될 데이터를 필드에 담아서 보내줍니다. - 삭제하는 옵션은 필드에 담지않고, 수정/신규 옵션만 필드에 담아서 보내줍니다. 수정 API 개발할 때, 어떤식으로 처리하는게 좋은 방법인지 궁금하여 질문 드립니다. (수정 옵션) 상품 정보 업데이트 시 기존 옵션 데이터의 경우에는 ID로 데이터를 조회 후 변경 감지로 필요한 데이터만 수정하도록 했습니다. (추가 옵션) 신규 옵션 데이터는 ID 값이 없는걸 식별해서 추가하도록 로직을 짜는게 적절 할까요? (삭제 옵션) 기존 옵션 데이터를 삭제하고 싶습니다. 클라이언트에서 API로 옵션 정보를 넘겨주는데, 삭제되는 옵션은 넘어오지 않습니다. 이런 경우에는 ID가 식별되지 않아 변경 감지로 삭제할 수가 없을거 같은데 어떻게 해야할까요? (삭제는 soft delete 방식으로 처리해야 합니다.) 삭제되는 ID 값을 deleteOptionIds 같은 필드로 따로 받아서 처리하는게 적절 할까요? 감사합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
Anonymous 댓글 2 좋아요 0 조회수 206

통합테스트가 안되면 실행이 안된다는 뜻인가요?

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/ 아니오 ) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] CONDITIONS EVALUATION REPORT 라고 에러메시지가 뜨면서 서비스통합테스트가 뜨는데 그럴땐 어디를 봐야 하나요? 서비스테스트랑 코드문은 똑같습니다. plugins { id 'java' id 'org.springframework.boot' version '3.4.1' id 'io.spring.dependency-management' version '1.1.7' } group = 'hhdplus' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' testImplementation 'org.springframework.boot:spring-boot-starter-test' runtimeOnly 'com.mysql:mysql-connector-j' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } testRuntimeOnly 'org.junit.platform:junit-platform-launcher' implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' } tasks.named('test') { useJUnitPlatform() } package hhdplus.hhplus_tdd2.service; import hhdplus.hhplus_tdd2.domain.reserve.Reserve; import hhdplus.hhplus_tdd2.domain.reserve.ReserveCommand; import hhdplus.hhplus_tdd2.domain.reserve.ReserveInfo; import hhdplus.hhplus_tdd2.domain.reserve.ReserveService; import hhdplus.hhplus_tdd2.infra.reserve.ReserveRepository; import hhdplus.hhplus_tdd2.interfaces.controller.ReserveRequest; import hhdplus.hhplus_tdd2.interfaces.controller.ReserveResponse; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.transaction.annotation.Transactional; import java.util.List; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @SpringBootTest //@ExtendWith(MockitoExtension.class) public class ReserveServiceIntergrationTest { @Autowired ReserveService reserveService; @Autowired ReserveRepository reserveRepository; ReserveRequest reserveRequest = new ReserveRequest(); ReserveResponse reserveResponse = new ReserveResponse(); Reserve reserve = new Reserve(); //동작하기 전에 넣어준다 BeforeEach // @BeforeEach // public void beforeEach() { // MockitoAnnotations.openMocks(this); // Mock 객체 초기화 // } // // @AfterEach //테스트 돌때마다 초기화 // public void afterEach() { // Mockito.reset(reserveRepository); // Mock 상태 초기화 // } @Test void 아이디별_예약_내역() { //given 뭔가가 주어졌는데 int userId = 1; ReserveInfo mockReserveInfo = new ReserveInfo(); mockReserveInfo.setId(1); mockReserveInfo.setUserId(userId); mockReserveInfo.setName("테스트 예약 정보"); List<ReserveInfo> mockReserveList = List.of(mockReserveInfo); // Mock 동작 설정 when(reserveService.findReservation(1)).thenReturn(mockReserveList); //when 이거를 실행했을 떄 List<ReserveInfo> result = reserveService.findReservation(userId); //then 결과가 이게 나와야 돼 if(result != null){ System.out.println("이름 : " + mockReserveInfo.getName()); } assertThat(result).isNotNull(); assertThat(result.size()).isEqualTo(1); assertThat(result.get(0).getUserId()).isEqualTo(userId); } @Test void 예약하기() {//40명이 예약 한다 쳐보면 30명만 예약이 되게끔 해보기 //given 뭔가가 주어졌는데 ReserveResponse reserveResponse = new ReserveResponse(); reserveResponse.setId(1); reserveResponse.setUserId(1); reserveResponse.setLectureId(1); //when 이거를 실행했을 떄 ReserveRequest findOne = reserveService.findOne(reserveResponse.getUserId()); findOne.setUserId(1); findOne.setLectureId(1); // Mock 동작 설정 when(reserveService.insertReservation(reserveResponse)).thenReturn(findOne); ReserveRequest result = reserveService.insertReservation(reserveResponse); //then 결과가 이게 나와야 돼 if(findOne != null){ System.out.println("findOne : " + reserveResponse.getLectureId()); } assertThat(reserveResponse.getLectureId()).isEqualTo(1); assertThat(result.getLectureId()).isEqualTo(1); } @Test void 예약수정() { //given 뭔가가 주어졌는데 ReserveCommand reserveCommand = new ReserveCommand(); reserveCommand.setLectureId(1); reserveCommand.setId(1); reserveCommand.setId(1); //when 이거를 실행했을 때 when(reserveService.modifyReservation(reserveCommand.getUserId())).thenReturn(reserveCommand); ReserveRequest findOne = reserveService.findOne(reserveCommand.getUserId()); //then 결과가 이게 나와야 돼 assertThat(findOne).isNotNull(); if(findOne != null){ System.out.println("findOne : " + reserveResponse.getLectureId()); } } @Test void 예약삭제() { //given 뭔가가 주어졌는데 ReserveResponse reserveResponse = new ReserveResponse(); reserveResponse.setId(1); reserveResponse.setUserId(1); reserveService.deleteReservation(reserveResponse.getId()); //when 이거를 실행했을 때 List<ReserveInfo> list = reserveService.findReservation(reserveResponse.getUserId()); //then 결과가 이게 나와야 돼 if(list.isEmpty()){ System.out.println("삭제 완료"); } assertThat(list.size()).isEqualTo(0); } }

  • java
  • spring
  • mvc
  • spring-boot
sh hhyeogi365 댓글 2 좋아요 0 조회수 315

독립형 프로그램으로 추출 후 오류 발생

미해결

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

질문 남겨주셔서 감사합니다. 막히면 언제든 무엇이든 자주 질문 던져주세요. 수학/과학이나 알고리즘과는 달리 업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다. 다시 말씀드리지만, 질문을 자주자주 남겨주세요. 저도 최대한 빠르게 회신 드리겠습니다. 당부드릴 두 가지가 있습니다. ① 가급적 구체적으로 설명해주세요. ② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ ==================================== 안녕하세요, 오랜만입니다. 저번에도 한번 여쭤본 적이 있는데, 해결 못하고 방치해두고 있다가 다시 시간이 나서 재도전중인 문제입니다. 제가 만든 코드는 pyhwpx를 이용해 페이지를 자동으로 매기는 프로그램입니다. 코드 자체는 정상적으로 작동하는 것을 확인했습니다. 문제는 제가 이걸 회사 사람들과 공유해서 쓰기 위해 별도의 독립형 프로그램으로 추출할 때 생깁니다. 제 목표는 컴퓨터에 파이썬도, pyhwpx도 설치되어 있지 않은 그런 사람들의 컴퓨터에서 실행을 해도 정상 작동하는 것인데요. 그런데 그런 사람의 컴퓨터에서 실행을 하면 아래와 같은 오류가 뜨고 오류를 구체적으로 확인해보려 해도 파이썬이 없는 컴퓨터라 확인할 수가 없네요. chatGPT한테 물어보니 다른 사람 컴퓨터에서 pyhwpx가 한글 파일을 찾지 못하는 문제라고 하는데 제가 Hwp.exe의 경로를 찾아서 넣어주기까지 했는데도 같은 오류가 발생하네요. 뭐가 문제인지 알 수 있을까요? 꼭 좀 부탁드립니다 ㅠㅠ. 제가 작성한 코드는 다음과 같습니다. import tkinter as tk from tkinter import filedialog, messagebox from pyhwpx import Hwp import os # 한글 경로 탐색 함수 def find_hwp_path(): # 명시적인 경로 설정 possible_paths = [ r"C:\\Program Files (x86)\\Hnc\\Office 2022\\HOffice120\\Bin\\Hwp.exe", # Office 2022 기본 경로 r"C:\\Program Files\\Hnc\\Office 2020\\Hwp.exe", # Office 2020 r"C:\\Program Files (x86)\\Hancom\\Office 2018\\Hwp.exe", # Office 2018 r"C:\\Program Files (x86)\\HWP\\Bin\\Hwp.exe" # 과거 한글 ] # 경로 확인 for path in possible_paths: if os.path.exists(path): return path # 경로를 찾지 못하면 None 반환 return None # 한글 연동 함수 def set_page_numbers(file_paths, odd_files): try: hwp_path = find_hwp_path() if not hwp_path: messagebox.showerror("오류", "한글 경로를 찾을 수 없습니다.") return # 한글 프로그램 객체 생성 hwp = Hwp(hwp_path) hwp.XHwpWindows.Item(0).Visible = False # 한글 창 숨기기 j = 1 # 페이지 번호 초기값 for file_path in file_paths: hwp.Open(file_path) # 첫 페이지 이동 hwp.HAction.Run("MoveTopLevelBegin") # 홀수 페이지로 시작하지 않는 파일 처리 if file_path in odd_files: hwp.PageNumPos(j) else: if j % 2 == 0: # 기본적으로 홀수 페이지 시작 j += 1 hwp.PageNumPos(j) # 페이지 수 증가 (현재 문서 페이지 수만큼 더함) j += hwp.PageCount hwp.Clear(2) hwp.XHwpWindows.Item(0).Visible = True # 작업 후 한글 창 보이기 hwp.Clear(3) hwp.Quit() messagebox.showinfo("완료", "페이지 번호 작업이 완료되었습니다!") except Exception as e: import traceback error_message = traceback.format_exc() messagebox.showerror("오류", f"작업 중 오류가 발생했습니다:\n{error_message}") # 파일 이동 함수 def move_up(listbox): selected_items = listbox.curselection() if not selected_items: return for index in selected_items: if index > 0: # 첫 번째 항목이 아닌 경우에만 이동 가능 value = listbox.get(index) listbox.delete(index) listbox.insert(index - 1, value) listbox.selection_set(index - 1) def move_down(listbox): selected_items = listbox.curselection() if not selected_items: return for index in reversed(selected_items): if index < listbox.size() - 1: # 마지막 항목이 아닌 경우에만 이동 가능 value = listbox.get(index) listbox.delete(index) listbox.insert(index + 1, value) listbox.selection_set(index + 1) # 파일 추가 및 제거 함수 def add_file_to_list(listbox): files = filedialog.askopenfilenames( title="파일을 선택하세요", filetypes=[("HWP/HWPX 파일", "*.hwp;*.hwpx"), ("HWP 파일", "*.hwp"), ("HWPX 파일", "*.hwpx"), ("모든 파일", "*.*")] ) for file in files: listbox.insert(tk.END, file) def remove_selected_file(listbox): selected_items = listbox.curselection() for item in reversed(selected_items): listbox.delete(item) # 실행 함수 def execute_task(): all_files = list(listbox_all_files.get(0, tk.END)) odd_files = list(listbox_odd_files.get(0, tk.END)) if not all_files: messagebox.showerror("오류", "전체 파일 목록이 비어 있습니다.") return set_page_numbers(all_files, odd_files) # GUI 설정 root = tk.Tk() root.title("페이지 번호 매기기 프로그램") root.geometry("800x650") root.resizable(False, False) # 전체 파일 프레임 frame_all_files = tk.Frame(root, relief="solid", bd=1) frame_all_files.place(x=10, y=10, width=600, height=250) label_all_files = tk.Label(frame_all_files, text="전체 파일", font=("맑은 고딕", 12, "bold")) label_all_files.pack(anchor="nw", padx=5, pady=5) listbox_all_files = tk.Listbox(frame_all_files, selectmode="extended") listbox_all_files.pack(fill="both", expand=True, padx=5, pady=5) btn_frame_all_files = tk.Frame(root) btn_frame_all_files.place(x=620, y=10, width=160, height=250) btn_add_file = tk.Button(btn_frame_all_files, text="파일 추가", command=lambda: add_file_to_list(listbox_all_files)) btn_add_file.pack(fill="x", padx=5, pady=5) btn_remove_file = tk.Button(btn_frame_all_files, text="선택파일 삭제", command=lambda: remove_selected_file(listbox_all_files)) btn_remove_file.pack(fill="x", padx=5, pady=5) btn_move_up = tk.Button(btn_frame_all_files, text="위로 이동", command=lambda: move_up(listbox_all_files)) btn_move_up.pack(fill="x", padx=5, pady=5) btn_move_down = tk.Button(btn_frame_all_files, text="아래로 이동", command=lambda: move_down(listbox_all_files)) btn_move_down.pack(fill="x", padx=5, pady=5) # 홀수 페이지로 시작하지 않는 파일 프레임 frame_odd_files = tk.Frame(root, relief="solid", bd=1) frame_odd_files.place(x=10, y=280, width=600, height=250) label_odd_files = tk.Label(frame_odd_files, text="홀수 페이지로 시작하지 않는 파일", font=("맑은 고딕", 12, "bold")) label_odd_files.pack(anchor="nw", padx=5, pady=5) listbox_odd_files = tk.Listbox(frame_odd_files, selectmode="extended") listbox_odd_files.pack(fill="both", expand=True, padx=5, pady=5) btn_frame_odd_files = tk.Frame(root) btn_frame_odd_files.place(x=620, y=280, width=160, height=250) btn_add_odd_file = tk.Button(btn_frame_odd_files, text="파일 추가", command=lambda: add_file_to_list(listbox_odd_files)) btn_add_odd_file.pack(fill="x", padx=5, pady=5) btn_remove_odd_file = tk.Button(btn_frame_odd_files, text="선택파일 삭제", command=lambda: remove_selected_file(listbox_odd_files)) btn_remove_odd_file.pack(fill="x", padx=5, pady=5) btn_move_up_odd = tk.Button(btn_frame_odd_files, text="위로 이동", command=lambda: move_up(listbox_odd_files)) btn_move_up_odd.pack(fill="x", padx=5, pady=5) btn_move_down_odd = tk.Button(btn_frame_odd_files, text="아래로 이동", command=lambda: move_down(listbox_odd_files)) btn_move_down_odd.pack(fill="x", padx=5, pady=5) # 실행 버튼 btn_execute = tk.Button(root, text="실행", command=execute_task, font=("맑은 고딕", 14, "bold"), bg="#00484D", fg="white") btn_execute.place(x=10, y=550, width=770, height=40) root.mainloop() 그리고 제가 추출하는데 사용한 것은 pyinstaller --onefile --noconsole --icon="C:\\Users\\user\\Desktop\\@공유\\JINA\\0__exe\\페이지 자동 맞춤 프로그램\\icon.ico" --hidden-import=pyhwpx --hidden-import=subprocess page_numbering_v2.py 이거에요. 뭐가 문제일까요? 따뜻한 연말 되시기 바라며, 감사합니다.

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

러스트로 파이썬 패키지 만들기 실습을 해보면 에러가 발생합니다

해결됨

세상에서 제일 쉬운 러스트 프로그래밍

pipenv shell 환경에서 maturin develop 을 하면 아래와 같이 오류가 뜹니다 (pyo3-9vp6XEz5) D:\D\Work\study\Rust\inflean\easy-rust\pyo3>maturin develop 🔗 Found pyo3 bindings 🐍 Found CPython 3.12 at C:\Users\INNO-A-1328\.virtualenvs\pyo3-9vp6XEz5\Scripts\python.exe 📡 Using build options features from pyproject.toml Compiling once_cell v1.20.2 Compiling unindent v0.2.3 Compiling cfg-if v1.0.0 Compiling libc v0.2.169 Compiling pyo3-build-config v0.23.3 Compiling memoffset v0.9.1 Compiling pyo3-ffi v0.23.3 Compiling pyo3-macros-backend v0.23.3 Compiling pyo3 v0.23.3 Compiling pyo3-macros v0.23.3 Compiling fibonacci v0.1.0 (D:\D\Work\study\Rust\inflean\easy-rust\pyo3) error[E0599]: no method named add_function found for reference &pyo3::types::PyModule in the current scope --> src\lib.rs:17:7 | 17 | m.add_function(wrap_pyfunction!(run, m)?)?; | ^^^^^^^^^^^^ method not found in &PyModule error[E0277]: the trait bound &pyo3::types::PyModule: WrapPyFunctionArg<'_, _> is not satisfied --> src\lib.rs:17:42 | 17 | m.add_function(wrap_pyfunction!(run, m)?)?; | ----------------------^- | | | | | the trait WrapPyFunctionArg<'_, _> is not implemented for &pyo3::types::PyModule | required by a bound introduced by this call | = help: the following other types implement trait WrapPyFunctionArg<'py, T> : &pyo3::Borrowed<'_, 'py, pyo3::types::PyModule> &pyo3::Bound<'py, pyo3::types::PyModule> pyo3::Borrowed<'_, 'py, pyo3::types::PyModule> pyo3::Bound<'py, pyo3::types::PyModule> pyo3::Python<'py> error[E0277]: the trait bound &pyo3::types::PyModule: From<BoundRef<'_, '_, pyo3::types::PyModule>> is not satisfied --> src\lib.rs:15:1 | 15 | #[pymodule] | ^^^^^^^^^^^ the trait From<BoundRef<'_, '_, pyo3::types::PyModule>> is not implemented for &pyo3::types::PyModule , which is required by BoundRef<'_, '_, pyo3::types::PyModule>: Into<_> | = note: required for BoundRef<'_, '_, pyo3::types::PyModule> to implement Into<&pyo3::types::PyModule> = note: this error originates in the attribute macro pymodule (in Nightly builds, run with -Z macro-backtrace for more info) Some errors have detailed explanations: E0277, E0599. For more information about an error, try rustc --explain E0277 . error: could not compile fibonacci (lib) due to 3 previous errors 💥 maturin failed #[pymodule] 이하 부분을 주석처리하면 아래 에러는 해결되나 python main.py 실행하면 fibonacci 를 찾을 수 없다는 에러가 발생합니다

  • python
  • rust
seunghun.baek 댓글 1 좋아요 1 조회수 230

코랩으로 수업을 진행해도 괜찮은지 궁금합니다.

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요 강사님! 해당 강의에서 주피터로 코딩을 하는 것 같은데 혹시 주피터노트북 대신 코랩으로 실습을 진행해도 문제 없을까요?

  • python
  • 머신러닝
  • 통계
강하빈 댓글 1 좋아요 0 조회수 184

네이버지식인 gui 추출하기

미해결

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

안녕하세요 맥으로 수강중인 사람입니다. 다름이아니라 네이버지식인gui를 vscode에서 코드 실행 후 저장버튼을 누르면 엑셀파일로 저장이 잘되었는데 실행파일로 만들고 추출한다음 저장버튼을 누르면 저장이 되지않습니다 이유를 알수있을가요? 코드를 다시봐도 문제는 없는데 이유를 못찾겠습니다ㅠㅠ

  • python
  • 웹-크롤링
김정학 댓글 1 좋아요 0 조회수 111

커널(★Python 3.12.8 ~~맞춤 vs Python 3.12.8 ~~ Global Env)이 서로 다른것인가요?

미해결

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

안녕하세요 오늘 네이버지식인GUI.exe를 만드는데 성공하였습니다. 그런데 처음에는 실패했습니다. 그이유는 커널이 이미지에서 위에 것(★Python 3.12.8 ~~~ 맞춤)으로 되어 있었습니다. pip install pyinstaller 해도 설치가 안된것으로 나왔습니다.(pip --version으로 확인) 그런데 아래것(Python 3.12.8 ~~~Global Env) 선택하니 모든것이 잘 되었습니다. [문의사항] 위에것 아래것 모두 버전이 Python3.12.8로 동일한데 이 두개가 서로 다른것인가요? 만약 다르다면 저는 python을 오늘 삭제하고 Python3.12.8을 1번만 설치했습니다. 이렇게 두개가 보이는 이유는 무엇일까요? 감사합니다.

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

graphviz download

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요. 현재 graphviz 버전이 12.2.1까지 나와있는데, 이 버전을 다운 받아도 문제 없이 수업 진행이 가능 한 건가요?

  • python
  • 머신러닝
  • 통계
grace 댓글 1 좋아요 0 조회수 103

인기 태그

인프런 TOP Writers

주간 인기글