Rate limit function calls in python

#!/usr/bin/env python import functools from typing import Callable, Deque import time import threading from collections import deque import inspect MAX_CALLS = 10 PERIOD_SEC = 3 def rate_limited(func: Callable, max_calls: int, period: int) -> Callable:     print("Max calls : " + str(max_calls) + " / " + str(period))     calls: Deque = deque()     lock = threading.RLock()     @functools.wraps(func)     def wrapper(*args, **kargs):         with lock:             if len(calls) >= max_calls:                 until = time.time() + period - (calls[-1] - calls[0])                 sleeptime = until - time.time()                 if sleeptime > 0:                     print("Rate Limit Reached => sleep with : " + str(sleeptime))                     time.sleep(sleeptime)                 while len(calls) > 0:                     calls.popleft()             _time = time.time()             calls.append(_time)              

[Tip] Fork한 Github 소스 원래 소스와 머지(싱크) 하기

git remote -v git remote add upstream https://github.com/sullivancolin/hexpy git fetch upstream git checkout master git merge upstream/master git push

[ELK] search guard를 이용한 보안 설정 (사용자 권한)

Search Guard 개요 ELK의 X-pack 대신 사용 권한 기능을 제공하는 Free 오픈소스 SSL/TLS 적용 필수 (Kibana 로그인만 보안 적용 불가능) 설치 Search Guard Download 사이트에서 ELK 각 모듈별 버전에 맞는 플러그인 다운로드 후 설치 예시: ELK 6.2.4 버전인 경우 search-guard-6-6.2.4-22.3.zip search-guard-kibana-plugin-6.2.4-13.zip Elasticsearch Plugin 설치 Elasticsearch Plugin 설치 $ ./bin/elasticsearch-plugin install -b file:///data/ELK/packages/6.2.4/search-guard-6-6.2.4-22.3.zip Elasticsearch Plugin 설정 $ cd ./plugins/search-guard-6/tools $ bash ./install_demo_configuration.sh Elasticsearch 실행 $ ./bin/elasticsearch 아래와 같이 에러 발생 시 조치  max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 조치 사항 Max Open file 을 위한 설정 /etc/systemd/system.conf 파일의 DefaultLimitNOFILE=65536 으로 설정 리부팅 필요 VM 을 위한 설정 $ sudo sysctl -w vm.max_map_count=262144 Elasticsearch의 plugins/search-guard-/sgconfig의 설정 반영 $

ELK에 xpack 설치 후 logstash로 데이터 입력

1. xpack 다운로드  - [path]/x-pack-6.2.2.zip 2. xpack 설치 (in ELK modules) - $ ./bin/elasticsearch-plugin  install file://[path]/x-pack-6.2.2.zip - $ ./bin/kibana-plugin  install file://[path]/x-pack-6.2.2.zip - $ ./bin/logstash-plugin  install file://[path]/x-pack-6.2.2.zip 3. 패스워드 업데이트 - $ ./bin/x-pack/setup-passwords interactive ... Changed password for user [kibana] Changed password for user [logstash_system] Changed password for user [elastic] 4. 설정 파일 업데이트 - config/kibana.yml 업데이트 elasticsearch.username: "kibana" elasticsearch.password: [PW] - config/logstash.yml xpack.monitoring.elasticsearch.username: logstash_system xpack.monitoring.elasticsearch.password: [PW] 5. logstash로 데이터 insert하기 위한 User(예:logstash_insert)/Role 생성 - Kibana에 "elastic" ID로 로그인 후 설정 (세부 설정 생략) 6. logstash 에 insert 권한 가지 user를 통한 데이터 insert - 예시 output {     elasticsearch {         hosts => "localhost"         index => "test_index"    

Mosquitto test

1. Install Mosquitto broker $ sudo  apt-get install mosquitto $ netstat -nap | grep 1883 tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN      -              tcp6       0      0 :::1883                 :::*                    LISTEN      -  2. Install Mosquitto client $ sudo apt-get install mosquitto-clients 3. Test Pub/Sub - subscribing "hello/world" Topic $ mosquitto_sub -d -t hello/world Client mosqsub/7013-dkyun77-Th sending CONNECT Client mosqsub/7013-dkyun77-Th received CONNACK Client mosqsub/7013-dkyun77-Th sending SUBSCRIBE (Mid: 1, Topic: hello/world, QoS: 0) Client mosqsub/7013-dkyun77-Th received SUBACK Subscribed (mid: 1): 0 (after executing the following command of mosquitto_pubg) Client mosqsub/7013-dkyun77-Th received PUBLISH (d0, q0, r0, m0, 'hello/world', ... (11 bytes)) Hello World $ mosquitto_pub -d -t hello/world -m "Hello World" Client mosqpub/6973-dkyun77-Th sending CONNECT Client mosqpu

SSH 연결 Delay 해결

증상 서버에 ssh 연결 시 지연 현상 발생 $ ssh -v [x.x.x.x]로 어디에서 지연이 발생하는지 검토 $ ssh -v [X.X.X.X] .... debug1: Next authentication method: gssapi-with-mic debug1: Unspecified GSS failure.   Minor code may provide more information No Kerberos credentials available debug1: Unspecified GSS failure.   Minor code may provide more information No Kerberos credentials available debug1: Unspecified GSS failure.   Minor code may provide more information ... 원인 GSSAPIAuthentication 관련 이슈 해결책 Sshd 서버의 /etc/ssh/sshd.config 에서 GSSAPIAuthentication 옵션을 no로 설정 후 sshd 서비스 재시작

[제 43회 T dev forum] Artificial Intelligence (발표 유투브 링크)

[제 43회 TDF] 01. 최진성 SKT 종합기술원장 - Opening Speech https://www.youtube.com/watch?v=xb8Qg9FTwk0 [제 43회 TDF] 02. 김진형 AIRI 지능정보기술연구소 원장 - 4차 산업혁명과 인공지능 기반 혁신전략 https://www.youtube.com/watch?v=k4sr8DNX8_M [제 43회 TDF] 03. SKT smart device 사업 추진 전략 찾을 수가 없네요 [제 43회 TDF] 04. 한상기 소셜컴퓨팅연구소 대표 - 인공 지능 기술의 사회적 이슈 https://www.youtube.com/watch?v=8T-T9mQ9pbU [제 43회 TDF] 05. 김태윤 SKT AI Tech. Lab장 - SKT Intelligent Agent 기술 소개 https://www.youtube.com/watch?v=AeB9hg6HQCs [제 43회 TDF] 06. 박구용 SKT HMI Tech. Lab장 - SKT 음성인식 기술 소개 https://www.youtube.com/watch?v=hZ2C1sZ1LG8 [제 43회 TDF] 07. 박성준 SKT Manager - Voice UX Design for Speech Recognition Speaker https://www.youtube.com/watch?v=VGBv1L9dEYY [제 43회 TDF] 08. 박병관 SKT Manager - SKT Visual Intelligence 기술 https://www.youtube.com/watch?v=ZRyct_KjRQs [제 43회 TDF] 09. 김정희 NAVER 부장 - NAVER 인공지능 개발 현황 https://www.youtube.com/watch?v=SoK9uezYi3k [제 43회 TDF] 10. 류현곤 NVIDIA 부장 - NVIDIA의 Deep Learning Library https://www.yout