묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨비전공자의 전공자 따라잡기 - 데이터베이스,SQL
3정규화 퀴즈에 관해 질문 드립니다.
제 3정규화 문제 풀이에서 서비스를 기본 키로 사용해야 한다고 설명해 주셨는데이런 식으로 기본 키를 추가해서 사용해주는 건 안되는 걸까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
application.properties (test) 없어도 적용이 되나요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의 중에 application.properties 파일이 없는데 로고가 적용 되는 이유를 알고 싶습니다. 강의 내용을 따라서 코드를 작성하고 test 를 돌리니깐 저는 적용이 되지 않더라고요 그래서 resoures/application.properties 를 복사해서 test 안에 붙여넣기 하니깐 로고가 찍혀서 나오는 걸 확인 했습니다. 없을 경우에도 원래 가능한 건지 아니면 제가 한게 맞은 건지 알고 싶습니다. logging.level.org.springframework.transaction.interceptor=TRACE logging.level.org.springframework.jdbc.datasource.DataSourceTransactionManager=DEBUG #JPA log logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG logging.level.org.hibernate.resource.transaction=DEBUG #JPA SQL logging.level.org.hibernate.SQL=DEBUG test 안에 application.propertie 에 포함되지 않았을 때 2023-11-07T08:29:26.134+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 외부 트랜잭션 시작2023-11-07T08:29:26.139+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : outer.isNewTransaction()=true2023-11-07T08:29:26.139+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 시작2023-11-07T08:29:26.140+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : inner.isNewTransaction()=true2023-11-07T08:29:26.140+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 롤백2023-11-07T08:29:26.141+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 외부 트랜잭션 커밋 test 포함 될 때 외부 트랜잭션 시작2023-11-07T10:18:23.081+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT2023-11-07T10:18:23.083+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Acquired Connection [HikariProxyConnection@369947173 wrapping conn0: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] for JDBC transaction2023-11-07T10:18:23.085+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Switching JDBC Connection [HikariProxyConnection@369947173 wrapping conn0: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] to manual commit2023-11-07T10:18:23.085+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : outer.isNewTransaction()=true2023-11-07T10:18:23.085+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 시작2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Suspending current transaction, creating new transaction with name [null]2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Acquired Connection [HikariProxyConnection@1178214215 wrapping conn1: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] for JDBC transaction2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Switching JDBC Connection [HikariProxyConnection@1178214215 wrapping conn1: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] to manual commit2023-11-07T10:18:23.086+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : inner.isNewTransaction()=true2023-11-07T10:18:23.086+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 롤백2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Initiating transaction rollback2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Rolling back JDBC transaction on Connection [HikariProxyConnection@1178214215 wrapping conn1: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA]2023-11-07T10:18:23.087+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Releasing JDBC Connection [HikariProxyConnection@1178214215 wrapping conn1: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] after transaction2023-11-07T10:18:23.087+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Resuming suspended transaction after completion of inner transaction2023-11-07T10:18:23.087+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 외부 트랜잭션 커밋2023-11-07T10:18:23.087+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Initiating transaction commit2023-11-07T10:18:23.088+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Committing JDBC transaction on Connection [HikariProxyConnection@369947173 wrapping conn0: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA]2023-11-07T10:18:23.088+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Releasing JDBC Connection [HikariProxyConnection@369947173 wrapping conn0: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] after transaction 정상적으로 찍혀서 나오는 걸 볼 수 있어요 제가 제대로 못 본 건지 강의 내용에서는 application.properties 가 main 코드 안에 만 작성이 되어 있었는데 로고가 나오던데 왜 그런지 알고 싶어요
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
companion object사용에 관하여 + entity class의 올바른 메서드 사용
안녕하세요. 우선 양질의 kotlin과 jpa관련 강의제공해주셔서 감사합니다.덕분에 어느정도 갈피를 잡을 수있었어요.어설픈 질문이지 않을까 걱정도 되지만, 조심스레 여쭤봅니다.[21강에 사용되는 companion object 의 fun fixture]해당 메소드는 객체가 생성될때 기본값을 가지도록 되어있는데 해당방식은 실제 프러덕션코드 에서도 적용할 수 있는 방식일까요?만약 그렇다면 다음과같이 직접적으로 field의 초기값을 설정하는것과 어떻게다른지 궁금합니다.@Entity class Book( val name: String = "", @Enumerated(EnumType.STRING) val type: BookType = BookType.COMPUTER, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, ) { init { if (name.isBlank()) { throw IllegalArgumentException("이름은 비어 있을 수 없습니다") } } fun generateIntegrateName(): String { return type.toString() + name } companion object { fun fixture( name: String = "책 이름", type: BookType = BookType.COMPUTER, id: Long? = null, ): Book { return Book( name = name, type = type, id = id, ) } } } 만약 test를 위해서만 존재하는 코드라면, entity class안에 test만을 위한코드가 존재하는게 자연스러운 구조인가요?[entity와 관련된 값 구성 강제하기]entity filed에는 정의되지 않아 Database에 column으로존재하진않지만, dto로 반환하는 integrateName의 생성을 강제하고 싶을때는 위코드의 fun generateIntegrateName 을 entity에 구성하여 dto에서 사용되는것이 올바른 방법인지 궁금합니다.data class BookInfoResponse( val integrateName: String, ) { companion object { fun of(entity: Book): BookInfoResponse { return BookInfoResponse( integrateName = entity.generateIntegrateName() ) } } }val book = bookRepository.findByName("이상한 나라의 엘리스") ?: throw IllegalArgumentException("잘못된 요청값입니다.") val result = BookInfoResponse.of(entity = book).integrateName강의내용과 검색등의내용을 짜집기해서 사용해보고있는데 막상 구현을하고 보니 적절한 방법인지 알길이 없어서 고민하다 질문드립니다.시간 내어주셔서 감사드립니다.
-
미해결비전공자의 전공자 따라잡기 - 데이터베이스,SQL
중간 테이블 관련해서 질문드립니다
강의에서 보여주신 ERD에서는 중간 테이블들이fk만 가지고 pk는 없다고 나오는데원래 중간 테이블을 만들 때는 pk 없이 fk들만 사용하는 건가요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mmdetection kitti customdataset 학습 시 오류
안녕하세요, 강의 잘 듣고 있습니다.train_detector(model, datasets, cfg, distributed=False, validate=True)실행 시키면, BrokenPipeError: [Errno 32] Broken pipe에러가 발생 하는데.. 이유를 잘 모르겠습니다 ㅜ
-
미해결2022 30분 요약 강좌 시즌 1 : HTML, CSS, Linux, Bootstrap, Python, JS, jQuery&Ajax
codesandbox 문서 버튼이 안보여요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. codesandbox 문서 버튼이 안보여요코딩실습을 해야하는데 문서 버튼이 아예 없어서 어딜 눌러서 코딩을 해야할지...
-
미해결
인프런 겨울 할인있나요?
안녕하세요 김영한 선생님 커리큘럼을 들을려고하는데혹시 겨울마다 할인을 하는지 궁금해서 질문드립니다!
-
미해결공공데이터 CSV 파일을 이용해 테이블 만들기
[14강]도로명주소 DB구축(1) 관련
안녕하세요. 이해가 잘 안가는 게 하나 있어서 질문드립니다. DB 포맷을 보면 부가정보와 지번 정보가월변동분 포맷에 변경사유코드 필드가 없고일변동분에만 변경사유코드가 있는데요. 이런 구조면 전체분대비 뭐가 바뀌었는 지를 모를텐데... 혹시, 지번정보, 부가정보의 경우는 월변동분 파일을 무시하고 일변동분을 누적해서 사용하라는 의미인걸까요?? 지번_변동분.TXT 에서 몇개 관리번호로 전체분의 번지_ㅇㅇ.TXT와 비교시 행전체가 동일해서 변경분이라고 생각이 안되서요.
-
미해결스프링 핵심 원리 - 기본편
[질문] Scope시 Autowired 이슈
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]Scope 하여 Autowired를 하면 빨간 하이라이트로 뜨면서 에러 메시지가 표시 됩니다.테스트는 잘되는데 왜 메시지가 표시되는지 모르겠습니다...
-
해결됨디자인 시스템 with 피그마
H1~6 대신 Large~XL 로 하는게 좋은점 이 있을까요?
검색 엔진 최적화 때문에 H 태그를 적극 사용하고 있는데강의에선 XL 등의 변수로 사용하셔서 H 태그로 사용하지 않아도 되는지 궁금합니다
-
미해결
QueryDSL 연관관계없이 조인
안녕하세요. A 테이블, B 테이블이 있는데 1:N 구조이며, 연관관계는 맺지 않았습니다.연관관계 없이 JPQLQuery<A> query = from( A ).leftJoin( B ).on(A.B테이블Id.eq(B.id) )하고 Projections.constructoer 방식으로 조회한 결과를 Dto로 받고있는데요,B테이블에 데이터가 2개일때 중복으로 데이터가 나와 페이징처리도 제대로 되지 않는데이럴경우 어떻게 해결을 해야할까요??
-
미해결[중급편] 코인 가격 모니터링 앱 제작 (Android Kotlin)
안드로이드버전에 따라 다른것이있을까요?
오늘 막 사서 시작했습니다.오류가 매번 다른게 발생하는데 검색하면서조금씩 해결해보고있습니다올려주신 xml파일도 복사 붙쳐넣기하고 런 실행하면계속 에러가 발생해서 문득 생각난게 강좌하신버전은 돌핀이고저는 기린버전으로 실행하고있는게 여기에서 생기는문제가 있을까하고 궁금해서 여쭤봅니다
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
NODE로 프로그램을 WINDOW 설치 프로그램으로 만들고싶습니다.
제가 만든 NODEJS 프로그램을 한글처럼 WINDOW 환경에서 통합설치 프로그램 하나만 설치하면 DB, NODE 프로그램이 설치되도록 하고싶은데 어떤 방법이 있고 구글에 어떻게 검색해야 하는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - G 12851 메모리초과
안녕하세요.저는 재귀로 했다가 시간초과 나서 BFS로 시도를 해보았는데 여러 예제를 넣으면 IDE상에서는 잘 됩니다. 그런데 백준에 넣으면 자꾸 메모리 초과라고 하면서 되지가 않네요. 변수도 별로 없고 그렇게 복잡한 코드도 아닌데 왜 안될까요.해설강의 봤는데 오히려 제 코드가 시간도 짧고 메모리는 훨씬 적게 먹을것 같은데...http://boj.kr/1fdf197d568c42be83e76b55ca24889b -- 해결했습니다.http://boj.kr/1455d3ec4d174bbd939b9ce22f57a763 visitied로 나중에 재방문하는 지점들을 처리하지 않게 만드니까 되네요.
-
해결됨컴퓨터 과학 (2): 자료저장 - 2진수, 문자, 오디오, 이미지, 비디오 포맷
싱크가 맞지 않는 것 같아요
컴퓨터 과학 (2): 자료저장 - 2진수, 문자, 오디오, 이미지, 비디오 포맷섹션 1. 22. 수치 데이터 numerical data22-2 음수 negative numbers이 강의 전체가 싱크가 맞지 않는 것 같은데 싱크좀 맞춰 주실 수 있나요???
-
해결됨
플러터 함수 실행에 대해 질문있습니다
/// 마커 터치 동작과 아이콘 수정 Future<Marker> Function(Cluster<Place>) _markerBuilder(BuildContext context) => (cluster) async { return Marker( markerId: MarkerId(cluster.getId()), position: cluster.location, onTap: () async { cluster.items.forEach((element) { log("${element.plcaeId.toString()}"); }); log("${context} 컨텍스트"); await locationWidgetUtil.buildShowModalBottomSheet(context!); }, icon: await _locationUtil.getMarkerBitmap( cluster.isMultiple ? 125 : 77, text: cluster.isMultiple ? cluster.count.toString() : null), ); }; /// 근처 플레이스 검색해서 마커 겹치는 정도 컨트롤 Future<void> initClusterManager(double lat, double lng) async { List<Place> placeCluster = await _locationUtil.nearSearchPlace(LatLng(lat, lng)); log("${placeCluster.length} 길이입니다."); _clusterManager = ClusterManager<Place>(placeCluster, _updateMarkers, markerBuilder: _markerBuilder(_context!), levels: const [1, 4.25, 6.75, 8.25, 11, 14, 16, 17, 20.0]); log("${_clusterManager!.items.length}아이템 길이이므니다"); notifyListeners(); } /// 겹치는 마커 안겹치는 마커 다시 그리는 용도 void _updateMarkers(Set<Marker> markers) { _markerList = markers; notifyListeners(); }var pl = Provider.of<LocationNotifier>(context,listen: false); await pl.getPosition(); pl.setContext(context); await pl.initClusterManager(pl.current.latitude,pl.current.longitude);아래 코드에서 pl.initClusterManager를 실행하면 정상적으로 _markerBuilder가 잘 실행되면서 다음 페이지로 넘어가는데 다시 pl.initClusterManager를 호출하면 _markerBuilder에 로그를 넣어보니 로그가 아예 실행이 안되는데 처음할 때는 실행이 되는데 한 번 더 입력하면 실행이 안되는지 이유를 모르겠습니다. 위에 코드는 Provider쪽 파일입니다.
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
[빈객체{}의 타입정의, 타입단언(as)] 클래스 멤버변수에 초깃값을 빈 객체{}로 할때, 빈 객체{} 타입을 어떻게 정의해야할까요?
안녕하세요,질문 :타입스크립트, 클래스에서 사용하는 변수에 초기값을 빈 객체({})로 정의할 경우,해당 빈 객체의 타입을 정의할 때, 타입단언, as를 사용하지 않고,다른 방법으로 정의할 수 있을까요? 다음과 같은 코드가 있습니다.interface Props{ email:string; password:string } class Store<State>{ // state에 초깃값으로 빈객체{}를 설정할때, // 빈 객체{}에 대한 타입이슈 public state = {} as State ..중략.. } export default new Store<Props>({ email:'hello@hello.com', password:'hello' }) Store란 클래스에서 state라는 변수를 빈 객체를 값으로 초기값으로 정의하였습니다.즉, 멤버변수 state는 빈객체{}를 초기값으로 사용할 것이며멤버변수 state는 인터페이스 Props 형태를 따르도록 규정하고 싶습니다. public state = {} as State빈객체{}의 타입을 정의할때,타입단언 as를 사용하지 않고 다른 방법이 있을까요? 어떤 값을 빈 객체를 초기값으로 시작한다고 코드 작성할때,as, 타입단어의 유혹?을 받곤 합니다. {}객체에 대한 타입정의에 대해 검색해보니Record타입으로 정의하는 내용이 나와 다음과 같은 코드로 변경해보았는데,public state:Record<State,string> = {}다음과 같은 에러가 발생했습니다.reduce 함수를 사용할 때도, 초깃값을 빈객체{}로 사용할 경우에도 as를 사용해,누산기(acc)의 타입을 as로 단언 한 코드를 종종 보곤 하는데요, 위와 같이 어떤 변수에 빈 객체{}를 초기값으로 혹은 값으로 할당하고 타입을 정의해야 할때,타입단언을 쓰지 않고, 다른 방법이 있는지 문의 드립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-k 질문입니다.
https://www.acmicpc.net/source/68946605강사님께서 적어주신 코드를 컴파일러에 실행해봤더니 아래와 같은 오류가 나옵니다.a.cpp:10:21: warning: array subscript is of type 'char' [-Wchar-subscripts] for(char a : s) cnt[a]++; ^~코드는 강사님과 동일합니다. 백준에선 통과했지만 컴파일러에서는 오류가 나오네요. https://www.acmicpc.net/source/68946669이건 제 컴파일러에서 오류가 안나오게 만든 코드인데요.char 타입이 음수 값을 가질 수 있어서, 그런가 싶어서 일단 'char'를 'unsigned char'로 변환하였습니다.근데 오류의 정확한 원인을 모르겠고,또 남들은 문제가 없어보이는데, 제 컴파일러에서만 오류가 나는 이유를 모르겠어서 여쭤봅니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
리프레시 토큰 관련 질문이 있습니다.
안녕하세요.해당 강의에 대한 질문이라기 보다 현재 우리가 구현한 인증/인가 구현 방법에 대한 질문이 있습니다. accessToken은 만료되었을 시 refreshToken을 재발급 받을 수 있도록 우리가 API를 만들었습니다. 따라서 클라이언트 측에서 accessToken 만료 시 refreshToken을 재발급하는 API를 요청하고 갱신을 할 것이라고 생각됩니다. 하지만 refreshToken을 갱신하는 API는 refreshToken이 만료되었을 시에는 리프레쉬 토큰을 갱신하지 못합니다. 이 때 사용자에게 재로그인을 시킨다는 기획이라면 문제가 없을 것 같습니다. (재로그인이라면 리프레시 토큰 갱신 API는 불필요할 것으로 생각됩니다.) 그렇다면 리프레시 토큰을 갱신하는 API는 클라이언트 입장에서 언제 호출을 해야되나요?사용자가 우리 서비스를 이용한다면 주기적으로 리프레시 토큰을 갱신하는 API를 호출하고 리프레시 토큰을 갱신을 해놔야하나요? 정답이야 없겠지만 스탠다드한 방법이 궁금합니다!
-
미해결일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석
네이버 쇼핑 정보 크롤링 중 '요소를 찾을 수 없는 오류'
안녕하세요 강사님! 올려주신 강의 잘 수강하고 있습니다. 강사님께서는 네이버 쇼핑 사이트에서, 안나플러스 4GF 남자 스킨 제품 리뷰를 크롤링하셨는데저는 네이버 쇼핑 사이트에서, 설화수 윤조 에센스 6세대 90ml 제품 리뷰 크롤링을 하며 강의 내용을 복습하려고 했습니다. 따라서 이렇게 코드를 변경해보았는데요. (이 외에 강사님 코드 중 변경한 부분은 없습니다.)############################################################################################################ name = ['설화수 윤조 에센스 6세대 90ml'] ns_address = "https://search.shopping.naver.com/catalog/41452071623?&NaPm=ct%3Dlom567qo%7Cci%3D0626056d8aed283141db9c13254eb1ca5283307e%7Ctr%3Dslcc%7Csn%3D95694%7Chk%3D20ea68fdd5b7cd13a1caaf25826165e0d0bdd99f" shoppingmall_review = "/html/body/div/div/div[2]/div[2]/div[2]/div[3]/div[2]/div/div[2]/ul/li[5]/a" category_total = "/html/body/div/div/div[2]/div[2]/div[2]/div[3]/div[7]/div[2]/div[2]/ul/li[1]/a" ############################################################################################################ 이런 오류가 발생했습니다.--------------------------------------------------------------------------- NoSuchElementException Traceback (most recent call last) <ipython-input-9-b59caa4ea12b> in <cell line: 2>() 1 # 2023.05.08 변경 find_element_by_xpath TO find_element ----> 2 driver.find_element(By.XPATH, category_total).click() #스크롤 건드리면 안됨 3 cnt=1 4 page=1 2 frames /usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response) 243 alert_text = value["alert"].get("text") 244 raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here --> 245 raise exception_class(message, screen, stacktrace) NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/div/div[2]/div[2]/div[2]/div[3]/div[7]/div[2]/div[2]/ul/li[1]/a"} (Session info: headless chrome=90.0.4430.212); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception Stacktrace: #0 0x57930a7c37f9 <unknown> #1 0x57930a7633b3 <unknown> #2 0x57930a4ab016 <unknown> #3 0x57930a4df81e <unknown> #4 0x57930a5158fb <unknown> #5 0x57930a502ded <unknown> #6 0x57930a5139e1 <unknown> #7 0x57930a502c93 <unknown> #8 0x57930a4d4ce4 <unknown> #9 0x57930a4d64d2 <unknown> #10 0x57930a78f542 <unknown> #11 0x57930a79ece7 <unknown> #12 0x57930a79e9e4 <unknown> #13 0x57930a7a313a <unknown> #14 0x57930a79f5b9 <unknown> #15 0x57930a784e00 <unknown> #16 0x57930a7b65d2 <unknown> #17 0x57930a7b6778 <unknown> #18 0x57930a7cea1f <unknown> #19 0x7cccaee40ac3 <unknown> #20 0x7cccaeed2a40 <unknown>캡쳐본 첨부합니다.뭐가 문제고, 어떻게 해결하면 좋을까요?답변 기다리겠습니다. 감사합니다!