MemberRegisterTest를 진행할 때 @SpringBootTest를 사용해서 테스트를 진행했는데요 서비스 테스트에는 @ExtendWith(MockitoExtension.class)를 사용하는 경우를 많이 봤습니다 헥사고날 아키텍처에서는 애플리케이션과 도메인이 중심이 되기 때문에 서비스에서 @SpringBootTest를 사용한걸까요?
from pykiwoom.kiwoom import Kiwoom kiwoom = Kiwoom() kiwoom.CommConnect(block=True) accounts = kiwoom.GetLoginInfo("ACCNO") first_account = accounts[0] data = kiwoom.block_request("opw00001", 계좌번호= first_account, 비밀번호 ="xxxxx", 비밀번호입력매체구분="00", 조회구분=2, output="예수금상세현황", next=0) deposit = data["예수금"] print(f'계좌 예수금: {deposit}원') 코드 입력하고 PS C:\Users\sanmok\kiwoom> C:/Users/sanmok/anaconda3/Scripts/activate PS C:\Users\sanmok\kiwoom> conda activate 32bit PS C:\Users\sanmok\kiwoom> python chapter4_1.py하면 로그인창이 나타나고 금방 사라지면서 [GetPCIdentity] VER 3.2.0.0 build 2015.8.12 [GetPCIdentity] VER 3.2.0.0 build 2015.8.12 이렇게 나오고 로그인 할 때 비밀번호는 id비밀번호를 말하는 건가요> 아니면 4자리수 비밀번호를 의미하나요? 코드에서 id비밀번호를 입력하는 건지,4자리수 비밀번호를 입력하는 건지? 분명히 코드 id 비밀번호나 4자리수 비밀번호를 넣더라도 다음과 같은 khopenapi에 "계좌비밀번호 입력창을 통해 조회에서 사용한 계좌번호 비밀번호를 입력하라고나옴(44) 분명히 비밀 번호를 넣었느데... 엄청 어렵네요, 딴사람들은 어떤지 모르겠네요/
아래의 엔드포인트 두개의 함수 부분에서 async def download_basic(file_name: str): async def download_custom(file_name: str): if not file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): 이 부부의 file_path를 full_file_path를 아래처럼 할당한 후에 if not full_file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): 으로 수정해야 할 듯 합니다. @app.get("/download/basic/{file_name}") async def download_basic(file_name: str): safe_base_filename = os.path.basename(file_name) file_path = os.path.join(DOWNLOAD_DIR, safe_base_filename) full_file_path = os.path.abspath(file_path) . ' ' if not full_file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): # if not file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): @app.get("/download/custom/{file_name}") async def download_custom(file_name: str): safe_base_filename = os.path.basename(file_name) file_path = os.path.join(DOWNLOAD_DIR, safe_base_filename) full_file_path = os.path.abspath(file_path) . ' ' if not full_file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): # if not file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): 그렇지 않으면 검증이 되지 않습니다. 아래 참고 file_path: ./downloadables/스크린샷_3.png full_file_path: D:\Python_FastAPI\Inflearn_Master\File_API\downloadables\스크린샷_3.png os.path.abspath(DOWNLOAD_DIR): D:\Python_FastAPI\Inflearn_Master\File_API\downloadables
좋은 강의 감사합니다. 강의 내용과 같이 설정이 잘 진행 되었습니다. python 3.10.4 가상환경 kiwoom_32 python platform ('32bit', 'WindowsPE') 문제는 VS-Code 터미널에 "pip install pykrx" 입력 하면 아래 와 같은 오류 메세지가 표시되면서 설치 되지 않습니다. (pandas 설치도 동일함.) " Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error" 설치 방법 도움 부탁 드립니다. p.s VS-Code 터미널 캡처 화면 유첨 하오니 참고 바랍니다 .
안녕하세요. ApiControllerAdvice에서 하나의 Handler 메서드에서 아래 2개 Exeception 타입을 처리하시도록 변경하셨는데요. - DuplicateEmailException - DuplicateProfileException 이렇게 할 경우, 아래와 같이 두 Exception의 공통 타입인 RuntimeException 객체로 파라미터를 받아야 하는거 아닐까요? @ExceptionHandler({DuplicateEmailException.class, DuplicateProfileException.class}) public ProblemDetail duplicateExceptionHandler(RuntimeException e) { return getProblemDetail(HttpStatus.CONFLICT, e); } 감사합니다.
안녕하세요. Member와 MemberDetail의 연관관계 주인이 바뀐게 아닌가 싶습니다. 비록 1:1 관계이고, 두 객체 인스턴스가 동시에 생성되고 테이블에 영속화 되게끔 설정된 거는 맞지만, 논리적으로 Member 엔터티가 상위 엔터티이고, MemberDetail이 하위 엔터티가 맞는 것 같아요. 추후 Member 엔터티를 참조하는 다른 엔터티가 만들어질텐데, MemberDetail을 참조하는게 아니라 Member를 참조해야 하고요. 관련한 의견 부탁 드립니다. 감사합니다.
안녕하세요. 도메인 영역에 @Entity, @Query 애너테이션을 사용하는게 문제가 없다는 내용과 이유를 강의에서도, 질문&답변에서도 잘 설명해 주셨고, 모두 확인했습니다. 동일한 이유로, 강의에서 DuplicateEmailException에 @ResponseStatus 애너테이션 사용 시, 의존성 문제에 대해서 언급한 부분도, JPA 애너테이션을 사용할 수 있다는 동일한 근거로 허용되어도 문제가 없는게 아닐까요? 물론, @ResponseStatus 사용 시에 상태 코드 외에 추가적인 메시지 설정이 불가능하다는 등 단점이 있어서 사용하지는 않겠지만요. 그저 기술 의존성 침투 관점에서 궁금해서 문의 드립니다. 감사합니다.
그림을 아래코드처럼 삽입하면 표 안 중앙 위치에 삽입되는게 아니라 오른쪽으로 치우치게 삽입이 됩니다 어디에서 오류가 나는건지 몇 번 다시 반복해봐도 안되고 코드를 사용하지 않고 수동으로 복사 붙여넣기로하면 정사적으로 이미지가 표안에 크기가 맞추어 삽입이 되는데 해결방법 알려주십시오. hwp.insert_picture(r"C:\Users\rkdmf\Downloads\number\002.png")
windows 에서 pip freeze로 requirements.txt 를 만들기 위해선 아래와 같은 명령어를 사용하시면 됩니다. pip list --format=freeze > requirements.txt 강의 마지막까지 진행된 conda 환경에서 실행하시고 결과 답변주세요. 감사합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
생성자에서 필드에 의존성 주입하면 예를 들어 컨트롤러 생성자를 만들때 서비스 필드에 의존성 주입해주면 그때는 @Autowired가 자동으로 존재한다고 했는데 이 @Autowired 는 생성자의 파라미터를 전부 빈으로 등록시켜주는건가요? 만약 그렇다고 한다면 생성자의 파라미터가 객체가 아닌 경우는 어떻게 되는건가요? 혹시 객체 타입 파라미터만 빈으로 등록시켜주고 객체가 아닌 파라미터는 빈으로 등록시켜주지 않나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] [SpringBoot 3.x] ```java plugins { id 'java' id 'org.springframework.boot' version '3.5.4' id 'io.spring.dependency-management' version '1.1.7' } group = 'study' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' runtimeOnly 'com.h2database:h2' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } ``` 강의파일에 있는 그대로 build.gradle 설정 완료후 compileJava를 진행하면 build/generated/sources/annotationProcessor/java/main/study/querydsl/entity/QHello.java 까지 생성이 됩니다. 하지만, build and run using : intellij Run tests using : intellij 로 변경하면 Q타입 인식이 안됩니다. 1. 버전 변경 진행 2. Annotation Processor enable 체크 확인 3. projectStructure -> modules -> build 부분 source 체크 진행 3가지 모든 과정을 진행해보았는데 동일했습니다. 이럴때는 Run as intellij 가 아닌 Gradle로 두어서 진행해야 할까요?