🚪 Knock-Knock: кто стучится в мой SSH
Проект Knock-Knock — это стильный и информативный дашборд-медоед (honeypot), который в реальном времени визуализирует атаки на ваш SSH-порт. Вместо скучных логов вы получаете живую ленту «стуков» со всеми подробностями.
Что можно увидеть на дашборде:
— Live Feed: поток попыток входа с указанием логина, пароля, IP и провайдера атакующего.
— 3D-Глобус: визуализация локации последнего «стука» и тепловая карта стран-агрессоров.
— Стена позора (Leaderboards): топы самых популярных паролей, логинов и наглых ISP.
Архитектура проекта проста и эффективна:
1. Honeypot (Python): слушает порт 22 и перехватывает данные.
2. Monitor: обогащает IP данными GeoIP (город, страна, провайдер).
3. Backend (FastAPI + Redis): хранит статистику в SQLite и транслирует живые события через WebSockets.
4. Frontend: адаптивный дашборд, который отлично работает и на десктопе, и на мобилках.
🔗 Демо в реальном времени: https://clc.to/P8C1mw
📂 GitHub проекта: https://clc.to/cjZX7Q
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Проект Knock-Knock — это стильный и информативный дашборд-медоед (honeypot), который в реальном времени визуализирует атаки на ваш SSH-порт. Вместо скучных логов вы получаете живую ленту «стуков» со всеми подробностями.
Что можно увидеть на дашборде:
— Live Feed: поток попыток входа с указанием логина, пароля, IP и провайдера атакующего.
— 3D-Глобус: визуализация локации последнего «стука» и тепловая карта стран-агрессоров.
— Стена позора (Leaderboards): топы самых популярных паролей, логинов и наглых ISP.
Архитектура проекта проста и эффективна:
1. Honeypot (Python): слушает порт 22 и перехватывает данные.
2. Monitor: обогащает IP данными GeoIP (город, страна, провайдер).
3. Backend (FastAPI + Redis): хранит статистику в SQLite и транслирует живые события через WebSockets.
4. Frontend: адаптивный дашборд, который отлично работает и на десктопе, и на мобилках.
🔗 Демо в реальном времени: https://clc.to/P8C1mw
📂 GitHub проекта: https://clc.to/cjZX7Q
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
🔍 Сравнение тайп-чекеров: как они «видят» пустые списки
Когда вы пишете
Стратегия 1: Все дозволено (`Any`)
Кто использует: Pyright, Pyre, Ty.
Как работает: Тайп-чекер просто помечает список как
Плюс: Минимум ложных ошибок. Можно класть что угодно.
Минус: Нулевая безопасность. Ошибки (например, добавление списка вместо строки) проскочат в продакшен и вызовут краш в рантайме.
Стратегия 2: Анализ всех использований
Кто использует: Pytype.
Как работает: Чекер смотрит на весь код функции. Если вы добавили в список
Плюс: Максимально близко к поведению Python в рантайме.
Минус: Если ошибка закралась в начале функции, тайп-чекер может подсветить её только в самом конце (на `return`), что затрудняет отладку.
Стратегия 3: Вывод по первому использованию
Кто использует: Mypy, Pyrefly (по умолчанию).
Как работает: Тип фиксируется по первой операции
Пример: Если сначала добавили число, а потом пытаетесь добавить строку — вы получите ошибку сразу на строке с кодом.
Плюс: Ошибки подсвечиваются именно там, где они возникли. Это делает их максимально понятными и легко исправимыми.
🔗 Полный текст статьи
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Когда вы пишете
x = [], интерпретатор Python знает, что это список, но не знает, что в нем будет лежать. Разные тайп-чекеры решают эту загадку по-разному.Стратегия 1: Все дозволено (`Any`)
Кто использует: Pyright, Pyre, Ty.
Как работает: Тайп-чекер просто помечает список как
list[Any].Плюс: Минимум ложных ошибок. Можно класть что угодно.
Минус: Нулевая безопасность. Ошибки (например, добавление списка вместо строки) проскочат в продакшен и вызовут краш в рантайме.
Стратегия 2: Анализ всех использований
Кто использует: Pytype.
Как работает: Чекер смотрит на весь код функции. Если вы добавили в список
1, а потом "foo", он выведет тип list[int | str].Плюс: Максимально близко к поведению Python в рантайме.
Минус: Если ошибка закралась в начале функции, тайп-чекер может подсветить её только в самом конце (на `return`), что затрудняет отладку.
Стратегия 3: Вывод по первому использованию
Кто использует: Mypy, Pyrefly (по умолчанию).
Как работает: Тип фиксируется по первой операции
append или add.Пример: Если сначала добавили число, а потом пытаетесь добавить строку — вы получите ошибку сразу на строке с кодом.
Плюс: Ошибки подсвечиваются именно там, где они возникли. Это делает их максимально понятными и легко исправимыми.
🔗 Полный текст статьи
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
🐼 Pandas: 4 фатальные ошибки, которые делают 51% разработчиков
Даже в 2026 году Pandas остается главной «головной болью» Python-разработчика. С выходом версий 2.x и 3.x правила игры изменились.
1. Итерация по строкам
❌ iterrows() — забудьте о нем. Он конвертирует каждую строку в
✅ itertuples() — если цикл неизбежен, он быстрее в 10–100 раз.
✅ Векторизация (np.where) — в 4000 раз быстрее.
> DS-совет: Если логика сложнее обычного сложения — используйте
2. Переименование
✅
✅
✅
3. Война с NaN
NaN — это не просто пустая ячейка, это сигнал о проблеме в данных.
✅ Диагностика:
✅ ffill() / bfill() — критически важны для временных рядов (Time Series), чтобы не терять динамику.
✅ fillna(median) — классика для ML-пайплайнов, но всегда проверяйте природу пропусков. Иногда
4. Фильтрация
✅ Булевы маски:
✅ `.query()` — читается как SQL, поддерживает переменные через
✅
🔗 Ссылка на пост
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Даже в 2026 году Pandas остается главной «головной болью» Python-разработчика. С выходом версий 2.x и 3.x правила игры изменились.
1. Итерация по строкам
pd.Series, создавая дикий overhead.> DS-совет: Если логика сложнее обычного сложения — используйте
.apply(), но стремитесь к векторизации через NumPy.2. Переименование
.rename(columns=...) — самый безопасный путь. Не ломается при изменении схемы..str.lower().str.replace() — лучший способ массово привести колонки к snake_case.add_prefix() — спасение при сложных merge, когда нужно быстро разделить признаки из разных таблиц.3. Война с NaN
NaN — это не просто пустая ячейка, это сигнал о проблеме в данных.
df.isna().sum() — база.dropna(subset=[...]) — единственный честный путь.4. Фильтрация
df[(df['A'] > 0) & (df['B'] < 1)] — классика. Важно: забудьте скобки — получите ошибку приоритета.@. Идеально для длинных условий..loc[] — единственный верный способ, если нужно одновременно отфильтровать строки и выбрать колонки.🔗 Ссылка на пост
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
❤5👍2
Что выведет код?
Anonymous Quiz
8%
Error, False, False, Error
10%
True, None, 0, True
63%
True, False, False, True
19%
False, False, False, False
👍7
💥 Открытый вебинар | ИИ-агенты в продакшене: от хайпа к деньгам
Агенты уже везде. Но мало кто признаётся, сколько денег сжёг на бесконечных циклах, галлюцинациях в RAG и отсутствии мониторинга.
Полина Полунина, руководитель AI-направления Альфа-Банка, расскажет честно:
▪️ Чем агент отличается от «просто GPT с промптом» и когда бизнесу достаточно обычного LLM
▪️ 3 реальных кейса из корпоративной среды: что взлетело, а что нет
▪️ Live-демо работающего агента
▪️ ТОП-5 граблей, на которые наступают команды при внедрении
⏱️ 10 марта в 19:00 (МСК)
🎁 Участники получат промокод на скидку на самый полный курс по ИИ-агентам
👉 Регистрируйся
Агенты уже везде. Но мало кто признаётся, сколько денег сжёг на бесконечных циклах, галлюцинациях в RAG и отсутствии мониторинга.
Полина Полунина, руководитель AI-направления Альфа-Банка, расскажет честно:
▪️ Чем агент отличается от «просто GPT с промптом» и когда бизнесу достаточно обычного LLM
▪️ 3 реальных кейса из корпоративной среды: что взлетело, а что нет
▪️ Live-демо работающего агента
▪️ ТОП-5 граблей, на которые наступают команды при внедрении
⏱️ 10 марта в 19:00 (МСК)
🎁 Участники получат промокод на скидку на самый полный курс по ИИ-агентам
👉 Регистрируйся
🤓 Листайте, улыбайтесь и узнавайте себя.
Если у вас есть свои любимые — делитесь в комментариях
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤1
Многие знают о list, set и dict comprehensions. Но что, если вам нужен tuple comprehension или frozenset comprehension? В синтаксисе Python их не существует, но мы можем их имитировать.
Главный секрет: Генераторные выражения
Генераторные выражения (generator expressions) — это «строительные блоки», которые позволяют создавать итерируемые объекты на лету без выделения памяти под весь список.
Как это работает:
Если передать генераторное выражение в функцию как единственный аргумент, лишние скобки можно опустить:
# Вместо этого:
all((n > 1 for n in numbers))
# Пишем так:
all(n > 1 for n in numbers)
🛠 Примеры «кастомных» включений
1. Tuple Comprehension
Формально его нет, но передача генератора в конструктор tuple() дает тот же результат:
>>> numbers = [2, 1, 3, 4, 7]
>>> tuple(n**2 for n in numbers)
(4, 1, 9, 16, 49)
2. Frozenset Comprehension
Если вам нужен неизменяемый (immutable) сет:
>>> word_fset = frozenset(w.lower() for w in ["Apple", "Orange", "Apple"])
frozenset({'apple', 'orange'})
3. Counter Comprehension
Класс Counter из модуля collections идеально сочетается с генераторами для быстрого подсчета объектов:
from collections import Counter
words = Counter(w.strip() for w in text.split())
📉 Агрегация через Reducer-функции
Генераторные выражения отлично работают с функциями, которые «сворачивают» (reduce) итерируемый объект в одно значение:
— sum(n**2 for n in numbers) — сумма квадратов.
— "".join(str(n) for n in numbers) — конкатенация строк.
— math.prod(n for n in numbers) — произведение элементов.
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👏1😢1
🚀 Лестница оптимизации Python
Все знают, что Python медленный. Но мало кто знает, на какой «ступеньке» пора остановиться, чтобы не тратить недели на оптимизацию того, что и так работает.
Разработчик провел масштабный бенчмарк (март 2026) на Apple M4 Pro и составил «лестницу» инструментов.
Оказалось, что дело не только в GIL. Главный виновник — максимальная динамичность. На каждый
🪜 Ступени лестницы (от простого к сложному):
1. Обновите CPython (Уровень: Легко)
• Профит: до 1.4x (переход с 3.10 на 3.11+).
• Цена: Смена версии в Dockerfile.
• Нюанс: 3.14t (без GIL) в однопотоке чуть медленнее из-за накладных расходов на атомарные операции.
2. Альтернативные рантаймы (PyPy, GraalPy)
• Профит: 6x – 66x.
• Цена: Просто запустить код другим интерпретатором.
• Нюанс: Совместимость с C-библиотеками (pandas, numpy) может быть кривой.
3. Mypyc (Компиляция типов)
• Профит: 2.4x – 14x.
• Цена: Написать нормальные Type Annotations.
• Нюанс: Отлично работает, если ваш код и так проходит строгую проверку mypy.
4. Numba (@njit)
• Профит: 50x – 135x.
• Цена: Один декоратор и перевод данных в массивы NumPy.
• Нюанс: Идеально для тяжелых математических циклов.
5. Cython (Путь джедая)
• Профит: до 124x (уровень нативного C).
• Цена: Знание C и борьба с «минным полем» (например,
6. Новая волна (Mojo, Codon, Taichi)
• Профит: до 198x.
• Цена: Сырые инструменты, отсутствие колес (wheels) под новые версии Python. Mojo — это вообще новый язык "в шкуре" Python.
7. Rust (PyO3)
• Профит: 113x – 154x.
• Цена: Изучение Rust.
• Главный плюс: Не чистая скорость, а «владение данными». Rust может распарсить JSON в свои структуры, вообще не создавая медленные Python-словари.
Стеклянный потолок: Словари и JSON
Если ваша задача — гонять JSON (как в реальном мире), то Cython и Rust дадут лишь 4x-6x профита, пока вы используете стандартный
Полный отчет и код бенчмарков: https://clc.to/NgPptA
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Все знают, что Python медленный. Но мало кто знает, на какой «ступеньке» пора остановиться, чтобы не тратить недели на оптимизацию того, что и так работает.
Разработчик провел масштабный бенчмарк (март 2026) на Apple M4 Pro и составил «лестницу» инструментов.
Оказалось, что дело не только в GIL. Главный виновник — максимальная динамичность. На каждый
a + b Python должен спросить: «Что такое a? Что такое b? Есть ли у них метод add? Не подменили ли его секунду назад?». В итоге обычное число в C занимает 4 байта, а в Python — 28 байт «обвязки».🪜 Ступени лестницы (от простого к сложному):
1. Обновите CPython (Уровень: Легко)
• Профит: до 1.4x (переход с 3.10 на 3.11+).
• Цена: Смена версии в Dockerfile.
• Нюанс: 3.14t (без GIL) в однопотоке чуть медленнее из-за накладных расходов на атомарные операции.
2. Альтернативные рантаймы (PyPy, GraalPy)
• Профит: 6x – 66x.
• Цена: Просто запустить код другим интерпретатором.
• Нюанс: Совместимость с C-библиотеками (pandas, numpy) может быть кривой.
3. Mypyc (Компиляция типов)
• Профит: 2.4x – 14x.
• Цена: Написать нормальные Type Annotations.
• Нюанс: Отлично работает, если ваш код и так проходит строгую проверку mypy.
4. Numba (@njit)
• Профит: 50x – 135x.
• Цена: Один декоратор и перевод данных в массивы NumPy.
• Нюанс: Идеально для тяжелых математических циклов.
5. Cython (Путь джедая)
• Профит: до 124x (уровень нативного C).
• Цена: Знание C и борьба с «минным полем» (например,
x ** 0.5 в Cython может быть в 40 раз медленнее, чем `sqrt(x)`).6. Новая волна (Mojo, Codon, Taichi)
• Профит: до 198x.
• Цена: Сырые инструменты, отсутствие колес (wheels) под новые версии Python. Mojo — это вообще новый язык "в шкуре" Python.
7. Rust (PyO3)
• Профит: 113x – 154x.
• Цена: Изучение Rust.
• Главный плюс: Не чистая скорость, а «владение данными». Rust может распарсить JSON в свои структуры, вообще не создавая медленные Python-словари.
Стеклянный потолок: Словари и JSON
Если ваша задача — гонять JSON (как в реальном мире), то Cython и Rust дадут лишь 4x-6x профита, пока вы используете стандартный
json.loads().Золотое правило: Потолок скорости в вебе — это создание Python-объектов. Если хотите реального рывка, нужно уходить от dict и парсить данные сразу в C-структуры или Rust-типы.Полный отчет и код бенчмарков: https://clc.to/NgPptA
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🥱1
⏳ Часовая готовность: создаём ИИ-агента в прямом эфире
В 19:00 МСК в рамках нашего курса «Разработка AI-агентов» стартует вебинар «ИИ-агенты в продакшене: от хайпа к деньгам». Спикер — Полина Полунина, руководитель AI-направления в Альфа-Банке.
Будет live-демо работающего агента, реальные метрики из корпоративной среды и честный разбор архитектурных граблей — без воды и «успешного успеха».
Всем зрителям эфира дадим эксклюзивный промокод AGENTS на скидку 10 000 ₽ на любой тариф курса.
👉 Занять место на вебинаре
В 19:00 МСК в рамках нашего курса «Разработка AI-агентов» стартует вебинар «ИИ-агенты в продакшене: от хайпа к деньгам». Спикер — Полина Полунина, руководитель AI-направления в Альфа-Банке.
Будет live-демо работающего агента, реальные метрики из корпоративной среды и честный разбор архитектурных граблей — без воды и «успешного успеха».
Всем зрителям эфира дадим эксклюзивный промокод AGENTS на скидку 10 000 ₽ на любой тариф курса.
👉 Занять место на вебинаре
👍1
Algorithm_Manual.pdf
3.9 MB
The Algorithm Design Manual считается «Библией» для подготовки к собеседованиям в BigTech и незаменимым справочником для тех, кому нужно решать реальные задачи, а не просто доказывать теоремы.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
🐍 Python совет:
Один из самых частых паттернов у новичков — использование условий для проверки наличия ключа в словаре при подсчете. Это работает, но выглядит громоздко и совсем не «по-питонячьи».
❌ Как делать не стоит (многословно):
✅ Используйте `defaultdict` из модуля `collections`
Это специальный тип словаря, который сам создает дефолтное значение для ключа, если его еще нет в объекте:
Когда вы инициализируете
Преимущества:
— Никаких проверок
— Логика становится линейной и понятной с первого взгляда.
— Меньше шансов допустить ошибку в условиях или инициализации.
Если вам нужно просто посчитать элементы в итерируемом объекте, в Python есть еще более мощный инструмент —
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
if при подсчете элементовОдин из самых частых паттернов у новичков — использование условий для проверки наличия ключа в словаре при подсчете. Это работает, но выглядит громоздко и совсем не «по-питонячьи».
❌ Как делать не стоит (многословно):
counts = {}
for item in items:
if item in counts:
counts[item] += 1
else:
counts[item] = 1
✅ Используйте `defaultdict` из модуля `collections`
Это специальный тип словаря, который сам создает дефолтное значение для ключа, если его еще нет в объекте:
from collections import defaultdict
counts = defaultdict(int) # указываем тип int как дефолтный (даст 0)
for item in items:
counts[item] += 1
Когда вы инициализируете
defaultdict(int), вы говорите Python: «Если ключа нет, создай его и присвой значение, которое возвращает функция int(), то есть **0**».Преимущества:
— Никаких проверок
if item in counts.— Логика становится линейной и понятной с первого взгляда.
— Меньше шансов допустить ошибку в условиях или инициализации.
Если вам нужно просто посчитать элементы в итерируемом объекте, в Python есть еще более мощный инструмент —
Counter:
from collections import Counter
counts = Counter(items)
print(counts.most_common(3)) # Бонус: сразу получаем топ-3 элемента
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥3
Media is too big
VIEW IN TELEGRAM
🚀 Мастер-класс по Python: от «Hello World» до профи
Если вы ищете структурированный и интерактивный способ выучить Python в 2026 году, этот курс — отличная точка входа. Здесь нет «воды», только живой код и практика.
Курс разбит на логические блоки (12 модулей, 71 урок), которые ведут вас от основ к профессиональной разработке.
🔗 Ссылка на курс
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Если вы ищете структурированный и интерактивный способ выучить Python в 2026 году, этот курс — отличная точка входа. Здесь нет «воды», только живой код и практика.
Курс разбит на логические блоки (12 модулей, 71 урок), которые ведут вас от основ к профессиональной разработке.
🔗 Ссылка на курс
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🚀 Polars 1.39: новая версия
Библиотека Polars продолжает сокращать разрыв между локальной обработкой данных и полноценными хранилищами данных (Data Lakehouses).
Версия 1.39 принесла три ключевых фичи, которые сильно упростят жизнь дата-инженерам.
📈 1. Streaming AsOf Join
Функция
Теперь можно объединять огромные временные ряды (time-series), которые не помещаются в оперативную память.
Идеально для финансового анализа и данных с датчиков (IoT), где нужно сопоставить события по ближайшей метке времени.
🧊 2. Полноценный цикл с Apache Iceberg
В дополнение к чтению (`scan_iceberg`), появился
Polars теперь поддерживает полный цикл чтения/записи для архитектур Data Lakehouse на базе Iceberg.
Можно обрабатывать данные и сохранять их напрямую в аналитические таблицы без промежуточных CSV/Parquet файлов.
☁️ 3. Стриминг прямо из облака
Функции
Polars больше не нужно скачивать файл целиком из S3 или Azure Blob перед началом обработки.
Значительная экономия места на диске и ускорение «холодного» старта ваших скриптов.
🔗 Ссылка на релиз
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Библиотека Polars продолжает сокращать разрыв между локальной обработкой данных и полноценными хранилищами данных (Data Lakehouses).
Версия 1.39 принесла три ключевых фичи, которые сильно упростят жизнь дата-инженерам.
📈 1. Streaming AsOf Join
Функция
join_asof() теперь поддерживается стриминговым движком.Теперь можно объединять огромные временные ряды (time-series), которые не помещаются в оперативную память.
Идеально для финансового анализа и данных с датчиков (IoT), где нужно сопоставить события по ближайшей метке времени.
🧊 2. Полноценный цикл с Apache Iceberg
В дополнение к чтению (`scan_iceberg`), появился
sink_iceberg() для записи данных из LazyFrame.Polars теперь поддерживает полный цикл чтения/записи для архитектур Data Lakehouse на базе Iceberg.
Можно обрабатывать данные и сохранять их напрямую в аналитические таблицы без промежуточных CSV/Parquet файлов.
☁️ 3. Стриминг прямо из облака
Функции
scan_csv(), scan_ndjson() и scan_lines() теперь умеют скачивать данные потоково.Polars больше не нужно скачивать файл целиком из S3 или Azure Blob перед началом обработки.
Значительная экономия места на диске и ускорение «холодного» старта ваших скриптов.
🔗 Ссылка на релиз
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3
Самый востребованный навык в ИТ в 2026-м — навык создания ИИ-агентов
Мы полностью переработали курс «Разработка AI-агентов» под реалии 2026 года. Никакой долгой теории — с самого начала пишем код. Обучать и делиться набитыми шишками будут эксперты-практики из Газпромбанка, Альфа-Банка и других бигтехов.
В программе:
— архитектура автономных систем с тестированием, ReAct-циклами и контролем токенов;
— практическая работа с актуальными фреймворками
— настройка продвинутого RAG для парсинга документов и точного поиска;
— внедрение решений с учётом действующего законодательства (152-ФЗ);
— дипломная работа, за основу которой можно взять свой рабочий проект или задачу, которую предложим мы.
Эксперты поделятся инсайтами из реального продакшна — тем, о чём вам никогда не расскажет ни одна нейросеть.
Ах да, чуть не забыли! Дарим промокодAGENTSWEB на скидку 10 000 рублей и два курса сверху при покупке до 15 марта 🎁
→ Освоить разработку AI-агентов
Мы полностью переработали курс «Разработка AI-агентов» под реалии 2026 года. Никакой долгой теории — с самого начала пишем код. Обучать и делиться набитыми шишками будут эксперты-практики из Газпромбанка, Альфа-Банка и других бигтехов.
В программе:
— архитектура автономных систем с тестированием, ReAct-циклами и контролем токенов;
— практическая работа с актуальными фреймворками
LangGraph, AutoGen, MCP и CrewAI;— настройка продвинутого RAG для парсинга документов и точного поиска;
— внедрение решений с учётом действующего законодательства (152-ФЗ);
— дипломная работа, за основу которой можно взять свой рабочий проект или задачу, которую предложим мы.
Эксперты поделятся инсайтами из реального продакшна — тем, о чём вам никогда не расскажет ни одна нейросеть.
Запись первого открытого вебинара, на котором мы вместе с руководителем AI-направления в Альфа-Банке Полиной Полуниной пилили агента в прямом эфире.
Ах да, чуть не забыли! Дарим промокод
→ Освоить разработку AI-агентов
🛠 PEP 810: эволюция импортов в Python
История внедрения
📉 Почему PEP 690 (первая попытка) провалился
В 2022 году Meta предложила радикальный подход: флаг
— Фрагментация: Это создало бы «два разных Python», где библиотеки вели бы себя по-разному.
— Скрытые сайд-эффекты: Огромное количество legacy-кода завязано на логике, которая выполняется строго в момент импорта.
— Сложность отладки: Ошибки инициализации могли «всплывать» в самых неожиданных местах рантайма.
🚀 Почему PEP 810 (текущий) — это победа
Дизайн был полностью переосмыслен. Вместо неявного глобального флага мы получили явный синтаксический сахар:
1. Явность (Opt-in): Вводится новое «мягкое» ключевое слово
2. Прокси-объекты вместо магии диктов: В PEP 690 предлагалось менять внутреннее устройство
3. Производительность: Результаты Meta (Cinder) и Hudson River Trading подтверждают: время старта CLI-инструментов сокращается до 70%, а потребление памяти — до 40%.
⚠️ Технические нюансы и ограничения
Как и у любого мощного инструмента, у
— Wildcard запрещены: Конструкция
— Deferred Errors:
— Thread Safety: Python сохраняет глобальную блокировку импорта (`import lock`), но теперь импорт может произойти в любом потоке, который первым коснулся «ленивой» переменной.
🔗 Ссылка на статью
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
История внедрения
lazy import — это не просто рассказ о новой фиче, а настоящий мастер-класс по тому, как сообщество Python умеет работать над ошибками и находить баланс между производительностью и стабильностью.📉 Почему PEP 690 (первая попытка) провалился
В 2022 году Meta предложила радикальный подход: флаг
-L, делающий все импорты ленивыми по умолчанию. Управляющий совет (Steering Council) наложил вето по веским причинам:— Фрагментация: Это создало бы «два разных Python», где библиотеки вели бы себя по-разному.
— Скрытые сайд-эффекты: Огромное количество legacy-кода завязано на логике, которая выполняется строго в момент импорта.
— Сложность отладки: Ошибки инициализации могли «всплывать» в самых неожиданных местах рантайма.
🚀 Почему PEP 810 (текущий) — это победа
Дизайн был полностью переосмыслен. Вместо неявного глобального флага мы получили явный синтаксический сахар:
1. Явность (Opt-in): Вводится новое «мягкое» ключевое слово
lazy. Вы сами помечаете тяжелые зависимости, которые не нужны при старте.
# Python 3.15+
lazy import torch
lazy from matplotlib import pyplot as plt
2. Прокси-объекты вместо магии диктов: В PEP 690 предлагалось менять внутреннее устройство
dict. PEP 810 изящнее — он создает легкий прокси-объект. Реальный импорт триггерится только в момент первого обращения к атрибуту объекта.3. Производительность: Результаты Meta (Cinder) и Hudson River Trading подтверждают: время старта CLI-инструментов сокращается до 70%, а потребление памяти — до 40%.
⚠️ Технические нюансы и ограничения
Как и у любого мощного инструмента, у
lazy import есть свои «но»:— Wildcard запрещены: Конструкция
lazy from module import * вызовет SyntaxError, так как интерпретатору нужно знать список имен заранее.— Deferred Errors:
ModuleNotFoundError теперь вылетит не в начале скрипта, а в строке, где вы впервые вызвали torch.save(). Это нужно учитывать при написании долгоживущих сервисов.— Thread Safety: Python сохраняет глобальную блокировку импорта (`import lock`), но теперь импорт может произойти в любом потоке, который первым коснулся «ленивой» переменной.
🔗 Ссылка на статью
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1🤩1