묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
GameRoom.Flush() 수행 중에 _sessions가 변경 되면, 컬렉션 변경 에러가 나옵니다.
// GameRoom.cs public void Flush() { foreach (ClientSession s in _sessions) s.Send(_pendingList); _pendingList.Clear(); }foreach를 돌며 s.Send()를 하는 와중에_sessions가 변경되면,(_sessions.Add 되거나 _sessions.Remove 되면)아래와 같이 컬렉션 변경 에러가 나옵니다. 이를 해결하려고 아래와 같이 _sessions를_sessionsCopy에 복사하여 foreach 돌렸습니다.// GameRoom.cs public void Flush() { List<ClientSession> _sessionsCopy = _sessions.ToList(); // 복사 foreach (ClientSession s in _sessionsCopy) s.Send(_pendingList); _pendingList.Clear(); _sessionsCopy = null; } 더 좋은 방법이 있을까요?
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
강의를 보고 똑같이 코드를 쳤는데 a태그가 밑으로 떨어집니다 ㅠㅠ
■ 공지사항,갤러리가 별도로 구성되어있는 강의를 듣고있는데 news 클래스 아래로 a태그가 떨어집니다 ㅠㅠ혹시 잘못된 부분이 있는걸까요? <body> <section class="items"> <article class="news"> <div class="tab-inner"> <div class="btn"> <span>공지사항</span> </div> <div class="tab"> <a href="#none"> 문자발송서비스 <b>2024.03.06</b> </a> <a href="#none">문자발송서비스 <b>2024.03.06</b> </a> <a href="#none">문자발송서비스 <b>2024.03.06</b> </a> <a href="#none">문자발송서비스 <b>2024.03.06</b> </a> <a href="#none">문자발송서비스 <b>2024.03.06</b> </a> </div> </div> </article> <article class="gallery">갤러리</article> <article class="now">바로가기</article> </section> </body><css>* { padding: 0; margin: 0; position: relative;} a { color: inherit; text-decoration: none; display: inline-block;} ul,li,ol { list-style: none;} /*와이어프레임정렬*/ .items { border: 3px solid blue; max-width: 1200px; margin: 0 auto; display: flex; } .items div { height: 200px; } .news { width: 350px; background-color: lightblue;} .news .tab-inner { border: 5px solid salmon; } .news .tab a { border: 3px solid slateblue; } .gallery { width: 500px; background-color: coral;} .now { width: 350px; background-color: lightseagreen;} /*tab content*/ -출력화면-
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
Addressable Sprite 파일
현재는 하나의 파일에 한 개의 스프라이트로 불러오고 있는데Sprite Mode를 multi로 짤라서 그 파일에 들어있는 스프라이트를 가져오는 방법은 어떻게 하나요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MVC2 완강 후, JPA강의 듣기 전에 간단한 프로젝트를 해볼까합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]아직 실력이 부족해서 대단한 웹사이트를 만들어보려는건 아니지만,, 복습겸 JPA 강의를 듣기 전에 MVC1,2편에서 배웠던 기술들을 바탕으로 블로그같은 웹사이트를 한 번 혼자 개발 해보려고합니다. 저에겐 첫 프로젝트이기도 하고, 혼자 진행하려고 하다보니 사실 정말 막막한데요..ㅠㅠ 특히 아직 1회독이라 그런지 영한 강사님이 설명해주셨던 기능들이 기억이 안날 때도 있고 응용이 쉽지 않은 것 같습니다.첫 프로젝트는 최대한 배웠던 코드들과 수업 자료를 참고하고 읽어보면서 완성하는데에 의미를 두어야하는걸까요?아니면 오래 걸리더라도 수업 자료 참고하지 않고 혼자 개발하는데에 의미를 두어야하는걸까요?수업 자료를 참고하고, 기억 안나는 기능들을 한 번 더 정리하면서 프로젝트를 만들어야겠다고 생각했었는데, 생각해보니 저만 이렇게 기억을 못하고 응용을 못하고있는거 아닌가 싶고, 이미 그 전에 작성했던 코드를 아무리 바꿔서 작성한다고 해도 참고하여 코드를 작성하면 실력이 늘어날까? 그냥 보고치는게 되지않을까 싶어서요..ㅠㅠ 보고치는게 실력이 늘지도 잘 모르겠어서,, 그러면 프로젝트가 아닌 한 번 더 강의를 보고 2회독을 하는게 맞는건지..ㅠㅠ 어느 방향으로 가야할 지 모르겠습니다. 조언 부탁드립니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
명시적으로 함수를 호출하지 않으면 무조건 스레드 세이프할까요?
안녕하세요? 강의 재밌게 보고 있습니다.아래 인프런 질문을 보면Q. Receive()는 lock을 사용하지 않는 이유?A. 명시적으로 Recv()처럼 호출하지 않기 때문에 1번에 1개의 스레드만 접근하여 스레드 세이프함이라는 질문을 보았는데요, 이 답변을 조금 확대 해석해 봤는데Q. 명시적으로 함수()를 하지 않으면 무조건 스레드세이프할까요? 답변 미리 감사합니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
dfs, bfs 1번문제 dfs코드
안녕하세요 bfs코드로 문제를 푸셨는데 이 문제를 dfs코드로 푸신 것도 볼 수 있을까요? (bfs로 푸신 것은 이해했습니다만 dfs는 dx, dy를 어떻게 적용해야하는지 궁금해서요)또한 bfs는 최단거리 구할때 풀고 이외에는 dfs로 풀면 되는 것으로 아는데 애초에 bfs로 모든 문제를 접근하게 되면 최단거리 문제도 풀 수 있으니 dfs보다 포괄하는 문제유형이 많아서 효율적인 것이 아닌가요?좋은 강의 해주셔서 감사합니다.
-
해결됨백엔드 개발자 성능 개선 초석 다지기
5000건에 대한 부하테스트 중 5000건 관련
올려주신 코드를 확인해보면SELECT * FROM notice limit 1000;findAll 쿼리는 1000건만 가져오도록 되어있습니다.5000건의 데이터를 조회하는 API라 하신 것은 5천건의 데이터를 가진 테이블에서 1000건을 조회하는 쿼리라고 이해하면 될까요?
-
미해결김영한의 실전 자바 - 기본편
상속과 메모리 구조
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]상속과 메모리 구조에서 객체를 생성했을 때 객체 호출자타입이 본인 타입을 찾는다고 했는데 10:00분 쯤에서 말한 자식을 먼저 찾고 없으면 부모에서 찾는다고 했는데 호출자 타입의 시작이 부모라면 부모타입에 먼저 가고 부모에 없으면 자식으로 가나요? 아니면 부모는 자식을 모르니까 부모타입에서 없으면 그대로 컴파일 오류가 발생하나요?제가 생각하기엔 부모에서 없으면 바로 컴파일 오류가 발생할 거 같은데 맞나요?
-
해결됨
IntelliJ Plug-in 설치 문제
IntelliJ IDEA 2023.3.4 (Community Edition) Build #IC-233.14475.28, built on February 13, 2024 Runtime version: 17.0.10+1-b1087.17 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 10.0 GC: G1 Young Generation, G1 Old Generation Memory: 2048M Cores: 8 Registry: ide.experimental.ui=true Non-Bundled Plugins: com.arcticicestudio.nord.jetbrains (0.13.0) Kotlin: 233.14475.28-IJhttps://www.inflearn.com/questions/1176215/intellij-plugin-%EC%84%A4%EC%B9%98-%EC%98%A4%EB%A5%98↑이전 질문↑일단 지금 상황은 설치되는 플러그인과 안 되는 플러그인이 있는 상황입니다.일단 문제 해결에 방해될까봐 모두 꺼놓은 상태입니다.플러그인 수동설치도 모두 시도해 보았습니다.깔고 싶은 플러그인은 Minecraft Development 입니다. (아래 링크↓)버전 확인도 했습니다.https://plugins.jetbrains.com/plugin/8327-minecraft-development인터넷 연결상태: 연결은 잘 되고 있습니다. IntelliJ IDEA 재시작: 수백번을 해봤습니다. 그냥 껐다가 켜보고 재설치도 해보고 오래된 버전도 설치해 보았지만 실패했습니다.HTTP Proxy 확인: HTTP Proxy는 어찌저찌 찾았습니다.근데 어떻게 하는지 몰라요캐시 제거: 이건 못찾겠습니다ㅠ최신 버전 업데이트: 해보았지만 실패입니다.방화벽, 안티바이러스 프로그램: 방화벽 설정을 뒤져봐도 관련 내용은 없는것 같습니다.제가 너무 무식해서 죄송함다제가 학생이라 답변 많이 늦습니다죄송합니다
-
해결됨백엔드 개발자 성능 개선 초석 다지기
비동기 방식시 주의사항 관련해서 (Common Pool)
비동기 방식 사용시 별도의 thread pool을 설정하지 않는다면 common pool을 사용하기 때문에, thread pool의 thread를 사용하도록 설정해야 하셨는데, common pool을 사용하면 안되는 이유와 thread pool의 thread를 사용했을 떄 어떤 차이점이 있는지 궁금합니다. 제가 배경지식이 부족해서 그런지 모르겠지만 이 부분에 대한 설명이 없어서 아쉬웠습니다.
-
미해결웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩
nc.exe 와 windows 11 실시간 보호기능 관련
windows 11에서 실시간 보호 기능을 꺼도, nc.exe -lvp 9999 하는 순간 해당 exe 파일을 제거하더라고요. 보안 설정에서 특정 폴더의 검사를 제외하는 식의 설정이 있어야 합니다. (이런 부분을 강의에서 추가 섹션으로 언급해 주시면 좋을 것 같습니다.) 그리고 그렇다면 실제 공격(?) 시나리오에서는 windows 보호 기능으로 인해 이런 통신 프로그램 들을 차단할 텐데, 공격자가 독자적인 프로그램을 개발해서 윈도우의 탐지를 우회해야 하는 것인지? 궁금하네요. 대부분의 exe가 smartscreen 등을 통해 차단되고 그러는 시대에 어떠한 방식이 적절한지 궁금합니다. 요새는 LOTL 같이 Windows에 내장된 powershell 등을 최대한 활용하는 방식이 흔하다고 들었습니다.스크립트를 사용한다 하더라도 서비스를 띄우는 순간 포트 리스닝을 허용을 해야 하던데 이런 부분들은 어떻게 우회하는지 궁금합니다.
-
미해결알고리즘 코딩테스트 문제풀이 with JAVA & 파이썬 (난이도 - 브론즈 3)
동영상 강의 화면이 작아요.
이전 강의는 화면 최대한 키우는 기능이 있던데 이번에는 그 기능이 없네요.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
모든 Route 기본 Private로 만들고 IsPublic Annotation 작업하기 강의부분 질문드립니다
안녕하세요 너무 잘듣고있습니다 '모든 Route 기본 Private로 만들고 IsPublic Annotation 작업하기' 수업듣는 중 질문이있어 글남깁니다.POSTMAN에서 DELETE기능을 눌렀을때 에러가 발생합니다 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ[터미널에 나온 에러 내용][REQ] GET /posts?order__createdAt=DESC&take=5 2024. 3. 6. 오후 7:44:07[REQ] DELETE /posts/122 2024. 3. 6. 오후 7:44:32[Nest] 9576 - 2024. 03. 06. 오후 7:44:32 ERROR [ExceptionsHandler] update or delete on table "posts_model" violates foreign key constraint "FK_40cd89c6655ec7b102842feacab" on table "image_model"QueryFailedError: update or delete on table "posts_model" violates foreign key constraint "FK_40cd89c6655ec7b102842feacab" on table "image_model"at PostgresQueryRunner.query (C:\Users\manjin han\OneDrive\바탕 화면\flutter 폴더 및 파일\cf_sns\src\driver\postgres\PostgresQueryRunner.ts:331:19)at processTicksAndRejections (node:internal/process/task_queues:95:5)at DeleteQueryBuilder.execute (C:\Users\manjin han\OneDrive\바탕 화면\flutter 폴더 및 파일\cf_sns\src\query-builder\DeleteQueryBuilder.ts:77:33)at PostsService.deletePost (C:\Users\manjin han\OneDrive\바탕 화면\flutter 폴더 및 파일\cf_sns\src\posts\posts.service.ts:332:7) [postman 에러 내용]{ "statusCode": 500, "message": "Internal server error" } ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ강의상terminal창에, 이렇게 화면이 나와야하는데해당화면처럼 에러가 나오네요몇일 고민해도 안되서 질문 드립니다
-
미해결백엔드 개발자 성능 개선 초석 다지기
MySQL 인덱스 관련해서
안녕하세요 incu님, 강의 잘 듣고있습니다.인덱스 면접대비하기 부분에서 2가지 질문이 있습니다.첫번째, MySQL 인덱스의 자료구조는 b-Tree라고 하셨는데, b+Tree 아닌가요? b+Tree의 개념을 포함해서 쓰신건지 궁금합니다. 두번째, 인덱스를 생성하고 그 인덱스를 WHERE 조건절에 사용했음에도 인덱스를 타지 않는 경우 중에 not eq 조건도 있는 것으로 알고있습니다. 이 경우에는 Table Full Scan하는 것이 맞는거죠? 아니면 not eq 조건에서 인덱스를 타지 않는데, 성능을 개선할 수 있는 방안이 어떤 것이 있는지 궁금합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
nextauth session type 질문드립니다.
session 데이터를 제 프로젝트 상황에 맞게 바꿔서 만들어주고싶어 https://next-auth.js.org/getting-started/typescript해당 문서를보고 타입을 만들어주었습니다,declare module "next-auth" { interface Session { user: { address: string ids:string[] } }}그리고 callback 부분으로 넘어가 session 에서session.user.Ids = token.ids; return session;이런식으로 셋팅해주는데요.session.user.Ids = token.ids; 에서 타입에러가 발생되어 타입에 디폴트 세션을 넣어주니 에러는 사라졌으나 타입이 2개가 되어 user.이후에 값을 추론을 못하더라구요, 이번강의 영상을 보다보니 nextauth 에서 정해놓은 규칙이 있다하셧는데 혹시 세션 타입또한 디폴트세션을 사용안할수는 없는걸까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ClientSession의 Room이 null인 경우
안녕하세요.Part 4를 완강하고 Part 7으로 넘어가기 위해새로운 솔루션을 생성해서 기존 Part 4 솔루션 내의프로젝트들을 우선 Ctrl + C, V 한 뒤 기존 프로젝트 추가로Part 7에서 사용할 서버 솔루션을 Part 4와 동일하게 맞추는 작업을 하고 있었습니다!그런데, DummyClient의 연결 수를 20개 정도로 하면 문제가 없지만, 30개부터는 특정 ClientSession의 Room이 null인 상태에서 서버 측의 C_MoveHandler가 실행되어 서버가 뻗어버리는 경우가 간헐적으로 발생하고 있습니다.(강의 보면서 따라 한 솔루션은 100이면 100 잘 되며, 새롭게 복사한 솔루션은 대부분 잘 되지만 가끔식 위 오류가 발생합니다..) 처음엔 단순히 Ctrl+C , V 하는 과정에서프로젝트나 솔루션의 설정값들이 새로운 경로로 옮기면서 동기화가 안되어 생기는 문제인 줄 알았는데,코드를 계속 천천히 읽다보니 의문이 들게 되었습니다. public GameRoom? Room { get; set; }public override void OnConnected(EndPoint? endPoint) {Console.WriteLine($"OnConnected: {endPoint}");Program.Room.Push(() => Program.Room.Enter(this));}제가 이해한 바로는ClientSession의 Room은Listener에 의해서 ClientSession.OnConnected가 호출되며 Program.Room에게 Enter(this)를 요청하고,이후 Program.Room은 Flush()를 통해 특정할 수 없는 시점에 비로소 Enter를 호출하게 되며, ClientSession.Room이 자기 자신을 가리키도록 합니다. 그런데, 정말 운이 안 좋다면 Program.Room이 A번 ClientSession에 대한 Enter 작업이 미처 다 수행되기 전에DummyClient 측의 SendForEach로 인해 A번 ClientSession과 대응되는 ServerSession으로 이동 패킷을 보내고,최종적으로 A번 ClientSession의 Room이 null인 상태에서 C_MoveHandler를 실행 할 여지가 있는 것이 아닌가 생각하게 되었습니다. 혹시 제가 생각하고 있는 것이 맞는건지,아니면 단순하게 솔루션을 잘못 복사해와서 문제가 생긴건지궁금합니다..만약 그런 여지가 있다면 단순히 room이 아직 null인지 체크하고 이동 패킷을 무시하면 되는걸까요?
-
해결됨3D 모델링 입문을 위한 라이노(Rhino) '꿀팁' Part.1
아이폰 버튼 결합 안 됨
아이폰 그 아래쪽 동그란 버튼 만드는데똑같이 rebuild 하고 patch했는데 본체랑 join이 안 됩니다. 결합할 수 없다고 뜨는데 무엇이 문제였을까요..?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Model로 전달하는 것과, dto나 form을 만들어 전달하는 것
Dto로 전달하지 않고 model로 전달하는 경우는 어떤 상황에서 하는 건가요 ?? 프로젝트를 하다보면 무조건적으로 dto로 전달했어서 궁금합니다... 같은 맥락으로 form데이터도 차이가 있나요 ???
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
FPGA수강 기기 질문
=================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.================== 안녕하세요 맛비님!이번에 hdl season 1 을 다 수강하고fpga 가속기 설계를 듣고자 하는 학생입니다!그런데 강의를 살펴보니 zybo z7 이나 arty z7을 사용하더군요그런데 제가 학교에서 해당 기기들을 대여 할 수 있는지 문의해보니 해당 모델은 없고 nexys a7을 대여 할 수 있다고 답변이 왔습니다.학생인지라 기기를 새로 살만한 여유가 없어 부득이하게 nexys a7 밖에 사용 할 수 없는 상황인데 nexys a7으로도 강의 진행이 가능한지 여쭤보고 싶습니다!
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
url도 출력하려면 어떻게 해야 하나요
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from bs4 import BeautifulSoup import requests import time import pyautogui import os import urllib.request import openpyxl # 검색어 입력하기 keyword = pyautogui.prompt("검색어를 입력하세요>>>") # 엑셀 생성 및 시트 추가 wb = openpyxl.Workbook() ws = wb.active ws.title = keyword # 시트의 타이틀을 검색어로 지정합니다. ws.append(['번호', '제목', '조회수', '날짜', 'url주소']) # 데이터 행 추가 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 불필요한 에러 메세지 없애기 chrome_options.add_experimental_option("excludeSwitches",["enable-logging"]) service = Service(executable_path=ChromeDriverManager().install()) url = f"https://www.youtube.com/results?search_query={keyword}" browser = webdriver.Chrome(service=service, options=chrome_options) browser.implicitly_wait(5) # 웹페이지가 로딩 될때까지 5초 기다림 browser.maximize_window() # 화면 최대화 browser.get(url) response = requests.get(url, headers={'User-agent':'Mozila/5.0'}) html = response.text soup = BeautifulSoup(html, 'html.parser') # 7번 스크롤하기 scroll_count = 7 i = 1 while True : # 맨 아래로 스크롤을 내린다. browser.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END) # 스크롤 사이에 페이지 로딩 시간 time.sleep(2) if i == scroll_count: break i += 1 # Selenium - Beautifulsoup 연동방법 html = browser.page_source soup = BeautifulSoup(html, 'html.parser') infos = soup.select('div.text-wrapper') for i, info in enumerate(infos,1) : # 원하는 정보를 가져오기 # 제목 title = info.select_one("a#video-title").text try: # 조회수 views = info.select_one("div#metadata-line>span:nth-child(3)").text # 날짜 data = info.select_one("div#metadata-line>span:nth-child(4)").text except: views = "조회수 0회" date = "실시간" try : # url주소 target = browser.find_element(By.CSS_SELECTOR,".yt-simple-endpoint.inline-block.style-scope.ytd-thumbnail") url_href = target.get_attribute['href'] except : url_href = "href없음" print(title, views, data, url_href) ws.append([i, title, views, data, url_href]) wb.save(f'07_유튜브_크롤링/{keyword}.xlsx')선생님 url 코드도 뽑아보고 싶어서 해봤는데 리스트 형태로 출력이 되어서 어떻게 하는지 궁금해서 여쭤봅니다 구글링 해 보았는데 제가 잘 못 찾아서 그런지 오류 나거나 리스트 형태로 밖에 출력이 안되네요[]