Skip to content

Instantly share code, notes, and snippets.

View kgantsov's full-sized avatar
🇺🇦

Kostiantyn Hantsov kgantsov

🇺🇦
  • iconik.io
  • Stockholm, Sweden
View GitHub Profile
@kgantsov
kgantsov / README.md
Last active November 12, 2025 07:23
Leader election with Consul

Leader election with Consul

Install the Python Consul client:

pip install python-consul

Run consul

@kgantsov
kgantsov / peewee_rqlite.py
Created October 21, 2025 18:06
Minimalistic Peewee adapter for rqlite
import requests
import json
import time
from peewee import *
class RqliteCursor:
"""Minimal cursor-like wrapper for rqlite query responses."""
def __init__(self, rows=None, columns=None, lastrowid=None, rowcount=None):
self._rows = rows or []
self._columns = columns or []
@kgantsov
kgantsov / jwt_decode.py
Last active October 7, 2025 18:30
Script for printing JWT token's payload
import argparse
import base64
import json
import typing
from datetime import datetime
def parse_jwt_token(token_part: str) -> dict[str, typing.Any]:
token_part_with_padding = f"{token_part}{'=' * (len(token_part) % 4)}"
@kgantsov
kgantsov / kubectl_top_pods_container_stats.py
Last active March 25, 2025 08:06
Memory usage statistics (min, max, mean, 95th percentile) for Kubernetes pods grouped by container name
import argparse
import subprocess
import statistics
from collections import defaultdict
from typing import Union
def run_kubectl_top(
all_namespaces: bool = False,
@kgantsov
kgantsov / time_from_uuid1.py
Created April 11, 2022 07:23
time_from_uuid1.py
from datetime import datetime
from datetime import timedelta
from uuid import UUID
def time_from_uuid1(u: str) -> datetime:
return datetime(1582, 10, 15) + timedelta(microseconds=UUID(u).time // 10)
fastapi==0.70.0
gino==1.0.1
pytest==6.2.5
pytest-asyncio==0.16.0
requests==2.26.0
@kgantsov
kgantsov / find_env_folders.sh
Created June 11, 2021 11:40
Find python's virtualenv directories and display them along with size
# simple script that finds all python virtualenv folders and shows how much
# space they are taking byt running `du -sh` command on each of the found directory
sudo find ~ -type d \( -name env -o -name venv \) -exec du -sh {} \; 2>/dev/null
- What do Etcd, Consul, and Zookeeper do?
- Service Registration:
- Host, port number, and sometimes authentication credentials, protocols, versions
numbers, and/or environment details.
- Service Discovery:
- Ability for client application to query the central registry to learn of service location.
- Consistent and durable general-purpose K/V store across distributed system.
- Some solutions support this better than others.
- Based on Paxos or some derivative (i.e. Raft) algorithm to quickly converge to a consistent state.
- Centralized locking can be based on this K/V store.
@kgantsov
kgantsov / covid-19-dashboard-styles.markdown
Last active September 24, 2020 10:33
covid-19-dashboard-styles
# Usage: echo '{"a": [], "b": "c"}' | jsonify
alias jsonify="python -m json.tool | pygmentize -l json"