전체 글 썸네일형 리스트형 Python Schedule 라이브러리 Python Schedule라이브러리에 대한 실험 결과다. 자세한 사용법은 아래 docs에 자세하게 나와있다. schedule — schedule 1.1.0 documentation schedule.readthedocs.io 1. 스케줄러 application 레이어에서의 스케줄러란, 특정 작업을 원하는 주기로 실행시키기 위한 툴이다. 스케줄러의 스케줄링에는 크게 두종류가 있다. 1. 원하는 주기로 작업 실행 작업 종료후, 원하는 시간만큼 기다렸다가 다음 작업을 실행하는 경우다. ex) 5초 주기로 실행 2. 원하는 시간에 작업 실행 특정 시간에 작업을 실행하는 경우다 ex) 매 정각에 실행 (결국 1시간 주기로 실행) 이 두가지 스케줄링 방법에 대해 스케줄러가 어떻게 작업을 배치하는지에 대해 알아보는 .. 더보기 OpenTSDB TCP Command OpenTSDB에 TCP로 명령을 보내는도중 발생한 문제다. 1. telnet 으로 TCP Command 전송 telnet 을 통해 TSDB 서버에 다이렉트로 TCP Command를 날렸다. put {Metric} {timestamp} {value} {tags} 결과는 당연히 값이 잘 들어간다. 2. Python에서 Socket 통신 python에서 같은 명령으로 값을 넣어보았다. import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((hostname, port)) sock.send('put {Metric} {timestamp} {value} {tags}'.encode()) sock.close() 하지만 값이.. 더보기 Node-RED 노드 만들기 3. 플로우 실행을 위한 Injection 노드 만들기 Inject란 플로우를 시작하기 위한 신호이며, http post 요청으로 이루어진다. Node-RED의 기본 노드인 Inject 노드를 사용하여 Inject를 트리거 할 수 있다. 플로우를 시작하기 위해선 주입(Inject)이 이루어져야 한다. 이러한 Inject는 기본 노드인 Inject노드로 할 수 있고, 만들수도 있다. 다만 이러한 Inject가 없다면, 플로우가 있어도 해당 플로우를 시작 할 수 없다. 이번 포스팅에서는 이러한 플로우의 첫번째 노드, 즉 시작이 되는 노드를 어떻게 만드는지에 대해 알아본다. Inject는 사용자가 원하는 시점에 수동으로 진행될수도, 타이머를 걸어두어 자동으로 진행될수도 있다. 수동 (클릭) Injection 클릭을 통해 플로우를 시작하는 노드를 만들어 본다. 노드.. 더보기 SSH 터널링 (이전 완료) 이번 포스팅에서는 ssh 터널링에 대한 기초적인 설명과, 명령을 통한 실제 터널링에 대해 알아본다. ssh 터널링 터널링 이란것은 일종의 통신 프로토콜이다. 기존 패킷을 어떠한 터널링 프로토콜로 감싸 새로운 패킷을 만들어(캡슐화, Encapsulation) 터널 위에서 패킷을 옮기는 기법을 말한다. 이러한 기법들은 기존 네트워크가 아닌 새로운(또는 보여지면 안되는) 채널이 필요한 경우 사용되게 된다. 또한 갈 수 없는 곳까지의 도달을 터널링을 통해 도달할 수도 있다. 이러한 터널링에는 여러가지 프로토콜이 있다. (VPN, calico CNI에서 기본으로 사용하는 IPIP 프로토콜, ssh 터널링 프로토콜등) 이러한 터널링의 목적은 결국 기존 패킷을 새로운 패킷으로 감싸 기존에는 도달하지 못하던 곳을 도달.. 더보기 파이썬 asyncio 이 포스팅은 파이썬의 비동기 라이브러리인 asyncio에 대한 전반적인 설명과, 간단한 사용법을 다룬다. asyncio — Asynchronous I/O — Python 3.10.7 documentation asyncio — Asynchronous I/O asyncio is a library to write concurrent code using the async/await syntax. asyncio is used as a foundation for multiple Python asynchronous frameworks that provide high-performance network and web-servers, database connection docs.python.org 1. 비동기 프로그래밍.. 더보기 HTTP2, Protocol Buffer, gRPC 이번 포스팅에서는 gRPC와 그와 관련된 HTTP2, Protocol Buffer 프로토콜 그리고 파이썬에서 gRPC의 사용에 대해 다룬다. 1. Terminology gRPC는 google에서 개발한 RPC 프로토콜로써, 구글의 직렬화 기술인 프로토콜 버퍼를 사용하며 HTTP2 프로토콜 위에서 동작한다. 이를 위해 우선 프로토콜 버퍼와, http2에 대해 대략적으로 설명한다. 1.1 프로토콜 버퍼 Protocol Buffers | Google Developers Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data. developers.google.com 프로.. 더보기 동시성(Concurrency)과 병렬성(Parallelism) 이 포스팅에서는 동시성과 병렬성의 의미적 차이와, 파이썬에서의 차이를 라이브러리와 함께 알아본다. 동시성(Concurrency)과 병렬성(Parallelism) 동시성과 병렬성은 CS공부를 하다보면 또는 업무를 하다보면 반드시 만나게 되는 단어다. 이러한 기법들은 순차적 (Sequential) 프로그래밍보다 더욱 어렵다는 단점이 있다. 작업의 결과가 비결정적이기 때문에 결과에 대한 예측이 어렵고, 디버깅 또한 쉽지 않다. 하지만 한번에 두개 이상의 작업에 대해 수행이 가능하다는 엄청난 장점(두배 이상 빠르다는것은 절대로 아니다) 때문에 반드시 알아두어야 하는 개념이다. 이제 실제 동작을 들여다 보자. 병렬성(Parallelism) 병렬 컴퓨팅 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백.. 더보기 Node-RED 노드 만들기 2. 커스텀 노드 만들기 이번 포스트에선 노드를 만들기 위한 js, html 파일 작성에 관련된 내용을 다룬다. Documentation : Node-RED Tutorials Examples of what you can do, taken one step at a time nodered.org html 파일 html파일에는 노드의 UI, 노드의 인터페이스, 노드의 동작 이 기술된다. html 파일의 기본 포멧은 다음과 같다. 마크업 맨 위에있는 태그에는 노드의 editor UI를 html 파일로 작성하게 된다. 태그의 data-template-name 속성으로 노드의 이름을 넣어줘야 한다 ("test-node") 태그의 id로 node-input-{변수이름} 을 설정할 경우 이 노드에서 사용할 변수와 값이 연결(?) 되게 된다. .. 더보기 Python Thread 파이썬의 스레드에 대해 다루는 글이다. 스레드란, 프로세스내 작업의 단위이다. 프로세스는 하나 이상의 스레드를 가지고 있으며, 스레드 끼리는 프로세스의 힙공간을 공유하지만, 각 스레드별 스택을 가지고 있다. 이 포스팅은 전반적인 스레드에 대한 포스팅이 아닌 파이썬에서 스레드가 어떠한지와, threading 모듈에 관한 포스팅이다. 파이썬의 스레드 파이썬에서 스레드는 GIL이라는 정책 때문에, 동시에 두개 이상의 스레드가 병렬로 실행될 수 없다. 개발자는 이로인해 파이썬에서 제약을 받게된다. 그렇다면 GIL이 있으므로 파이썬 자체는 thread-safe하다고 볼 수 있는가? 불행히도 아니다. atomic 연산과 thread-safe 우선 thread-safe에 대해 알기전 연산의 atomic을 우선 알아야.. 더보기 ssh프로토콜과, 파이썬 paramiko 대화형 쉘 ssh 터미널을 개발하며 공부하게된 ssh프로토콜에 관련한 기본적인 내용과, paramiko 모듈의 ssh 인터렉티브 쉘을 얻을 수 있는 invoke_shell()에 대한 팁이다. (다시 삽질하지 않으려고 하는 기록이다) 쉘 입력 출력에 대해 ssh를 사용하기 전 쉘이 어떻게 사용자의 입력을 받아들이고, 보여주는지에 대해 이해햐아 한다. 쉘은 사용자가 커널을 사용하기 위한 인터페이스다. 사용자는 엔터(\r)를 통해 쉘에 명령을 입력하게 된다. 좀 더 자세한 이해를 위해 사용자가 쉘에 ls명령을 입력하여 해당 명령의 결과를 표준 출력(터미널창, 모니터)로 받는 과정을 알아보자. 사용자는 표준 입력(키보드)를 통해 'l', 's', '\r(CR, 엔터)'라는 세가지 입력을 수행해야 한다. (명령을 한번에 복.. 더보기 이전 1 2 3 4 ··· 8 다음