본문 바로가기

728x90
반응형

전체 글

(255)
Python: class __slots__ __slots__ Python class에서 __slots__에 사용할 attributes를 명시하면, 해당 클래스로 생성되는 인스턴스는 __dict__, __weakref__ 를 갖지 않고 생성. 기본적으로 python에서 class의 인스턴스는 __dict__에 네임스페이스를 갖는데, __slots__가 __dict__ 대신 사용될 수 있다. 언제? 왜? 기본적으로 모든 인스턴스들은 __dict__에 딕셔너리 형태로 네임스페이스를 갖는다. 딕셔너리 형태로 가짐으로써, 인스턴스가 생성된 이후에 인스턴스 attributes들이 생성, 수정, 삭제가 가능하다. 그리고 각각의 인스턴스들이 생성, 수정, 삭제가 가능해야 하고, attirubtes들을 독립적으로 고유하게 가져야 하므로 모든 instance들이 ..
Visual Studio Code: 왼쪽 변수 한번에 선택하기 # select left side values mb_memo_call = Column(String(255), nullable=False, default="") mb_memo_cnt = Column(Integer, nullable=False, default=0, server_default=text("0")) mb_scrap_cnt = Column(Integer, nullable=False, default=0, server_default=text("0")) mb_1 = Column(String(255), nullable=False, default="") mb_2 = Column(String(255), nullable=False, default="") mb_3 = Column(String(255), nullable=False, default="") mb_..
ESP32 - ESP IDF # monitor ESP IDF를 통해서 칩에 업로드 되어 있는 동작을 monitor를 하기 위해서는 아래 명령어를 실행하면 된다. 1. idf를 현재 디렉토리에서 사용할 수 있도록 path 설정을 해준다. (get_idf alias로 놓고 쓰고 있음) 2. idf.py -p PORT monitor 명령어를 통해 monitoring을 시작한다. 그런데 이상하게 examples 경로 안에서만 실행이 된다. 칩에 업로드 되어 있는 코드와 무관한 examples 임에도... 에러문구를 통해 python 소스코드를 봐보니 idf.py 명령어를 통해 실행되는 소스코드와 그 경로는 다음과 같다. # esp-idf > tools > idf_py_actions > serial_ext.py def monitor(action: str, c..
Python: Pydantic - from_attributes 활용 # ORM # DTO Pydantic - 데이터 유효성 검증을 하는데 유용한 라이브러리 유효성 검증과 함께, 추가적인 유용한 기능을 메모해보자. from_attributes = True 1. ORM (Object-Relational-Mapping) 객체 -> DTO (Data Transfer ObjecT) 로 변환 DB에서 가져온 ORM 객체를 API 등에 활용할 수 있는 DTO로의 변환 기능 2. 필터링 역할 orm에서 가지는 attribute보다 pydantic model에서 가지는 attribute를 더 한정적으로 해서, 가지지 않는 속성에 대한 필터링이 가능 orm에서 가지는 많이 속성들을 제외하고 pydantic model에서 선언한 속성들만 가져옴 -> orm에서 password 등과 같은 민감한 정보를 from_..
FastAPI, Javascript: EventSource Example EventSource HTTP를 통해서 server-sent-events (SSEs)를 받기 위한 인터페이스 페이지 새로고침 없이 real-time(실시간)으로 서버에서 데이터를 받을 때 유용하게 쓸 수 있다. 아래는 오픈소스 g6의 데이터 베이스가 설치되는 과정에서 Python 코루틴을 활용하여 백엔드 FastAPI에서 프론트엔드 Javascript로 페이지 리로딩 없이 설치 정보를 전달하는 예제 @router.get("/process") async def install_process(request: Request): async def install_event(): db_connect = DBConnect() engine = db_connect.engine SessionLocal = db_connect..
FastAPI: WebSocket Example 1. Websocket을 통해 서버로부터 일정 주기로 데이터 받아오기 * fastapi와 websocket 사용을 위한 uvicorn[standard] 설치 pip install fastapi "uvicorn[standard]" * main.py from fastapi import FastAPI, WebSocket import asyncio app = FastAPI() @app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await websocket.accept() counter = 0 while True: counter += 1 await websocket.send_json({"message": f"Update #{count..
Nginx: static 파일에 대한 log 생략으로 부하 줄이기 Nginx는 접근하는 request들을 기록하는데, 해당 접근이 static file에 대한 접근이라 굳이 log로 남겨야하는 필요가 없다면, 해당 log를 작성하지 않도록 하면 그만큼 디스크 IO 부담을 줄 수 있어서 서버 부하를 줄일 수 있다. 다음과 같은 방식으로 가능 server { ... access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { .... #if ($request_uri ~* \.(css|js|ico|gif|png|jpe?g|svg)$) { # access_log off; #} } location ~* \.(css|js|ico|gif|png|jpe?g|svg)$ { access_log..
git&github: 내 최근 커밋 위에 pull request 올려서 테스트 (머지 X, rebase 활용하기) 1. pr의 커밋들을 fetch # git fetch upstream pull/PR_ID/head:BRANCH_NAME $ git fetch upstream pull/387/head:pr-387 위와 같이 하면 pr-387이라는 branch가 생기고, 해당 branch에 id 387의 pr이 받아진다. 2. 내 커밋들을 base로 하기 1) pr을 받은 branch(pr-387)로 이동 # git checkout BRANCH_NAME $ git checkout pr-387 2) 내가 base로 하기를 원하는 branch를 rebase한다 # git rebase MY_BRANCH $ git rebase master

728x90
반응형