분류 전체보기 324

[Crawling] Beautiful Soup 와 Selenium 선택 기준

Selenium vs Beautiful Soup Selenium과 Beautiful Soup는 웹 스크래핑과 웹 자동화를 위해 사용되는 Python 라이브러리 둘 중에 크롤링을 위해 선택하는 기준은 목적성에 있으며, 때에 따라서는 혼합해서 사용도 가능하다. Selenium 웹 자동화를 위해 사용되는 도구 웹 브라우저를 자동으로 제어 (ex. 클릭 등)하고, 사용자의 동작을 시뮬레이션을 통해 웹 어플리케이션 테스트 및 정보 스크래핑에 사용된다. 웹 브라우저를 제어하기 때문에, JavaScript로 작성된 동적 웹 페이지를 다룰 수 있다. 웹 요소를 조작 하고 제어하기 위해 XPath 또는 CSS Selector(선택자)를 사용 가능하다. ex) 만약 페이지가 단순 html, css가 아닌 JavaScrip..

Python/Crawling 2023.06.10

[AWS Lambda] Python Serverless 서비스 (Chalice)

개요 AWS Lambda를 이용해 Python 기반의 Serverless 서비스를 개발 및 운영할 때, 주로 쓰이는 것으로 보이는 여러 방법(조합)이 있는데, 주로 많이 사용되는 방법은 다음과 같습니다. FastAPI + Magnum (https://yubi5050.tistory.com/257) Chalice Flask + zappa 해당 글에서는 Chalice에 서비스 구조에 대해 이해한 바를 작성하며, 다음과 같은 내용을 주로 작성해 보려고 합니다. Chalice 방법의 특징 구현 방법에 대한 개괄적인 설명 Serverless FaaS 서비스인 AWS Lambda 에 대한 이해는 다음 이전글을 참고 https://yubi5050.tistory.com/255 : Serverless 서비스 - AWS ..

[AWS Lambda] Python Serverless 서비스 (FastAPI + Mangum)

개요 AWS Lambda를 이용해 Python 기반의 Serverless 서비스를 개발 및 운영할 때, 주로 쓰이는 것으로 보이는 여러 방법(조합)이 있는데, 주로 많이 사용되는 방법은 다음과 같습니다. FastAPI + Magnum Chalice Flask + zappa 해당 글에서는 FastAPI + Magnum에 서비스 구조에 대해 이해한 바를 작성하며, 다음 내용을 주로 작성해 보려고 합니다. FastAPI + Magnum 해당 방법의 특징 Magnum에 대한 이해 구현 방법에 대한 개괄적인 설명 Serverless FaaS 서비스인 AWS Lambda 에 대한 이해는 이전글을 참고 https://yubi5050.tistory.com/255 : Serverless 서비스 - AWS Lambda ..

[배포] Python ASGI 배포 서버 종류 비교

Python ASGI 배포 서버Python에서 웹 어플리케이션(Django, FastAPI, Flask 등)을 배포시 비동기 요청 처리를 위해, ASGI 서버를 사용하여 배포하게 되는데, Python 기반의 ASGI 서버들을 비교해보며, 종류와 특징에 대해 알아 본다. 주로 많이 언급되는 건 다음과 같다.Uvicorn (asyncio, uvloop)DaphneHypercornStarlette 사실 결론부터 말하자면, 사용하는 프레임워크나 기능에 따라 배포 서버에 대한 선택지가 한정적인 것으로 생각되는데 FastAPI로 배포를 희망→ 공식문서에서 지원하는 Uvicorn이나 Hypercorn 을 쓰는 것이 일반적 Django / Flask 에 Websocket 프로토콜 처리가 필요→ Daphne 이 적절  ..

Python/Deployment 2023.06.06

[AWS] Serverless 서비스 - AWS Lambda

서버리스(Serverless) 아키텍쳐란? 서버리스 아키텍처 란 서버를 직접 관리할 필요가 없는 서버를 의미 서버리스의 큰 갈래 서버리스의 큰 갈래는 FasS와 BaaS로 나눌 수 있는데, 정의는 다음과 같다. FaaS (Function as a Service) : 비즈니스 로직을 함수 단위로 구현하여 서비스 형태로 제공하는 방식 (ex. AWS Lambda, Azure Functions, Google Cloud Functions) BaaS(Backend as a Service) : 클라우드 서비스에서 제공 되는 서버의 특정 기능을 단순하게 이용하는 방식 (ex. 구글 Firebase, 구글 Fabric) AWS Lambda 란? (장단점) AWS Lambd는Serverless FaaS의 일종으로, 서버..

Mac 단축키 (일반, IDE)

Mac 관련 단축키 - 일반 스크린샷 Shift + command + 3 (전체 화면 캡처) Shift + command + 4 (부분 화면 캡처) Shift + command + 4 + spacebar ( 창 부분만 캡처) Shift + command + 6 (메뉴바 표시) 숨김 파일 보기 Shift + command + . Mac 관련 단축키 - IDE 멑티 line cursor 컨트롤 Alt 2번 연타 + 방향키 코드 자동 정렬 Ctrl + Alt + L : Code format Mac 관련 프로그램 Karabiner-Elements : 단축키 맵핑 (한영키 위치 변경) Spectacle : 키 맵핑 (화면 분할 등) RunCat : CPU 점유율등을 알려주는 프로그램 iTerm : 터미널 이쁜거

[Django Ninja] Path Variable & Query Parameter 사용 방법

1. Path Variable - 기본# Case 1. Path Variable@api.get("/problem/{problem_id}", response=ProblemOut)def get_problem(request, problem_id:int): return Problem.object.get(problem_id=problem_id) 2. Path Variable - 상위 Router상위 Router(or api)에 Path Variable이 붙어 있는 경우, Path() 를 사용하여 받는다.Path(...) 를 명시하지 않으면, Query Parameter로 인식된다.# Case 2. Path Variable - Routerfrom ninja import NinjaAPIapi = NinjaAPI..

Python/Django Ninja 2023.06.03

[좋은 API 설계하기] 기타

API를 설계하며 고민 한 것들을 적어 놓는 공간. 백엔드가 고려해야 될 것 들Restful 한 API 설계를 했는지문서화가 좋은지 사용법이 명확한지 (외부 SDK로 배포하더라도 괜찮은 정도의 퀄인지 생각해보기)API가 UI에 종속되지 않아야 한다 -> UI가 바뀌더라도, 사용 할수 있는가백엔드의 1차적인 유저는 프론트라는 점아 이사람 api 잘 짜주던데~ 좋은 API 문서 예시네이버 NCloud (링크)상태코드를 존중한 Restful 한 작성 NHN (링크)모든 API를 200으로 처리함 (링크)성공과 실패에 대한  Redoc 활용 좋은 예시Redoc에서 상태코드를 지켜서 문서화 (링크) FE와 배포에 대한 고민문제 : FE와 BE가 배포 시점이 맞지 않아, 오류가 발생항상 서로가 같이 배포되어야 하는..

[Python] Circular Import에 따른 파일 구조 개선

이슈 배경 - 비즈니스 로직이 구현되어 있는 service layer의 service_xxx.py 들 간에 Circular import가 발생 구현 코드 기존에 정상적으로 동작하는 코드 ### service_a.py from service_b import Service_B class Service_A: def a1(): Service_B.b1() def a2(): pass ### service_b.py class Service_B: def b1(): pass 로직 추가 후 circular import 발생 ### service_a.py from service_b import Service_B class Service_A: def a1(): Service_B.b1() def a2(): pass ### se..

Python/Advanced 2023.05.29