Статья представляет open source решение для менеджмента инцидентов, альтернативу Alertmanager. Рассматриваются его преимущества и возможности для компаний, ограниченных санкциями или политикой безопасности.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Многие пишут документацию, как хранилище фактов. Но пользователю нужно не «знать всё», а быстро дойти до цели.
Please open Telegram to view this post
VIEW IN TELEGRAM
Здравствуйте! Я — Алексей Жиряков, техлид backend-команды KION. Делюсь подборкой Python-библиотек, которые мы используем для оптимизации работы. Надеюсь, они будут полезны и вам!
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет! Я — Денис, студент Ярославского университета и сотрудник Тензора. В статье расскажу, как мы с командой разработали кликер-игру и столкнулись с ошибками, но получили ценный опыт.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассказываю, как прикрутил Celery, чтобы фоновые запросы к AI-API не превращались в очередь в МФЦ. Плюсы, грабли и когда это вообще стоит делать.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализуйте функцию
shorten_url(original_url, storage)
, которая генерирует короткий код (например, 5
символов) для длинной ссылки.Функция должна гарантировать уникальность кода и использовать уже существующий storage (словарь вида
{short_code: original_url}
) для проверки коллизий.Код должен быть:
• Состоящим из символов [a-zA-Z0-9]
• Фиксированной длины (по умолчанию 5)
• Уникальным: если сгенерированный код уже есть — нужно сгенерировать другой
Решение задачи
import random
import string
def shorten_url(original_url, storage, code_length=5):
chars = string.ascii_letters + string.digits
attempt = 0
max_attempts = 1000
while attempt < max_attempts:
code = ''.join(random.choices(chars, k=code_length))
if code not in storage:
storage[code] = original_url
return code
attempt += 1
raise RuntimeError("Unable to generate unique code after many attempts")
# Пример использования
storage = {}
url = "https://example.com/very/long/link "
code = shorten_url(url, storage)
print(code)
print(storage)
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья делится 7 продвинутыми приёмами работы с pandas для оптимизации задач анализа данных. Рассматриваются, например, итерации по группам с df.groupby().iter() и другие способы упростить повторяющиеся операции.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья рассматривает автоматизацию объединения таблиц с биохимическими показателями крови, поступающих из разных клиник. Показано, как с помощью одной команды в pandas легко объединить данные, несмотря на различия в порядке столбцов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Статья раскрывает механизмы управления памятью в CPython, уделяя особое внимание циклическому сборщику мусора (GC). Рассматриваются его работа, запуск и влияние на производительность приложений.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Реализуйте класс
MiniRouter
, который позволяет регистрировать и вызывать обработчики HTTP-путей с динамическими параметрами. Поддерживаемые шаблоны маршрутов:•
/users/:id
— параметр id
•
/posts/:post_id/comments/:comment_id
— вложенные параметрыМетод
add_route(path_template, handler)
регистрирует обработчик. Метод resolve(path)
вызывает нужный обработчик и передаёт ему параметры в виде словаря.Если путь не совпадает ни с одним шаблоном — выбрасывается
ValueError
.Решение задачи
class MiniRouter:
def __init__(self):
self.routes = []
def add_route(self, path_template, handler):
parts = path_template.strip('/').split('/')
self.routes.append((parts, handler))
def resolve(self, path):
path_parts = path.strip('/').split('/')
for route_parts, handler in self.routes:
if len(route_parts) != len(path_parts):
continue
params = {}
matched = True
for route_part, path_part in zip(route_parts, path_parts):
if route_part.startswith(':'):
params[route_part[1:]] = path_part
elif route_part != path_part:
matched = False
break
if matched:
return handler(params)
raise ValueError("No route matched")
# Пример использования:
router = MiniRouter()
def user_handler(params):
return f"User ID: {params['id']}"
def comment_handler(params):
return f"Post {params['post_id']}, Comment {params['comment_id']}"
router.add_route('/users/:id', user_handler)
router.add_route('/posts/:post_id/comments/:comment_id', comment_handler)
print(router.resolve('/users/42')) # ➜ User ID: 42
print(router.resolve('/posts/100/comments/55')) # ➜ Post 100, Comment 55
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Статья из серии посвящена созданию REST API на Flask. Рассматриваются настройка проекта, обработка запросов с Connexion, определение конечных точек через OpenAPI и аннотация API с помощью Swagger UI.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Статья описывает Excel-файл с актуальной информацией о ГОСТах, обсуждает их применение и влияние данных. Рассматриваются подходы к парсингу и автоматизации с использованием C#, Python и VBA.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Разбираемся в устройстве Dash и Shiny и почему оба фреймворка отлично подходят для решения единственной задачи - создать функциональный и красивый дашборд.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья продолжает серию по созданию REST API на Flask. В этой части вы подключаете SQLite, используете SQLAlchemy для управления данными, добавляете сериализацию с Marshmallow и интегрируете базу данных с REST API.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Ты думаешь, что задача тяжёлая. Но, возможно, ты просто не до конца понял, что именно нужно сделать.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
В статье рассматриваются ERP-системы: их роль в управлении бизнесом, ключевые преимущества внедрения, а также этапы выбора, проектирования и настройки, чтобы сделать систему максимально эффективной.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Напишите функцию, которая принимает список словарей и фильтрует его, возвращая только те словари, в которых значение указанного ключа превышает заданное значение.
Пример:
data = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 20},
{"name": "Diana", "age": 35}
]
result = filter_by_key(data, "age", 25)
print(result)
# Ожидаемый результат:
# [
# {"name": "Bob", "age": 30},
# {"name": "Diana", "age": 35}
# ]
Решение задачи
def filter_by_key(data, key, threshold):
return [item for item in data if item.get(key, 0) > threshold]
# Пример использования:
data = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 20},
{"name": "Diana", "age": 35}
]
result = filter_by_key(data, "age", 25)
print(result)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Узнайте, как я превратил свой Telegram в персональную файловую систему с помощью бота на Python. В статье делюсь опытом разработки, полным кодом и лайфхаками.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
Статья рассказывает о процессе интеграции Django с Zoho CRM. Рассматриваются шаги настройки: подготовка среды, работа с вебхуками и реализация асинхронной обработки данных через Celery для повышения эффективности.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1