목록Software (66)
YOGYUI
파이썬 3.10에 마침내 C, C++의 switch/case문과 유사한 문법이 추가된다고 한다 PEP 634은 구조적 패턴 매칭(Structural Pattern Matching)이라 하여 switch/case문과 유사한 match/case 문법에 대한 내용을 담고 있다 해당 내용은 다음 기사에서 최초로 접했다 (3월5일 기사니 꽤 뒷북인 느낌 ㅎㅎ) www.ciokorea.com/news/185423 파이썬 3.10의 새 '패턴 매칭'이 할 수 있는 일 파이썬(Python)은 강력하고 인기가 높지만, 다른 언어에는 있는 플로우 제어(flow control)가 결여되어 있었다. 이는 하나의 값을 가져와, 여러 가능한 조건 중 하나에 대해 명쾌하게 매칭 할 수 있는 www.ciokorea.com C, C+..
Flowchart를 웹에서 보여줘야 할 필요가 생겨서 이리저리 검색하다가 python, matplotlib 기반 라이브러리인 schemdraw를 한번 써보기로 했다 schemdraw.readthedocs.io/en/latest/ Schemdraw documentation — SchemDraw 0.8 documentation schemdraw.readthedocs.io 전자회로, 논리회로, 신호처리 등 다양한 종류의 schematics를 그리기 위한 Element들이 구현돼있다 (Latex도 지원되는듯) 예제코드를 보면 알겠지만, 한땀한땀 노가다로 코딩해줘야된다 사용성을 높이려면 고수준의 커스터마이징이 필요할 것 같다 각설하고, 다음과 같이 Flowchart도 어렵지 않게 구현할 수 있다 # test.py..
Ajax (Asynchronous JavaScript and XML) Ajax - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 다른 뜻에 대해서는 에이젝스 문서를 참조하십시오. 다른 뜻에 대해서는 아이아스 문서를 참조하십시오. Ajax(Asynchronous JavaScript and XML, 에이잭스)는 비동기적인 ko.wikipedia.org Flask 자체의 기술적 내용에 해당하는 포스팅은 아니다 Ajax 사용에 대한 예시 (page update에 대한 요청은 페이지가 수행하고, 서버는 라우팅만 잘 구현해주면 된다) [Structure] + proj + templates - index.html - app.py index.html에서 1초에 한번씩 update POST 호출하여 ..
Flask web server 구현 시 인증 절차를 위해 데코레이터 함수를 직접 구현하는게 일반적이다 관련 링크: https://eddmann.com/posts/using-basic-auth-and-decorators-in-pythons-flask/ 하지만 IoT 서버 구동과 같은 단순한 인증 절차만 필요할 경우 Flask_HTTPAuth같은 extension을 설치해 간단하게 해결할 수 있다 (로그아웃같은 기능은 session 별도 구현 필요) 본 포스팅에서는 Flask_HTTPAuth를 활용한 HTTP Basic 인증에 대한 예시만 다룬다 HTTP Digest 인증, (JWS/JWT) 토큰 인증 방식 / user-role 등에 대한 내용은 공식 페이지에서 참고하도록 한다 [Structure] + pr..
- requires: PyQt5 PyQt5의 QtSerialPort 모듈로 현재 장비에서 접근 가능한 시리얼 포트를 리스트업해보자 공식 API 문서는 다음을 참고 https://doc.qt.io/qt-5/qtserialport-index.html https://doc.qt.io/qt-5/qserialportinfo.html from typing import List, Dict, Union from PyQt5 import QtSerialPort def list_serial() -> List[Dict[str, Union[str, int, bool]]]: available = QtSerialPort.QSerialPortInfo().availablePorts() lst = [{ 'port': x.portName..
나중에 시간날때 Git에 올려야겠다... [Structure] ---- -------- Define.py -------- Threads.py -------- SerialComm.py # Define.py import datetime import threading def checkAgrumentType(obj, arg): if type(obj) == arg: return True if arg == object: return True if arg in obj.__class__.__bases__: return True return False class Callback(object): _args = None _callback = None def __init__(self, *args): self._args = a..