안녕하세요. 쿼리문 첨부해서 다시 질문드립니다! 별칭을 지정 후에 SELECT, WHERE 절에 별칭을 사용하지 않고 원래 테이블 이름을 쓰니까 오류가 났습니다. 별칭을 지정하면 별칭으로 통일해야하는건가요? 원 테이블 이름과 혼용이 안되는게 맞는지 궁금합니다! 감사합니다.
강의내용을 복습하며 Session 부분을 여러번 반복해서 만드는 도중 System.ObjectDisposedException: Cannot access a disposed object 에러가 발생하여 질문드립니다. 본 강의에서는 OnRecvComplited 함수에 Disconnect 함수를 추가하지 않으셨는데 (Session #2 첫 부분에서 추가하신 것은 확인하였습니다) Disconnect()가 두 번 실행되었을 경우를 대비하여 _disconnect 를 플래그로 세워 Interlocked.Exchange를 이용하니 에러가 사라졌습니다. 해당 에러는 연결이 끊긴 소켓에 접근할 경우 발생하는 것으로 파악하였습니다. 그렇다면 멀티쓰레드 환경에서 OnAcceptHandler와 OnRecvComplited에 포함된 Disconnect() 함수가 동시다발적으로 실행되면서 해당 오류가 발생한다고 보면 되는 것인가요? +) 추가로 Socket.Close()를 통해 연결을 끊는다는 것을 소켓이 삭제되는 것이라고 봐도 무방한지 궁금합니다. 자료에도 소켓을 해제한다, 대기된 데이터를 삭제한다라는 표현만 사용되었고 소켓 자체를 삭제한다는 이야기는 없는 것 같아 질문드립니다. 감사합니다.
CoreApplication 파일에 @SpringBootApplication이 있어 @ComponentScan이 이루어지는 걸 알 수 있는데요. 1. AppConfig 파일과 AutoAppConfig 파일이 읽어 지는 순서가 @Configuration을 갖고 있어서 바로 Bean이 되는건가요? 아니면 @Configuration 안에 있는 @Component가 있어 ComponentScan이 되는건가요? 2. 그리고 AutoAppConfig 파일에 아래와 같이 excludeFilters가 되어있는데 실행을 해보면 AppConfig의 내용이 실행된걸 콘솔창에서 볼수있었습니다. 제외 돼야 하는거 아닌가요? 제외가 되지않는다면 왜 그런지 이유를 알고 싶습니다.
현재 모든 강의를 마무리하고 전반적인 문제가 없는 지 확인하는 과정에서 몬스터 위에 커서를 올렸을 때 공격 표시로 바뀌지 않는 문제를 겪고 있습니다. 인식 자체가 안되는 게 아니라 처음 등장해서 한동안은 문제 없이 전투가 이루어지다가 몬스터와 플레이어가 비벼지는 순간부터 이상하게 레이캐스트에서 몬스터의 콜리더를 인식 못하는 문제를 생깁니다.(빨간 색 레이 선이 몬스터의 콜리더를 관통하는 상황에서 디버깅을 걸어봐도 걸리지 않고 있는 상황입니다.) 강사님이 올려주신 파일을 실행해보니 같은 문제가 발생하지는 않는데 커서 컨트롤러를 코드를 복사하여 제가 작성한 파일에 저장한 이후로도 같은 문제를 겪고 있어서 이러한 부분이 코드 상에서 발생하는 문제인지 아니면 유니티 에셋 모델에 따라 발생하기도 하는 문제인지 가늠이 안 가는 상태입니다. ----- 해결 강사님 자료와 비교해서 코드 상에 차이점을 발견하지 못해 몬스터가 가진 컴퍼넌트에서 차이를 보이는 지 확인해보니 강사님 몬스터에는 리짓바디가 없고 제 모델에는 리짓바디가 붙어있기에 그걸 제거해보니 정상적으로 작동이 되네요. 의문인 점은 아예 처음부터 인식이 안되었다면 리짓바디가 레이캐스트을 막는 일련의 작동을 하는구나 싶은데 처음에는 정상적으로 작동하다가 비비는 과정에서 레이캐스트가 안되는 문제가 발생하는 이유를 알 수 있을까요? --- 아무래도 이상하다 싶어서 구글링을 계속 하다 보니 리짓바디 관련해서 오류가 생기는 경우 리짓바디를 제거했다가 추가하는 걸 반복하다보면 문제가 해결된다는 글을 보고 몬스터의 리짓바디를 추가했다 제거하는 과정을 반복하니 갑자기 리짓바디가 있는 상황에서도 정상적으로 작동이 되네요...추가적인 코드 수정이 없는데도 이러니까 조금 당황스럽네요.
상황을 최대한 표현해주세요. 2. 구체적이고 최대한 맥락을 알려줄 수 있도록 질문을 비슷한 질문이 있어서 찾아봤는데 오타 문제더라구요 저도 그래서 오타인가 싶어서 다 찾아봤는데 도저히 모르겠네요;; 오류 사진은 뜨는걸로 봐서는 코드 문제 보다는 서버 문제인 것 같기도 한데 뭐가 문제인가요?? ㅠㅠ
쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
안녕하세요~ 직접 웹크롤링을 진행하며 필요한 부분만 들어서 크롤링 기초 부트캠프만 듣고 아직 이 강좌의 영상은 시청하지 못했지만, 현재 제가 당면한 문제이기도 하고 웹크롤링에서 주요한 이슈 중 하나인 것도 같아 질문드려 봅니다. 웹크롤링을 시도하다 계속 ip를 차단 당하고 있는데, 어떤 방법으로 이 차단을 피해갈 수 있을까요? ㅜㅜ 온라인 게시글을 크롤링하고 싶은데 글 한 개 스크래핑 후 잠시 멈춤 시간을 둬도 어느 정도 진행되다 계속 차단당하네요 ㅠ 관련 정보를 검색하다 user agent를 변경하는 방법까지는 적용해봤는데 그래도 여전히 2페이지 정도의 게시글을 크롤링 하고 나면 차단 당하고 하네요.. 웹크롤링 방법을 익혀도 웹크롤링을 막는 장애물들 때문에 웹크롤링에 실패할 때가 있어서 이런 장애물들을 피해갈 수 있는 방법도 중요한 것 같습니다. 강의 목차만 봤을 때는 웹크롤링 방해 또는 장애물에 관한 내용을 다루는 영상이 없는 것 같아 일단 질문드렸는데, 혹시 관련 내용을 다루는 영상이 있다면 무작정 질문드려 죄송하고, 어느 영상인지 알려주심 감사하겠습니다~!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 하나의 자료형이 아닌 여러 자료형을 쓰기 위해 객체를 사용했고 그 결과 영화 객체를 생성했습니다. 그런데 어떻게 여러 자료형을 갖는 MovieVO객체로 배열을 만들 수 있는거죠? 배열도 객체지만 배열은 하나의 자료형만 가질 수 있는데 어떻게 이미 만들어진 객체로 배열을 생성할 수 있는지 이해가 안갑니다. 이렇게 만들면 배열에 하나의 자료형이 아닌 여러 자료형이 들어가는 것 아닌가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 영한님! 강의 정말 잘 보고 있습니다. 궁금한 점은 조회할 때는 join fetch나 default_batch_fetch_size를 통해 성능 최적화를 하는데, 샘플 데이터를 넣을 때의 쿼리를 보니까 많은 쿼리가 나가는 것을 확인 했습니다. orderItem들이 생성 될 때 여러 번의 쿼리가 아니라 한 번의 쿼리로 실행되게 하는 방법이 있을까요?? insert batch 등을 검색해봤는데 잘 적용이 되지 않아 질문 남깁니다! insert into member (city, street, zipcode, name, member_id) values ('서울', '1', '1111', 'userA', 1); insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values ('JPA1 BOOK', 10000, 100, NULL, NULL, 'B', 2); insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values ('JPA2 BOOK', 20000, 100, NULL, NULL, 'B', 3); insert into delivery (city, street, zipcode, delivery_status, delivery_id) values ('서울', '1', '1111', NULL, 5); insert into orders (delivery_id, member_id, order_date, status, order_id) values (5, 1, '2022-06-08T16:23:38.605+0900', 'ORDER', 4); insert into order_item (count, item_id, order_id, order_price, order_item_id) values (1, 2, 4, 10000, 6); insert into order_item (count, item_id, order_id, order_price, order_item_id) values (2, 3, 4, 20000, 7); update item set name='JPA1 BOOK', price=10000, stock_quantity=99, author=NULL, isbn=NULL where item_id=2; update item set name='JPA2 BOOK', price=20000, stock_quantity=98, author=NULL, isbn=NULL where item_id=3;
적절하지 못한 질문일 수도 있어서 먼저 죄송합니다. helm chart로 구성할 것들이 있어서 수강도 하고 따로 구축 작업도 하고 있습니다. 주요 major한 솔루션은 이미 helm chart가 구비되어 있고 여기가 공식 repository 인거 같더군요.. https://artifacthub.io/ 근데 오픈소스의 version과, helm에서 명시한 version이 다르게 표기되어 있어서, 이게 어떻게 된건지 좀 혼동이 됩니다. 대표적으로, elasticsearch는 현재 8.2.2 버전인데, <현재 elasticsearch 버전> 헬름차트에선 7.17.3 입니다. <현 helm chart에서 Elasticsearch의 버전> 참고로 logstash, filebeat등 대부분 7.17.3 으로 관련 버전이 거의 동일하게 가고 있습니다. 이게 정말 helm엔 아직 옛날 버전만 가능한건지, 아님 helm쪽은 버전을 다르게 가져가서 그런건지.... 당연히 이건 elastic이 확실히 답변을 줄 수 있겠지만 그래도 경험이 많으시니 알고 계시지 않을까 해서 문의드립니다 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] <의존관계 자동 주입> 섹션의 <애노테이션 직접 만들기> 강의를 듣고 궁금한 부분이 생겨서 질문 드립니다. public OrderServiceImpl (MemberRepository memberRepository /*, @Qualifier("mainDiscountPolicy")*/ , @MainDiscountPolicy DiscountPolicy discountPolicy) { this . memberRepository = memberRepository ; this . discountPolicy = discountPolicy ; } 생성자 주입을 할 때 RateDiscountPolicy 클래스와 discountPolicy 파라미터 앞에 @MainDiscountPolicy를 붙여주는 방식으로 discountPolicy 파라미터에 주입될 객체를 지정해줄 수 있다는 것은 이해를 했습니다. 그런데 만약 Lombok을 사용한다면 생성자를 명시할 수가 없기 때문에 discountPolicy 파라미터 앞에 @MainDiscountPolicy를 붙여줄 수가 없게됩니다. 그러면 Lombok과 Qualifier를 같이 사용할 방법은 따로 없는 건가요?
- 여러분의 질문을 고대하고 있습니다. :-) - 질문 전에 검색을 먼저 해보세요. 사람 사는 게 다 비슷하다는 것을 알게 됩니다. - 예의는 거침없이 질문하기 위한 최고의 발명품입니다. - 100개의 설명이 스크린샷 한방 보다 못할 수 있습니다. - 코드를 첨부하면 전세계 누구나 이해할 수 있는 질문이 됩니다. - 하나의 질문에는 하나의 주제를 담아야 답변도 예리해집니다. - 시행착오를 알려주시면 곧 바로 원하는 문제에 집중할 수 있습니다. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 위와 같이 발급받은 토큰을 추가하고, 해당 주소로 요청을 보내면 위와 같은 에러메시지가 발생합니다. 아래는 해당 ViewSet이고요 class PostViewSet(ModelViewSet): queryset = Post.objects.all().filter(is_public=True) permission_classes = [IsAuthenticated,] authentication_classes = [] parser_classes = [MultiPartParser, FormParser] serializer_class = PostSerializer def get_serializer_context(self): context = super().get_serializer_context() context["request"] = self.request return context def get_queryset(self): qs = super().get_queryset() qs = qs.filter( Q(author=self.request.user) | Q(author__in=self.request.user.following_set.all()) ) return qs def perform_create(self, serializer): serializer.save(author=self.request.user, ip=self.request.META['REMOTE_ADDR']) return super().perform_create(serializer) @action(detail=True, methods=["POST"]) def like(self, request, pk): post = self.get_object() post.like_user_set.add(self.request.user) return Response(status.HTTP_201_CREATED) @like.mapping.delete def unlike(self, request, pk): post = self.get_object() post.like_user_set.remove(self.request.user) return Response(status.HTTP_204_NO_CONTENT) 위 POSTMAN 설정이 적용이 안돼는가 싶어 헤더에 직접 추가해서 사용해봤는데도 동일한 에러메시지가 발생합니다.. 등록된 앱 # third party 'debug_toolbar', 'django_pydenticon', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.github', 'rest_framework', 'rest_framework.authtoken', 'corsheaders', DRF 설정 'DEFAULT_PERMISSION_CLASSES' : [ 'rest_framework.permissions.IsAuthenticated', ], 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', ], JWT 설정 JWT_AUTH = { 'JWT_SECRET_KEY': SECRET_KEY, 'JWT_ALLOW_REFRESH' : True, 'JWT_ALGORITHM': 'HS256', 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=7), 'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=28), } CORS_ALLOWED_ORIGINS = [ "http://localhost:3000", ]