본문 바로가기

728x90
반응형

Language

(57)
pyenv를 알아보자. HTML 삽입 미리보기할 수 없는 소스 개요 python으로 개발하다 보면 python version이 프로젝트 별로 상이할 때가 존재한다. 어떤 Project에서는 python 2.x 어떤 Project에서는 python 3.x가 필요하게 되는 상황들이다. pyenv를 알기 전까지는 위와 같은 상황이 있을때 brew를 이용하여 특정 python version을 다시 설치하고 해당 python 경로를. zshrc에 세팅함으로써 다뤄왔기 때문에 Python Version을 변경하여 무언가를 테스트하려고 할 때는 상당히 귀찮은 과정이었다. 그러나 Python 3.8.x ~ 3.9.x 사이를 많이 사용해 왔기 때문에 version끼리 호환되지 않는 현상이나 library가 존재하는 상황도 마주 치친 않았던 것..
dictionary를 dataclass로 만들고 다시 class로 정의하기 개요 외부에 request를 보내서 응답받는 데이터가 dictionary인 경우가 생긴다. 이를 다시 Project Source 내에서 적절한 Objects로 변환해서 사용해야 하는 상황일 때 써먹는 방법에 대한 글이다. dataclass 변환에 사용할 dictionary 다음은 외부에 request를 보내서 받은 dictionary를 dataclass로 변환하기 위해 가정한 dictionary이다. data = { "account_balance": -9999, "address": None, "business_vat_id": None, "created": 1694803249, "currency": "eur", "resource": {}, "meta": [] } data에 들어있는 key에 대한 type에..
[SQLAlchemy] SQL Compilation Caching HTML 삽입 미리보기할 수 없는 소스 개요 SQLAlchemy를 통해 DB에 Query를 날리는 코드를 짜던 도중이었다. 평소에 만들던 방식으로 코드를 작성해 놓고 SQLAlchemy의 log를 살펴보던 도중 이상한 점을 발견했다. 이상한 점을 발견한 log는 다음과 같다. 2023-08-08 15:46:01,882 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2023-08-08 15:46:01,883 INFO sqlalchemy.engine.Engine SELECT * FROM member WHERE member_id = %(member_id)s; 2023-08-08 15:46:01,883 INFO sqlalchemy.engine.Engine [cached si..
[Python] Selenium Proxy를 이용한 Tor 사용하기 HTML 삽입 미리보기할 수 없는 소스 개요 6월에 유튜브를 보던 도중 Seleinum으로 Proxy를 사용하던 하나의 영상을 보게 되었습니다. 원래 Seleinum으로 Proxy를 사용하는 방법은 6월의 ToDoList 중 하나였는데 이제야 조사를 마쳐서 글을 쓰게 되었습니다. 아마 이 글의 제목을 보고 이 글을 읽으려고 하시는 분들은 Proxy를 적어도 한 번 들어봤거나 이미 알고 계신 분 들일 것이라 조심스레 유추해 봅니다. 그러하여 Proxy에 대한 이론이나 원리를 자세하게 정리한다기보다 글의 제목처럼 Selenium에서 proxy를 사용하는 방법과 나아가 Mac에서 Seleinum을 통해 Tor를 이용하는 방법을 기술하려고 합니다. 요약하자면 제가 Python으로 Selenium에서 Proxy를..
pytest-django에서 view에 request 던지기 개요 api를 테스트할 때는 pytest-django에는 client라는 fixture를 통해 api를 테스트하는데 이 fixture는 내부적으로 뭘로 구현한 거지 싶어서 살펴보고 있었다. 내부를 살펴보니 django의 test 패키지의 client 모듈의 RequestFactory를 사용하는 형태였다. 그렇다면 django의 view를 테스트하는 다른 형태의 코드를 작성할 수 있지 않을까 싶은 호기심이 생겼다. Setting 테스트 대상인 프로젝트의 구조는 대충 다음과 같이 생겼다. ╰─$ tree -L 2 . ├── Makefile ├── docker │ ├── Dockerfile │ ├── docker-compose.yml │ └── init-db.sh ├── pytest.ini ├── readme..
setuptools를 활용한 프로젝트 패키징 HTML 삽입 미리보기할 수 없는 소스 개요 어떤 프로젝트의 루트 디렉터리에서 종종 setup.py라는 파일을 발견할 수 있습니다. 이 파일은 프로젝트를 패키징 하는 데 사용됩니다. 개인적으로는 직접 작성한 코드를 패키징하여 PyPI에 게시하는 등의 경험은 없었습니다. 그러나 복잡한 프로젝트 구조에서 프로젝트와는 별개로 사용되어야 하는 모듈을 개발하고 사용하는 경우를 접해보았습니다. 간단히 말해서 자체 개발한 Third Party 모듈의 개념이 될 수 있겠습니다. 그래서 setup.py를 통해 프로젝트의 패키징뿐만 아니라 구조적으로 복잡한 프로젝트의 모듈을 완전히 분리하고 조합하는 형태로 개발할 수도 있을 것으로 예상됩니다. 물론 프로젝트 구조가 복잡해지면 의존성도 복잡해진다는 점을 염두에 두어야 합니다..
함수에 적용되어있는 decorator를 알아내는 방법 개요 최근 사내 소스 코드를 보면서 이런 생각을 해봤습니다. "함수에 적용된 decorator를 어떻게 알아낼 수 있을까?"였습니다. 이유는 Decorator를 통해서 Client로 입력받는 값이나 해당 View가 Authenticate을 필요로 하는지의 기능을 구현하곤 하는데요 이 정보들을 활용해 API 문서를 작성하는데 생산성을 끌어올리고자 함이었죠 보통은 문서 자동화를 지원하는 라이브러리를 사용해서 API 문서를 작성하기 때문에 이러한 상황을 맞닥뜨릴 일이 별로 없습니다만 그러한 상황이 아니기도 하며 API 문서를 수기로 작성해 나가는 방식이기 때문에 조사해 볼 가치는 충분했습니다. 그러므로 "함수에 적용된 Decorator를 어떻게 알아낼 수 있을까?"를 탐구한 과정을 기록해보고자 합니다. "..
urllib을 이용한 학교 메일 가져오기 본 포스팅은 이전 블로그로부터 백업된 글입니다. 이전 작성일: 2018-11-08 개요 저는 주로 어떤 사이트에 로그인을 실행하는 기능을 만들 때 Selenium과 Chrome Driver 이 두 개를 활용해 특정 Login Form이나 Html Tag를 찾아 selenium 모듈의 webdriver 객체의 "find_element_by_name" 과 같은 메서드를 이용합니다 헌데 이번에 쓰는 Urllib의 기능은 이런 순서와는 좀 다르게 쿠키값을 수정해 보내는 형식으로 로그인을 해보겠습니다. 'GET' 방식이나 'POST' 방식으로 로그인 하는 것도 가능하다고 합니다 이 글에서 쓰는 방식은 정확하게 말하면 보내는 쿠키 값을 수정하는 것이지만 POST 방식의 헤더를 수정하는 것이기 때문에 POST 방식..

728x90
반응형