728x90 반응형 python13 [Python] Subprocess, 터미널 명령어 활용 방법 서론일일 작업한 개발 이력에 대해 정리 및 회고를 할 방법을 간단한 스크립트를 활용하여 일자 관리를 해보려고 한다.다만, 활용한 개발 도구에 대해 API를 모두 지원하지 않으므로 설치 후 터미널을 활용하는 방법을 응용하기로 해본다.Git 관련 이력을 정리하는 부분을 MVP로 점진적으로 활용 방법을 늘려보도록 한다.개요python subprocess module모듈명처럼 서브 프로세스를 생성하여, 작업한 내용을 메모리에 저장하고 활용할 수 있게 만들어주는 기능을 제공한다.운영체제론을 공부하면서 접할 수 있는 공유 메모리와 세마포어 활용 부분을 연관지어 고민해보아도 좋은 모듈이다.https://docs.python.org/ko/3/library/subprocess.html subprocess — Subpro.. 2024. 5. 3. [MQTT Broker] Python Topic Publish 서론금번 구현하는 IoT 시스템의 개발 환경은 주제를 게시하여 원격으로 제어 요청을 보내는 Backend와 주제를 구독하여 작업을 수행하는 IoT Node로 구성되어 있다.Backend Server에서 MQTT 메세지를 게시하는 방법을 점검해본다.이론적 배경Backend Server : Python(FastAPI)IoT Node : Dart(Flutter)가설awscrt, awsiot 등 AWS 지원 라이브러리를 활용하여 주제를 게시한다.mqtt_connection_builder.mtls_from_path 함수를 분석하여 MQTT 관련 패킷을 제어한다.검증AWS IoT Core 라이브러리를 활용한 주제 게시 (Publish)from awscrt import io, m.. 2024. 4. 24. Deamon 관리 (systemctl, journalctl) 들어가며... Ubuntu 서버에 프로그램을 Command 단위로 테스트를 진행하는 것 보다 Daemon 형태로 만들어서 로그 확인 등 테스트를 더욱 용이하게 만들어본다. Daemon 생성 1. Daemon 스크립트 준비 # sudo vi /etc/systemd/system/{프로그램명}.service [Unit] Description=unicorn instance to backend # 설명부 After=network.target [Service] User=ubuntu# 동작 권한 (유저) Group=www-data # 동작 권한 (그룹) # 작업 디렉토리 WorkingDirectory=/home/ubuntu/{프로젝트}/src # 환경변수 설정 Environment="PATH=/home/ubuntu/.. 2022. 5. 9. Python3 가상환경 만들기 (venv) 들어가며... 프로젝트별 개발 환경을 구축하기 위해 가상환경을 생성하여 패키지 관리를 용이하게 수행할 수 있도록 생성해본다. 사전 준비 1. python3-venv 패키지 설치 # sudo apt-get install python3-venv 2. python3 프로젝트 생성 $ python3 -m venv {프로젝트명} 3. 가상환경 확인 # sudo apt-get install tree $ tree {프로젝트} {프로젝트} ├── bin │ ├── activate │ ├── activate.csh │ ├── activate.fish │ ├── easy_install │ ├── easy_install-3.7 │ ├── pip │ ├── pip3 │ ├── pip3.7 │ ├── python -> pyth.. 2022. 5. 9. 지도 검색 알고리즘 들어가며... 모바일에서 전달하는 검색어, 위도, 경도 데이터를 이용하여 데이터베이스에 적재된 데이터를 Map에 표시하기 위한 결과 리스트 처리를 개발해본다. 준비사항 위도(float) 경도(float) 검색어(str) 필요 사항 정리 위도 경도 값을 활용한 거리 계산 및 정렬 방법 business_latitude(float) 위도 business_longtitude(float) 경도 위도 경도 거리 계산 공식 활용 X = ( cos( 위도#1 ) * 6371 * 2 * 3.14 / 360 ) * | 경도#1 - 경도#2 | Y = 111 * | 위도#1 - 위도#2 | D = √ ( X² + Y² ) MySQL 검증 (거리 계산) SELECT business_idx, business_name, busi.. 2022. 5. 9. 커서 페이지네이션 구현 들어가며... 모바일 환경에서 적합한 스크롤 위주의 페이지 호출로 마지막 idx를 기준으로 다음 리스트를 호출하는 커서 페이지네이션을 개발한다. 준비사항 리스트 데이터를 호출하는 API 명세 Endpoint View를 개발하는 담당자와 협의 필요 마지막 idx 정보 필요 사항 정리 첫 번째 페이지 호출 N 번째 페이지 호출 코드 반영 if last_idx == 0: statement = select( Table.table_idx, ).order_by( Table.table_idx.desc() ).limit(20) else: statement = select( Table.table_idx, ).where( Table.table_idx < last_idx ).order_by( Table.table_idx.d.. 2022. 5. 9. 이전 1 2 3 다음 728x90 반응형