프로그래밍 319

[Python] Flask 서버 멀티 스레드로 구동하기

문제점 및 증상 Qt를 이용한 GUI와 함께 간단한 Flask 웹 서비스를 이용해야하는 상황이 있었습니다. 처음에는 다음과 같이 Flask를 MVC 형식으로 구현하고, Flask 실행부만 스레드로 구현하면 아무런 문제가 없을 줄 알고 실행해 보았습니다만, 다음과 같은 오류가 발생되고 정상적으로 실행되지 않았습니다. Exception in thread Thread-6 (handleFlask): Traceback (most recent call last): File "C:\Dev\Python\Python310\lib\threading.py", line 1016, in _bootstrap_inner self.run() File "C:\Dev\Python\Python310\lib\threading.py", li..

[javascript] 배열 순서를 마구 뒤섞기(shuffle)

자바스크립트에서 배열 내부의 항목들을 마구 뒤썩어주는 방법을 찾아 보니, 다양한 방법들이 있었는데, 그 중에서 쓸만한 방법들을 정리해 둡니다. 함수로 이용할 때는 다음과 같이 shuffleArray()라는 함수를 만들어서 이용하면 편리할 것 같습니다. function shuffleArray(a){//array let c=a.length;let b=d=c;while(c)b=Math.random()*(--c+1)|0,d=a[c],a[c]=a[b],a[b]=d } 위 함수를 임의의 배열에 적용한 결과는 다음과 같습니다. >> let unshuffled = ['hello', 'a', 't', 'q', 1, 2, 3, {cats: true}] >> unshuffled (8) ['hello', 'a', 't', '..

[python] ModuleNotFoundError: No module named 'packaging'

문제점 및 증상NVIDIA AGX Orin에 JetPack 6.0DP 설치하고, PyTorch를 다음과 같이 설치하였습니다.$ sudo apt-get -y update; $ sudo apt-get -y install python3-pip libopenblas-dev$ python3 -m pip install --upgrade pip$ pip install --no-cache https://developer.download.nvidia.cn/compute/redist/jp/v60dp/pytorch/torch-2.2.0a0+6a974be.nv23.11-cp310-cp310-linux_aarch64.whl 정상적으로 CUDA와 연동하여 동작하는지 다음과 같이 간단하게 확인해 보았는데, "ModuleNotFou..

[git] 이미 존재하는 로컬 폴더를 원격 저장소와 연결하기

개요프로젝트 시작부터 개발하던 것이 아닌, 중간에 저장소에 추가해야할 경우 이미 존재하는 폴더에 대해서 저장소를 추가하여, 이전에 작성된 소스를 추가하는 방법을 알아 보겠습니다.저장소 추가하기다음과 같이 이미 존재하는 폴더로 이동 후, git 저장소를 초기화합니다.$ cd /path/to/workspace$ git init다음과 같이 저장소를 추가합니다.$ git remote add origin https://my.gitlab.host/group/project_name.git$ git remote -vorigin https://my.gitlab.host/group/project_name.git (fetch)origin https://my.gitlab.host/group/project_name.git ..

프로그래밍 2023.10.30

[python] Could not find a version that satisfies the requirement torch==1.11.0+cu113

문제점 및 증상"PyTorch v1.11.0+cu113"를 설치하는 과정에서 다음과 같은 오류를 만났습니다.$ pip install torch==1.11.0+cu113ERROR: Could not find a version that satisfies the requirement torch==1.11.0+cu113 (from versions: 1.11.0, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.2.1, 2.2.2, 2.3.0)ERROR: No matching distribution found for torch==1.11.0+cu113시험 환경HW: Intel i5 / 16GB RAMGPU: NVIDIA RTX..

[python] sqlalchemy (mysql.connector.errors.DatabaseError) 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'

문제점 및 증상 MariaDB와 연동하는 과정에서 다음과 같은 오류가 발생하였습니다. sqlalchemy (mysql.connector.errors.DatabaseError) 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci' 시험 환경 MariaDB : 10.6.4 Database charset : utf8mb4 TABLE COLLATE : utf8mb4_unicode_ci 해결 방안 해결 방법은 아주 간단합니다. 다음과 같이 DB 연결 문자열 마지막에 "?charset=utf8mb4&collation=utf8mb4_general_ci"를 추가해 주시면 됩니다. db_url = f"mysql+mysqlconnector://{conf.get(JKEY_USERN..

[Python] 발생한 Exception의 클래스를 확인하는 방법은?

발생 상황 데이터베이스에 연결하여 데이터를 추가(insert)하는 작업에서 Exception이 발생하였습니다. Exception이 발생한 원인은 테이블에 유일키가 있었는데, 중복된 값을 추가하여 "IntegrityError" 오류가 발생한 것이었습니다. 정확하게 IntegrityError만 except 처리를 하면 되겠지만, "except Exception as e:" 구문 하나로 해결할 수 없나 하는 생각에 그럼 발생한 Exception의 클래스를 확인하여 "IntegrityError" 오류만 별도 처리하면 되지 않을까? 하는 생각에 관련 자료를 찾아보게 되었습니다. Exception의 클래스 이름 확인 방법 참고자료를 보면, Exception의 클래스 이름 확인 방법은 간단하게 다음과 같이 할 수 있..

[python-VISA] 잡음지수 분석기의 측정값 읽어오기

개요 잡음지수 분석기(Noise Figure Analyzer)에서 측정 포인트값을 읽어오는 방법에 대해 알아 보겠습니다. 이용한 잡음지수 분석기(Noise Figure Analyzer)는 Agilent N8975A 모델입니다. 측정 포인트값 읽어오기 다음은 측정 포인트 정보들을 읽어오는 예제입니다. from pyvisa import ResourceManager from time import sleep _GPIB = 8 _port = 0 rm = ResourceManager(r'C:\WINDOWS\system32\visa64.dll') client = rm.open_resource(f'GPIB{_port}::{_GPIB}::INSTR') print (client.query('*IDN?')) point_co..

[python] 각종 옵션/설정 정보를 JSON으로 다루기

개요 윈도우 환경에서 작업을 할 적에는 *.ini 형식의 파일로 옵션/설정 정보를 관리하였고, 관련 API 등이 편하게 되어 있어서 이용에 전혀 불편함이 없었는데, 파이썬의 configParse를 이용하려니 만족스럽지가 못하였습니다. 그러던 차에 JSON 형식의 파일이 파이썬의 dict 형과 1:1 대응이 된다는 점에서 착안하여 다음과 같이 옵션/설정 정보를 관리하였더니 INI 형식보다 더 유연하고 사용하기가 좋았습니다. 본 글에서는 파이썬에서 각종 옵션/설정 정보를 JSON으로 다루는 방법을 정리해 보겠습니다. 키 이름 상수 정의하기 자바스크립트에서 JSON 데이터를 다루거나, 파이썬의 dict 형 자료를 이용할 때, 꼭 문제가 되는 것이 키 이름에서 오타가 나서 알 수 없는 곳에서 헤맸던 경험이 종종..

[Python] 파워메터 측정 데이터 가져오기

파워메터 (Power Meter)를 PyVISA를 이용하여 측정 데이터를 가져오는 방법을 알아 보겠습니다. 먼저 예제 코드를 보면 다음과 같습니다. from pyvisa import ResourceManager host, port = '192.168.0.11', 0 conn_str = f'TCPIP{port}::{host}::INSTR' rm = ResourceManager(r'C:\WINDOWS\system32\visa64.dll') # VISA 객체를 생성합니다. print(f'PowerMeter {host}:{port} connecting...') power_meter = rm.open_resource(conn_str) print (power_meter.query('*IDN?')) power_met..

728x90