개발
-
OpenAPI 3.0 static DTO 반환 오류개발/spring 2024. 1. 11. 11:20
개발을 하다가.. API 문서에서 오류가 발생했다. 현재 application/json으로 요청/응답하는 구조를 가지고 있는데, 이 모델이 제대로 드러나지 않는다는 것. 그리고 심지어는 뒤죽박죽 중복된 요청/응답 구조를 가지고 있었으며, 몇 개는 제대로 적어져 있었다. 나 같은 경우 위와 같은 응답 모델이 계속 중복되어 나타났다... 한 시간 정도 GPT한테도 물어보고 구글링도 해보고 해봤는데, 결국 내가 찾은 원인은 이러하다. "static class에서 이름의 중복" 나는 static class를 통해 DTO를 정의한다. 그리고 동일한 구조를 갖고자 그 이름을 동일하게 가져가면서 구조를 일관적으로 하고자 한다. 예를 들어 FooDTO를 다음과 같이 작성한다. public class FooDTO { p..
-
유니티 싱글톤 패턴 구현 및 축약 (unity c# singleton)개발/unity 2023. 7. 6. 12:05
Unity에서 Singleton 패턴은 흔히 쓰이는 패턴이다. 싱글톤 패턴에 대한 내용은 자세하게 다루지는 않을 것이다. 코드부터 보도록 하자. [싱글톤 기본 구현] public class SceneManager : MonoBehaviour { private static SceneManager instance; public static SceneManager GetInstance() { if (instance != null) return instance; // null인 경우 instance = GameObject.FindAnyObjectByType(); // 찾지 못하면 생성 if (instance == null) { GameObject singletonObj = new GameObject("Scene..
-
인프런 동영상 웹 스크래핑하기 - 마치며(최종 코드)개발/웹크롤링 2022. 1. 16. 15:34
지금까지의 과정이 인프런 동영상을 스크래핑할 일이 생겨서 파이썬으로 어떻게 활용하면 할 수 있을까 3일 정도를 궁리하다가 나온 결과물입니다. 많은 시행착오가 있었고, 어쩌면 다른 사람들도 이런 것이 필요하지 않나 싶어서 이렇게 블로그의 첫 포스팅으로 쓰게 되었습니다. 사실 지금 군대에 와 있기도 하고, 대학교 1학년밖에 안 다닌 제가 알려드릴 게 많지는 않지만, 조금이나마 도움드리고 싶어서 글을 올리고자 결심했던 것 같네요. 제가 코드 전문을 올려드리지만, 너무 무턱대고 사용하지 않았으면 좋겠습니다. 인프런을 좋아하는 사람으로서 그 가치를 훼손하지 않았으면 합니다. 다운로드 받은 영상을 무단 배포하거나 상업적으로 이용하는 순간 범죄를 저지르는 거니까요, 참고해주시기 바랍니다. 다음은 제가 짠 코드입니다...
-
인프런 동영상 웹 스크래핑하기 - 3 : 네트워크 분석 - 2개발/웹크롤링 2022. 1. 16. 15:11
사실, 강의 형식으로 준비하려고 했는데, 강의로 하기에는 제 지식도 많지 않고 일일히 다 설명하려면 까마득한데다, 내용이 다 안 담길 거 같아서 코드 리뷰 형식으로 진행하겠습니다... 우선 인프런의 요청을 가로채기 위해서 selenium-wire를 사용했습니다. selenium-wire에서 requests를 받아오는 방법은 다음과 같습니다. >>> driver.requests [Request(method='POST', url='https://accounts.google.com/ListAccounts?gpsia=1&sour... 비디오가 들어 있는 url 패턴을 가로채서 해당 url에 get 요청을 보낸 후 6초 단위의 동영상 바이트 덩어리를 한 파일에 다 합쳐서 저장할 것입니다. url 패턴 중에서도 비..
-
인프런 동영상 웹 스크래핑하기 - 3 : 네트워크 분석 - 1개발/웹크롤링 2022. 1. 10. 18:57
이번 시간에는 네트워크 분석을 통해 동영상을 다운로드하는 과정을 추적해보겠습니다. 네트워크 분석이라고는 하지만 깊은 내용은 아닙니다. 그래도 기본적인 http 지식은 있어야 잘 이해하고 활용할 수 있습니다. 우선 아무 강의나 가서 한 번 영상을 시청해봅니다. 이제 여기서 개발자 도구(F12)를 열어줍니다. 이제 위의 메뉴 중 "Network"로 들어갑니다. 음... 그런데 정보가 다 안 나타난 거 같네요. 새로고침을 눌러서 처음부터 한 번 봅시다. 이제야 다 나타나는군요. 이제 자세한 사항들을 살펴봅니다. 보이시나요? 반복적으로 웬 외계어 같은 비슷한 요청이 오가고 있군요. 동영상 같이 큰 파일들은 보통 분할해서 주고 받기 때문에 이것이 동영상 관련된 GET 요청일 가능성이 높습니다. 이제 하나하나 살펴..
-
인프런 동영상 웹 스크래핑하기 - 2: 자동로그인 기능 - 2개발/웹크롤링 2022. 1. 8. 17:27
이제 로그인 팝업까지 띄워봤으니 값을 받고, 값을 넣어봅시다. if __name__ == '__main__': vs = VideoScrapper() login_id = input('인프런 아이디를 입력하세요 : ') password = input('인프런 비밀번호를 입력하세요 : ') vs.login(login_id, password) 이렇게 값을 입력받아봅시다. 비밀번호가 그대로 드러나는 문제가 있습니다! 그러니 getpass라는 라이브러리를 이용해봅시다. getpass는 콘솔창에서 비밀번호를 노출시키지 않게 해주는 라이브러리입니다. from seleniumwire import webdriver from selenium.webdriver.common.by import By from getpass imp..
-
인프런 동영상 웹 스크래핑하기 - 2: 자동로그인 기능 - 1개발/웹크롤링 2022. 1. 8. 16:46
이제부터는 인터프리터가 아닌, 프로젝트로 관리하겠습니다. 저는 파이참을 이용해서 진행할 예정입니다. 우선, inf-video라는 프로젝트를 만들어주었습니다. 참고로 아나콘다 3.9로 하니 seleniumwire가 pip에서 찾을 수 없는 상황이 발생했습니다. 그러니 애초부터 높은 버전의 아나콘다 대신 기존에 쓰던 파이썬을 이용하거나 설정을 통해서 잘 설치해주시면 됩니다. 제 경우에는 이렇게 해결했습니다. [설정 방법] 그리고 프로젝트 폴더에 버전에 맞는 크롬드라이버를 설치해주셔야 합니다. https://chromedriver.chromium.org/downloads를 통해서 설치할 수 있습니다. 자, 시작해봅시다. 우선 video_scrapper.py를 만들어주세요. from seleniumwire im..
-
인프런 동영상 웹 스크래핑하기 - 1: 준비 과정개발/웹크롤링 2022. 1. 8. 15:40
놀랍게도 첫 포스팅입니다. 앞으로는 이곳에 저의 발자취를 남길 것입니다. 오늘 해볼 코딩은 인프런 강의 영상을 스크래핑하는 법에 대한 것입니다. 강의 영상을 오프라인으로 다운로드받아야 할 일이 있는데, 인프런에서 제공해주지 않아서 파이썬을 이용하여 추출해봤습니다. 참고로 이렇게 얻은 강의 영상을 상업적으로 이용하거나 무단 배포할 시 처벌 받을 수 있으니 조심하시기 바랍니다. 우선 도구부터 소개합니다. 파이썬 기본적인 도구죠. 필수적으로 필요합니다. 3.x 가급적 최신 버전으로 준비해주세요. 저는 3.8.8 버전을 이용했습니다. 셀레니움 (selenium) 브라우저를 이용해 웹 크롤링 등에 활용합니다. 저는 이 중에서도 seleniumwire라는 라이브러리를 다운 받아 사용했습니다. pip를 통해 sele..