Programing Language 48

Programing Language/Python
추상 클래스와 덕 타이핑

최근 디자인 패턴을 공부하면서 Java언어의 예제를 자주 접하다 보니 파이썬에도 추상 클래스와 인터페이스에 대한 개념이 있지 않을까 해서 관련 정보를 찾아보고 정리하였다. 그중에 나온 개념이 파이썬에서 사용하는 추상클래스와 덕 타이핑이라는 개념인데 이를 공부하고 정리해 보았다. 추상 클래스 파이썬은 추상 클래스(abstract class)를 제공한다. 추상 클래스란 구현 내용이 없고 메서드 목록만 가진 클래스이다. 추상클래스 자체로는 인스턴스화가 불가능하며, 클래스의 메서드를 상속받는 파생 클래스에게 구현하도록 강제하기 위해 사용된다. 파이선에서 추상 클래스를 사용하기 위해서는 ABC클래스와 @abstractmethod을 임포트 하여야 한다. from abc import * class 추상클래스명(met..

Programing Language/Python
requests 기본 동작 방식과 session()

최근 자동화나 데이터 관련해서 외주를 받아 작업을 하고 있다. 정적 웹 페이지라고 판단된다면 request, bs4을 이용해 처리했고 동적인 페이지라고 생각이 들면 무조건 selenium으로 페이지에 직접 들어가 태그를 탐색해서 데이터를 가져오곤 했다. 하지만 selenium을 이용하여 코드를 작성하면 속도가 느리다는 문제와 크롬드라이버의 의존성이 크다는 문제가 있었다. 설상가상으로 이번에 외주 받은 프로그램에서 사용하는 크롬 버전은 116.0.5845.140이었는데 이때 크롬에서 [$TBD][1472492] CVE-2023-4572 결함으로 인해서 140 버전의 크롬 드라이버를 다운로드하지 못해 난처한 상황이 맞이하곤 했다. (다행히 패치한 141 버전이 외주 마감일 2일 전에 배포되어서 외주를 성공적..

Programing Language/Javascript
npm과 yarn

node로 프로젝트를 진행하다 보면 많이 쓰이는 패키지 관리 툴로는 npm과 yarn이 있다. 나는 주로 npm을 이용하여 패키지를 관리했었는데, 다른 프런트 사람들의 프로젝트를 보니 yarn을 쓰는 사람의 수도 적지 않아서 한번 개념을 정리하고자 글을 작성한다. npm npm(Node Package Manager)은 자바 스크립트 언어를 위한 패키지 관리자로, Node.js의 기본 패키지 관리자이다. 전 세계적으로 많은 사람들이 사용하고 있으며 node.js로 만들어진 모듈을 쉽게 관리하도록 도와주는 프로그램이다. 아래는 주로 사용하는 npm 명령어이다. npm init : package.json 생성 npm install : package.json 파일 및 해당 종속성에 나열된 모든 모듈을 설치 np..

Programing Language/Javascript
Fetch() 함수로 원격 API 호출하기

이번에는 원격 API을 간편하게 호출할 수 있도록 브라우저에서 제공하는 fetch() 함수에 대해서 이야기해보고자 한다. Fetch 원래 원격 API 호출하면 제일 먼저 떠오르는 것이 request, axios, jquery와 같은 라이브러리이다. 브라우저에서 fetch()을 지원하기 전까지는 클라이언트 단에서 직접 http요청을 하고 응답받는 게 상당히 복잡해서 이러한 라이브러리 사용이 합리적이었지만 이제는 브라우저에 내장되어 있는 fetch() 함수를 이용한다면 대부분의 경우 충분하게 API을 호출할 수 있다. 사용 방법 fetch() 함수는 첫 번째 인자로 URL, 두 번째 인자로 옵션 객체를 받고, Promise 타입의 객체를 반환한다. 옵션 객체에는 HTTP 방식(method), HTTP 요청헤..

Programing Language/Python
Selenium과 Pyinstaller를 이용하여 만든 실행파일 뒤에 검은창이 나올 경우 해결 방법

이번에는 selenium과 pyinstaller을 가지고 나온 exe 파일을 실행시켰을 때, cmd창을 끄는 옵션을 추가했음에도 불구하고 cmd창이 뜨는 오류를 해결하는 방법에 대해 알아보고자 합니다. 오류 selenium을 실행하는 파이썬 코드를 pyinstaller을 통해 exe 파일을 만들어 배포하였습니다. 하지만 exe 파일을 실행할 떄 pyinstaller에서 콘솔이 뜨지 않도록 하는 -w 옵션을 넣어 줬음에도 불구하고 뒤에 cmd(흔히 검은창)이 뜨는 현상이 일어났습니다. 혹시 해당 오류에 대해 다루기전에 pyinstaller 실행 방법이나 옵션에 대해 모르신다면 아래 게시글을 참고 하시면 좋을 듯 합니다. 참고 : https://jheaon.tistory.com/131 파이썬 라이브러리 Py..

Programing Language/Python
Pyinstaller을 통해 py 파일을 각 OS에 맞는 실행 파일로 변환

Pyinstaller pyintsaller는 python 애플리케이션과 모든 종속성을 단일 패키지로 묶어서 사용자가 python 인터프리터 또는 모듈을 설치하지 않고 패키지 된 앱을 실행할 수 있도록 도와주는 라이브러리이다. python 3.7 이상부터 지원하며 현재까지 numpy, matplotlib, PyQt.. 등과 같은 많은 주요 python 패키지들 까지도 번들로 잘 제공되고 있다. 주의해야 할 점은, 크로스 플랫폼이 아니라는 점인데, window 기반에서 exe 파일을 만들었다면, window안에서만 돌아가고, window 외의 운영체제인 mac, linux에서는 따로 파일을 만들어 실행하여야 한다. 자세한 부분은 공식문서 보면서 참고하길 바란다. 공식문서 : https://pyinstalle..

Programing Language/Python
Selenium 옵션과 이벤트 처리 코드 모음

해당 게시글은 https://jheaon.tistory.com/127 에서 동적 크롤링 부분에서 설명한 "파이썬을 활용한 업무 자동화" 위키 독스의 내용을 정리한 것이다. 파이썬과 request, bs4, selenium4을 통해 웹 페이지 데이터 크롤링하기 일반적으로 인터넷을 이용하면서 웹에 있는 데이터를 가공하거나 사용해야 하는 경우가 빈번하다. 특히 사이트에서 어떤 가격에 대한 데이터를 받아 엑셀로 저장하여 정리하여야 한다는 가, 여 jheaon.tistory.com 01. selenium 4 [TOC] ## 셀레니움 설치 ```{.python} pip install selenium # pip install selenium-wire # 특정 버전 설치 pip insta… www.wikidocs.ne..

Programing Language/Python
텔레그램 API 사용시 RuntimeWarning: coroutine 'Bot.get_updates' was never awaited 오류 해결방법

에러가 난 상황은요? Python - telegram 연결 도중에 해당 오류가 발생했습니다. 에러 내용을 확인해 보니 코루틴과 await가 있는 것을 보니 비동기 관련 문제인 듯했습니다. 어떻게 해결 하셨죠? 해당 API관련 문서를 ㅊ앚아보니 해당 오류는 2022 말에 telegram bot API update로 asyncio 도입으로 생기는 오류인 것을 확인했습니다. 따라서 예전에 있던 코드를 그대로 사용하고자 하시는 분들은 telemgarm library 이전 버전으로 맞춰서 진행한다면 문제없이 진행할 수 있을 듯 합니다. - python-telegram-bot: v20.0 - asyncio: v3.4.3 만약에 그냥 업데이트된 상태로 코드를 작성하고 싶다면 아래 방법을 참조해주세요 메시지를 보내는 ..