Skip to content

Instantly share code, notes, and snippets.

View danila-schelkov's full-sized avatar
🏠
Working from home

Danila Schelkov danila-schelkov

🏠
Working from home
  • ITMO
  • Russia
  • 07:52 (UTC +03:00)
View GitHub Profile
@danila-schelkov
danila-schelkov / regexps.txt
Last active July 11, 2023 20:49
Regular expressions
For emotes:
(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])
For urls:
\b((?:(?:https?:\/{2})?[a-z0-9.\-]+[.][a-z]{2,6}\/?)(?:[^\s()<>]+|\\(([^\s()<>]+|(\\([^\s()<>]+\\)))*\\))*)
Non-english urls withour puni-code:
(?i)((?:(?:https?:\/{2})?[^\s()\[\]<>\/]+[.][^\s()<>\/.]{2,6}\/?)(?:[^\s()<>]+|([^\s()<>]+|([^\s()<>]+))*)*)
((?:(?:https?:/{2})?[^\s()\[\]<>/]+[.][^\s()<>/.]{2,6}/?)(?:[^\s()<>]+|(?:[^\s()<>]+|(?:[^\s()<>]+))*)*)
@danila-schelkov
danila-schelkov / to_float.py
Last active May 7, 2023 20:23
A self-written function which can transform int value to float value and vice versa
def to_float(value_as_int: int) -> float:
binary = bin(value_as_int)
binary = binary[2:].zfill(32)
sign = -1 if binary[0] == '1' else 1
exponent = int(binary[1:9], 2) - 127
mantissa_base = binary[9:]
mantissa_bin = '1' + mantissa_base
mantissa = 0
val = 1
@danila-schelkov
danila-schelkov / inflector.py
Last active July 18, 2024 18:25
Скрипт для склонения слов в зависимости от числа перед ним. Тесты прилагаются.
from __future__ import annotations
import sys
from typing import Tuple
try:
if sys.version_info >= (3, 11):
from typing import LiteralString
else:
from typing_extensions import LiteralString
@danila-schelkov
danila-schelkov / config.py
Last active December 17, 2022 13:09
A simple config class, which is wrapping default configparser
# A simple config class, which is wrapping default configparser
# https://gist.github.com/Vorono4ka/4a70f376d33567091a0a6a68ffc1aeb7
import abc
import configparser
import typing
class Config(abc.ABC):
def __init__(self):
@danila-schelkov
danila-schelkov / time.py
Last active December 17, 2022 12:51
a little function, that converts seconds to pretty time string
UNIT_NAMES = ('ms', 'sec', 'min', 'hour', 'day', 'week')
UNIT_DIVIDERS = (1, 60, 60, 24, 7, 1)
UNIT_FORMATTERS = (lambda unit: round(unit * 1000), round, round, round, round, round)
def time_to_string(value: float):
assert value >= 0, 'Time cannot be negative.'
assert len(UNIT_NAMES) == len(UNIT_DIVIDERS) == len(UNIT_FORMATTERS), 'Units count does not match.'
times = []
TAG_ALPHABET = '0289PYLQGRJCUV'
def get_id(_tag):
tag_chars = list(_tag.upper())
result = 0
for char in tag_chars:
if not char in TAG_ALPHABET:
continue