по всем вопросам @haarrp @itchannels_telegram - 🔥 best it channels @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - ml 📚 @pythonlbooks -📚books
🖥 systemd-pilot — это десктопное приложение для управления сервисами systemd на GNU/Linux системах!
🌟 По сути, это графический интерфейс для команд systemctl. Он позволяет просматривать и управлять системными сервисами, быстро развертывать новые сервисы, а также запускать, останавливать и перезапускать их. Приложение легковесное и использует всего один Python-скрипт. Также предусмотрена поддержка поиска сервисов по имени.
🔐 Лицензия: GPL-3.0
🖥 Github
@pythonl
🐍 Задача с подвохом: Декораторы и мутабельные ловушки
Условие:
Что выведет следующий код и почему?
def memoize(fn):
cache = {}
def wrapper(arg):
if arg in cache:
print("Из кэша")
return cache[arg]
else:
result = fn(arg)
cache[arg] = result
return result
return wrapper
@memoize
def add_to_list(val, lst=[]):
lst.append(val)
return lst
res1 = add_to_list(1)
res2 = add_to_list(2)
res3 = add_to_list(1)
print(res1)
print(res2)
print(res3)
add_to_list(1)
вернёт [1]
add_to_list(2)
вернёт [2]
add_to_list(1)
снова вызовет функцию (или достанет из кэша)lst=[]
создаётся один раз при определении функции. Все вызовы без передачи списка будут использовать один и тот же список.memoize
кэширует результат по ключу arg
. Но функция возвращает список, который изменяется при каждом вызове. Даже если кэш сработает, вы получите тот же объект списка, который менялся между вызовами!🖥 История развития Python (1989 – 2025)
1989-12 — Гвидо ван Россум, работая в CWI (Нидерланды), начинает писать новый язык как «лучший ABC».
1991-02 — Публикация Python 0.9.0 в alt.sources
; уже есть классы, исключения и базовые коллекции.
1994-01-26 — Выходит Python 1.0.0: добавлены lambda
, map
, filter
, reduce
.
1994-02 — Создана группа новостей comp.lang.python
, вокруг которой формируется сообщество.
2000-10-16 — Python 2.0: list-comprehensions, сборщик циклического мусора, первая реализация Unicode.
2003-07-29 — Python 2.3: внедрён сортировщик Timsort.
2008-12-03 — Python 3.0 («Py3k»): переход на новый str`/`bytes
, print()
как функция, разделённый range
.
2010-07-03 — Python 2.7: «долгожитель», поддержка продлена до 2020-01-01.
2015-09-13 — Python 3.5: появляется синтаксис async
/ await
.
2018-07-12 — Гвидо объявляет о выходе с поста BDFL после споров вокруг оператора «морж» :=
.
2019-10-14 — Python 3.8: тот самый оператор :=
, позиционные-только аргументы /
и улучшенный typing
.
2020-01-01 — Официальный End-of-Life ветки 2.x.
2021-10-04 — Python 3.10: структурное сопоставление match/case
.
2023-10-02 — Python 3.12: заметное ускорение интерпретатора (до +25 %), префиксные f-строки.
2024-10-07 — Python 3.13.0: экспериментальная сборка Free-Threaded CPython без GIL (PEP 703).
2025-04-08 — Python 3.13.3 (текущая стабильная версия).
2025-10 (ожидается) — Python 3.14: дальнейшая стабилизация «без-GIL»-сборки, новый `buffer`-API.
---
### Интересные факты
- Название появилось благодаря юмористическому шоу *Monty Python’s Flying Circus*; отсюда мемы «spam / eggs».
- Команда import this
выводит Zen of Python — 19 однострочных принципов языка (PEP 20).
- Пасхалка import antigravity
открывает комикс xkcd #353; from __future__ import braces
выдаёт SyntaxError: not a chance
.
- Timsort, написанный для Python 2.3, позже стал дефолтным алгоритмом сортировки в Java 7, Android, Swift и Rust.
- PEP 703 позволяет собирать CPython без GIL, открывая путь к настоящему многопоточному Python без радикального «Python 4».
- В апреле 2025 Python обновил рекорд индекса TIOBE, превысив 25 % и почти втрое обогнав C++.
- Гвидо носил титул BDFL (Benevolent Dictator For Life) почти 30 лет; c 2023 г. он возвращён как *BDFL-Emeritus*.
- PyPI (Python Package Index) превысил 500 000 пакетов, а pip install
скачивается около 40 млрд раз в месяц (апрель 2025).
- import __hello__
просто печатает *Hello world!* — напоминание, что «явное лучше неявного».
> Итог: за три с лишним десятилетия Python превратился из рождественского хобби-проекта в язык № 1, оставаясь при этом дружелюбным и легко читаемым .
https://www.youtube.com/shorts/ZDMz1foKKlM?feature=share
@pythonl
👩💻 datasketch — Python-библиотека, содержащая реализации вероятностных структур данных, которые используются для оптимизации работы с большими объемами данных!
🌟 Среди основных возможностей — оценка схожести Jaccard с помощью MinHash и его взвешенной версии, а также оценка кардинальности множества с помощью HyperLogLog и HyperLogLog++. Эти структуры данных позволяют выполнять операции, такие как поиск схожих элементов или подсчет уникальных объектов, быстро и с минимальными затратами памяти.
🔐 Лицензия: MIT
🖥 Github
@pythonl
✍️ novelWriter — минималистичный редактор для писателей с поддержкой Markdown. Проект использует облегченный синтаксис на основе Markdown и сохраняет все данные в виде обычных текстовых файлов, что делает его идеальным для работы с системами контроля версий.
Инструмент делает акцент на простоте и надежности. Вместо проприетарных форматов он использует чистый текст с метаданными в JSON. Редактор написан на Python с использованием Qt6 и доступен для всех основных ОС. При этом проект остается полностью открытым и принимает contributions, особенно в части переводов через Crowdin.
🤖 GitHub
@pythonl
👣 Pyrefly — это новая, высокопроизводительная система статической типизации и IDE-платформа, написанная на Rust, для Python, разрабатываемая командой Facebook.
Главное:
🔍 Наследник Pyre
Pyrefly задуман как следующая версия проверяльщика типов Pyre от Meta, но с упором на скорость, модульную архитектуру и возможность генерации «типизированного» AST.
🚀 Реализовано на Rust
Большая часть кода написана на Rust для лучшей безопасности памяти и конкурентности. Только ~1 % кода в Python и ~6 % в TypeScript (для интерфейса сайта и LSP).
⚙️ Три этапа проверки
Сбор экспорта каждого модуля (решение всех import * рекурсивно)
Преобразование кода в набор «байндингов» (definitions, uses, anon) с учётом потоковых типов
Решение этих байндингов (flow-types, phi-функции при ветвлениях и рекурсии)
💡 Масштабируемость и инкрементальность
Модульно-ориентированный подход: проверка каждого модуля целиком, с возможностью параллельного запуска и минимальной сложности по сравнению с тонкозернистыми DAG-алгоритмами.
🛠️ Интеграция и упаковка
Разработчикам Rust: cargo build, cargo test
Во внутренних проектах Meta: запуск через Buck2 (buck2 run pyrefly -- check file.py)
Для PyPI: сборка колес через Maturin (pip install maturin && maturin build)
📡 IDE-функции и LSP
Включена поддержка Language Server Protocol для автодополнения, перехода к определению и интерактивной отладки в редакторах.
📆 Планы
Полная замена Pyre к концу 2025 года с выпуском стабильных версий на PyPI каждую неделю.
📜 Лицензия
MIT — свободное использование и вклад в проект приветствуются.
🔜 Узнать подробнее и принять участие можно в репозитории: Github
@pythonl
🖥 TUIFIManager
Это кроссплатформенный терминальный termux-ориентированный файловый менеджер, предназначенный для использования с проектом Uni-Curses
📌 Как использовать:
Запустите tuifi в терминале, или импортируйте его в один из ваших проектов Uni-Curses как компонент, например:from TUIFIManager import *
Установка
sudo pip3 install tuifimanager --upgrade
pip3 install TUIFIManager --upgrade
https://github.com/GiorgosXou/TUIFIManager
@pythonl
🖥 PyXL — аппаратный процессор, исполняющий Python без интерпретатора
Разработчик представил PyXL — уникальный аппаратный процессор, который исполняет Python-программы без использования традиционного интерпретатора или виртуальной машины.
Архитектура PyXL:
Python → CPython Bytecode → собственный набор инструкций для прямого исполнения на "железе".
Основан на стековой модели, полностью конвейерный, с сохранением динамической типизации Python без ограничений статических типов.
⏩ Бенчмарк GPIO:
PyXL выполняет переключение GPIO с задержкой всего 480 наносекунд.
Для сравнения: MicroPython на Pyboard — 14–25 микросекунд, несмотря на более высокую частоту (168МГц против 100МГц у PyXL).
Разработчик самостоятельно создал:
Компилятор, линкер и генератор кода
Аппаратную реализацию процессора
Проект демонстрирует, что возможно аппаратное исполнение Python с высокой скоростью и без потери гибкости языка. Полные технические детали будут представлены на PyCon 2025.
🎬 Демо и подробности: https://runpyxl.com/gpio
@pythonl
Хочешь понять, твое ли аналитика — без курсов, затрат и лишнего стресса?
🔍 Пройди кейс-тест на реальной бизнес-задаче — всё, как в работе настоящего аналитика, но без необходимости иметь профильные навыки. Только мышление, логика и внимательность.
⚡️ Всего 10 конкретных вопросов — от постановки цели до финальных выводов. За 60 минут: — получишь реальные вводные от "коллег",
— прокачаешь структурное мышление,
— поймешь, насколько тебе подходит аналитика,
— получишь обратную связь на каждый шаг.
🔥 Это бесплатный шанс примерить новую профессию — вдруг это именно твое?
👉 Нажми, чтобы начать тест прямо сейчас
🖥 Задача: "Кэширование и ленивые вычисления в многопоточном окружении"
🔜 Условие:
Вам нужно реализовать декоратор @thread_safe_cached
, который:
- Кэширует результат вызова функции по её аргументам (аналог functools.lru_cache
, но свой).
- Если несколько потоков одновременно вызывают функцию с одинаковыми аргументами:
- Только один поток реально выполняет функцию,
- Остальные ждут, пока результат будет вычислен, и получают готовый результат.
- Кэш никогда не удаляется (неограниченный размер).
Ограничения:
- Решение должно работать для произвольных функций и аргументов (hashable).
- Нельзя использовать готовый functools.lru_cache
или другие библиотеки кэширования.
- Нужно обеспечить корректную работу в многопоточной среде без гонок данных.
---
▪️ Подсказки:
- Для кэширования подойдёт dict
с ключами по аргументам (`*args`, `**kwargs`).
- Для защиты доступа к кэшу понадобится threading.Lock
.
- Для ожидания завершения вычисления другими потоками можно использовать threading.Event
.
- Продумайте carefully: как отличить "результат уже посчитан" от "результат в процессе вычисления".
---
▪️ Что оценивается:
- Умение работать с многопоточностью в Python.
- Правильная организация кэширования.
- Чистота и лаконичность кода.
- Умение обрабатывать тонкие случаи, например: одновременные вызовы.
---
▪️ Разбор возможного решения:
Основная идея:
- Создать кэш cache: Dict[Key, Result]
.
- Одновременно создать словарь "ожиданий" in_progress: Dict[Key, threading.Event]
.
- Если кто-то начал считать значение:
- Остальные ждут Event
, пока оно не будет установлено.
Пример реализации:
import threading
import functools
def thread_safe_cached(func):
cache = {}
in_progress = {}
lock = threading.Lock()
@functools.wraps(func)
def wrapper(*args, **kwargs):
key = (args, frozenset(kwargs.items()))
with lock:
if key in cache:
return cache[key]
if key not in in_progress:
in_progress[key] = threading.Event()
in_progress[key].clear()
creator = True
else:
creator = False
if creator:
try:
result = func(*args, **kwargs)
with lock:
cache[key] = result
finally:
in_progress[key].set()
with lock:
del in_progress[key]
return result
else:
in_progress[key].wait()
with lock:
return cache[key]
return wrapper
Event
и начинает считать результат.Event
и вызывают wait()
, пока первый поток не установит set()
.Event
сигнализирует всем ждущим потокам, что данные готовы.cache
и in_progress
защищён через lock
для избежания гонок.Event
из in_progress
, кэш постепенно раздуется мусором.func
, необходимо всё равно освободить Event
, иначе потоки будут вечно ждать.lock
во время выполнения тяжёлой функции func
, иначе все потоки будут блокироваться.func
иногда бросает исключения? Как кэшировать ошибки или не кэшировать их?👾 FlexGet — инструмент, превращающий рутинные задачи в автоматизированные workflows: от скачивания сериалов по RSS до организации медиатеки.
Особенно удобна модульная архитектура проекта. Базовый функционал составляет 150+ плагинов для интеграции с qBittorrent, Plex и другими сервисами. При этом вся логика описывается с помощью декларирования.
🤖 GitHub
@pythonl
🖥 PDF Craft — библиотека на Python для конвертации PDF (в первую очередь сканированных книг) в Markdown и EPUB с использованием локальных AI-моделей и LLM для структурирования содержимого
GitHub
🌟 Основные возможности
- Извлечение текста и макета
Использует сочетание DocLayout-YOLO и собственных алгоритмов для детектирования и фильтрации заголовков, колонтитулов, сносок и номеров страниц
- Локальный OCR
Распознаёт текст на странице через OnnxOCR, поддерживает ускорение на GPU (CUDA)
- Определение порядка чтения
С помощью layoutreader строит поток текста в том порядке, в котором его воспринимает человек
- Конвертация в Markdown
Генерирует .md с относительными ссылками на изображения (иллюстрации, таблицы, формулы) в папке assets
- Конвертация в EPUB
На основе промежуточных результатов OCR передаёт данные в LLM (рекомендуется DeepSeek) для построения оглавления, глав, корректировки ошибок и включения аннотаций
Установка и требования
Python ≥ 3.10 (рекомендуется 3.10.16).pip install pdf-craft и pip install onnxruntime==1.21.0 (или onnxruntime-gpu==1.21.0 для CUDA).
Для EPUB-конвейера нужен доступ к LLM-сервису (например, DeepSeek).
🟡 Github
@pythonl
Zev 🔍
Это помощник для работы с терминалом на естественном языке.
Он помогает быстро находить нужные команды и сохранять их в избранное, а его простой и понятный интерфейс делает освоение терминала доступным даже для новичков.pip install zev
📌 Github
@pythonl
🖥 Новинка в Python 3.14: t-строки — типобезопасные f-строки
Python 3.14 вводит t"..." — новый синтаксис для строк, ориентированных на безопасность типов и интеграцию с системами шаблонов, SQL, HTML и др.
🔹 Что такое t-строка?
t"..." — это как f"...", но:
- интерполяция ограничена и контролируема;
- поддерживается строгое соответствие шаблону;
- можно передавать переменные явно, предотвращая SQL-инъекции и XSS.
🔸 Пример:
name = "Alice"
greeting = t"Hello, {name}!" # t-строка
Вместо немедленной подстановки, как в f"...", t"..." создает шаблон с выражениями как параметрами.
def html(template: T[str]) -> SafeHTML:
...
html(t"<div>{user_input}</div>")
f"SELECT * FROM users WHERE name = '{user_name}'"
может привести к SQL-инъекциям и XSS.
t-строки — безопасная альтернатива с встроенной защитой.
template = t"<p>{user_input}</p>"
html_output = html(template)
# <p><script>alert('bad')</script></p>
template = t"Hello {name}!"
template.strings # ("Hello ", "!")
template.values # (name,)
template.interpolations[0].format_spec # ">8"
Template("Hello ", Interpolation(value="World", expression="name"), "!")
Уже разбираетесь в Python, но хотите большего? Тогда вам на PiterPy 2025
🗓️16–17 мая
📍 Питер + онлайн
PiterPy — конференция для всех, кто использует Python в работе. Здесь собираются бэкенд-разработчики, тестировщики, DevOps, дата- и ML-инженеры и аналитики, а также тимлиды.
Перед вами выступят спикеры из Яндекса, Т-Банка, Точки, Авито, Ozon и других известных компаний. Вас ждет два дня докладов про бэкенд и архитектуру, библиотеки и инструменты, практики разработки и Core Python, а еще мастер-класс по программированию роботов.
А вот что с билетами:
→ Дают скидку 15% на билет для частных лиц по промокоду DJANGO
;
→ Есть билет для студентов и преподавателей вузов — в два раза дешевле персонального;
→ Можно попросить руководство приобрести вам корпоративный билет.
Бонус: в соседних залах пройдет ML-конференция IML. Участники PiterPy смогут послушать доклады IML бесплатно.
За подробностями и билетами
🖥 Шпаргалка по RegEx в Python
📦 Импорт:
import re
re
re.search(pattern, string) # Ищет первое совпадение (где угодно в строке)
re.match(pattern, string) # Ищет совпадение только в начале строки
re.fullmatch(pattern, string) # Проверяет, соответствует ли вся строка шаблону
re.findall(pattern, string) # Возвращает все совпадения в виде списка
re.finditer(pattern, string) # То же, но как итератор Match-объектов
re.sub(pattern, repl, string) # Замена по шаблону
re.split(pattern, string) # Разбиение строки по шаблону
.
| Любой символ, кроме \n
|^
| Начало строки |$
| Конец строки |*
| 0 или больше повторений |+
| 1 или больше |?
| 0 или 1 повторение |{n}
| ровно n раз |{n,}
| n или больше |{n,m}
| от n до m |[]
| Символьный класс |[^]
| Отрицание символьного класса ||
| Или (`a|b`) |()
| Группа (захват) |\
| Экранирование спецсимвола |
re.search(r'\d+', 'ID=12345') # Найдёт '12345' (одно или больше цифр)
re.match(r'^\w+$', 'hello_world') # Вся строка — только буквы/цифры/_
re.findall(r'[A-Z][a-z]+', 'Mr. Smith and Dr. Brown') # ['Smith', 'Brown']
re.sub(r'\s+', '-', 'a b c') # 'a-b-c'
re.split(r'[;,\s]\s*', 'one, two;three four') # ['one', 'two', 'three', 'four']
text = 'Name: John, Age: 30'
match = re.search(r'Name: (\w+), Age: (\d+)', text)
if match:
print(match.group(1)) # John
print(match.group(2)) # 30
pattern = r'(?P<name>\w+): (?P<value>\d+)'
match = re.search(pattern, 'score: 42')
match.group('name') # 'score'
match.group('value') # '42'
pattern = r'\b(?:https?://)?(www\.)?\w+\.\w+\b'
text = 'Visit https://example.com or www.test.org'
re.findall(pattern, text) # [['www.'], ['www.']]
r''
перед шаблоном, чтобы не экранировать \
re.compile(pattern)
ускоряет повторное использование re.match
— чаще нужен re.search
re.sub
с лямбдами, заменами и функциями внутри, ставь лайк 👍📡 FISSURE — фреймворк для анализа и реверс-инжиниринга радиосигналов.
Этот open-source проект объединяет инструменты для работы с RF-сигналами: от обнаружения и классификации до атак и автоматизированного тестирования.
Инструмент поддерживает популярное SDR-оборудование и возможность развертывания распределённых сенсорных узлов для задач радиомониторинга. Проект активно развивается, в 2024 году добавили Z-Wave-анализ и автоматические триггеры для атак.
🤖 GitHub
@pythonl
🛠 Werkzeug — набор утилит для WSGI-приложений на Python
Пока все говорят о Flask, его мозги — библиотека Werkzeug, остается в тени. Этот инструмент уровня middleware лежит в основе многих Python-фреймворков, предоставляя базовые механизмы работы с HTTP-запросами, маршрутизацией и сессиями без навязывания архитектуры.
В Werkzeug нет ORM или шаблонизатора, но зато есть:
▪️Интерактивный дебаггер с REPL прямо в браузере
▪️Гибкая система роутинга (которую позже заимствовал Flask)
▪️WSGI-сервер для разработки с горячей перезагрузкой
🤖 GitHub
@pythonl
🔐 Что такое DES - шифрование и как работает?
💡 DES (Data Encryption Standard)
DES — симметричный алгоритм шифрования, разработанный в 1970-х. Он использует один и тот же ключ для шифрования и дешифрования, поэтому ключ нужно хранить в секрете.
Длина ключа: 56 бит
Блоки данных: 64 бита
Основан на 16 раундах перестановок и подстановок
Хотя DES считается устаревшим из-за своей уязвимости (его можно взломать брутфорсом за считанные часы), он до сих пор используется в учебных целях и в некоторых устаревших системах.
🐍 Пример использования DES на Python
Для работы с DES в Python можно использовать библиотеку PyCryptodome.
Пример простого шифрования текста:
from Crypto.Cipher import DES
from Crypto.Util.Padding import pad, unpad
# Ключ должен быть ровно 8 байт
key = b'8bytekey'
cipher = DES.new(key, DES.MODE_ECB)
data = b'HelloWorld123' # Длина должна быть кратной 8, иначе нужно дополнить
padded_data = pad(data, 8 )
encrypted = cipher.encrypt(padded_data)
print("Зашифрованные данные:", encrypted)
# Дешифрование
decrypted = unpad(cipher.decrypt(encrypted), 8 )
print("Расшифрованные данные:", decrypted)
🚀 Jittor — фреймворк, использующий JIT-компиляцию и мета-операторы для оптимизации вычислений прямо во время выполнения.
Проект сочетает простоту Python-интерфейса с низкоуровневой компиляцией на C++/CUDA. В отличие от традиционных графовых подходов, он динамически компилирует операции под конкретную модель, что потенциально может ускорить выполнение сложных сетей.
🤖 GitHub
@pythonl
🖥 Задача (с подвохом). Что выведет этот код?
def extend_list(val, lst=[]):
lst.append(val)
return lst
# Первый вызов: используем список по умолчанию
list1 = extend_list(10)
# Второй вызов: передаём новый пустой список
list2 = extend_list(123, [])
# Третий вызов: снова используем список по умолчанию
list3 = extend_list('a')
print('list1 =', list1)
print('list2 =', list2)
print('list3 =', list3)
lst
→ используется тот же дефолтный список, куда уже был добавлен 10.list1 и list3
— это один и тот же дефолтный список, поэтому изменения сохраняются между вызовами.🖥 Microsoft: до 30 % кода уже пишет AI
На конференции LlamaCon CEO Microsoft Сатья Наделла объявил, что от 20 % до 30 % кода в репозиториях компании сегодня «написаны программным обеспечением», то есть с использованием искусственного интеллекта.
## Ключевые моменты
- Зависимость от языка. Лучшие результаты при генерации — на Python, более слабые — на C++.
- Интеграция на всех этапах. AI применяется не только для генерации чернового кода, но и для его ревью.
- Сравнение с конкурентами. Google уже сообщает о более 30 % AI-сгенерированного кода, Meta прогнозирует до 50 % при разработке своих языковых моделей.
- Долгосрочная перспектива. По прогнозам CTO Microsoft, к 2030 г. доля AI-генерируемого кода может вырасти до 95 %.
- Ограничения метрик. Пока не до конца ясно, что именно учитывается в «AI-коде» (автодополнение, шаблоны, бизнес-логика), поэтому цифры стоит воспринимать с осторожностью.
## Почему это важно
1. Ускорение разработки. Рутинные задачи автоматизируются, разработчики получают больше времени на архитектуру.
2. Новый уровень качества. Автоматическое ревью помогает быстрее находить ошибки, но требует строгой проверки.
3. Риски безопасности. Сгенерированный код нуждается в дополнительном анализе на уязвимости.
4. Эволюция ролей. Разработчики всё больше становятся архитекторами и аудиторами, а не «создателями» кода.
@pythonl
Что выведет этот код при запуске на Python 3.10+ (например, 3.11)?
📌 Подсказка: Подумайте о порядке проверок, о том, какие атрибуты попадают в others, и об использовании __match_args__.
Ответ:
Automatic mode
Mode manual, other keys: ['threshold', 'debug']
Low threshold 0
Краткое пояснение:
Для первого объекта (mode="auto", threshold=10) срабатывает первый case Config(mode="auto") → Automatic mode.
Для второго (mode="manual", threshold=5, debug=True) первый не совпадает, второй с threshold<5 не проходит (5 < 5 → False), зато третий case Config(mode=mode, **others) — биндинг mode='manual', остальные ключи (threshold и debug) попадают в others → Mode manual, other keys: ['threshold', 'debug'].
Для третьего (threshold=0) первый и третий не подходят (нет mode), а второй — case Config(threshold=threshold) if threshold<5 — срабатывает (0<5) → Low threshold 0.
@pythonl
⚡️ snnTorch — нейросети, которые работают как мозг. Этот проект предлагает необычный подход к машинному обучению, используя импульсные нейронные сети вместо классических искусственных нейронов.
Инструмент передает информацию через импульсы, что ближе к принципам работы биологического мозга. Библиотека построена на PyTorch и позволяет обучать такие сети с помощью обратного распространения ошибки, используя специальные суррогатные градиенты.
🤖 GitHub
@pythonl
🔹 1000 гайдов для разработчиков в одном репозитории!
Разработчик из Твиттера собирал этот настоящий кладезь знаний целых 10 лет.
Внутри — буквально всё:
от шпаргалок по горячим клавишам для ускорения работы до фундаментальных руководств по языкам программирования, веб-разработке, созданию ПО, сетям, безопасности и многому другому.
Что там есть:
📚 Инструменты для работы с CLI, GUI, вебом и локальными сетями.
📦 Списки всех актуальных фреймворков и библиотек 2025 года.
🛡 Гайды по тестированию и взлому приложений.
🔥 Шпаргалки по командной строке.
📰 Огромная подборка блогов, YouTube-каналов, онлайн-СМИ и журналов, чтобы быть в курсе и не терять хватку.
Фолиант знаний ждёт тебя!
📌 Github
@pythonl
Твой Senior зарабатывает 800к не потому, что он умнее тебя!
Если ты:
– мучаешься от синдрома самозванца
– устал от токсичности в IT
– не понимаешь, как пройти собеседование в топовые компании
– думаешь «я не дорос/туповат/не готов» (спойлер: это не так!)
…тебе нужно на островок поддержки в мире IT.
Это канал Глеба Михайлова, который прошел путь от тупящего на собесах аналитика до дата саентиста, который поддерживает, вдохновляет и помогает другим процветать в суровой и токсичной IT-индустрии.
Здесь ты найдешь:
– разбор реальных задач с технических собесов (без занудства)
– рабочие советы по подготовке от человека, который работал в Сбере, Альфа-Банке и Яндексе
– инсайты про то, как пройти собеседования в топовых компаниях
– занимательные истории из корпоративной жизни, после которых ты поймешь, что везде работают обычные люди.
Подписывайся на канал, если хочешь расти в IT без токсичности, занудства и пафоса.
Реклама
Пропал опытный разработчик!
Нашедшему просьба обратиться в Ozon Tech.
Вознаграждение за рекомендацию 150 000 ₽ гарантируют.
Особые приметы, требования, условия на этой странице ⬅️
❓ Как повысить свои навыки в аналитике данных за 90 минут?
Прийти на бесплатный практический урок 28 апреля, где мы расскажем, как эффективно работать с данными с помощью Python и Pandas: как заполнять пропуски, устранять дубликаты и правильно работать с выбросами.
👥 Кому будет полезен вебинар?
- тем, кто только начинает свой путь в Data Science и хочет освоить базовые навыки
- тем, кто работает с данными в электронных таблицах, но хочет перейти на Python и Pandas
- тем, кто сталкивался с ошибками при анализе из-за «мусора» в данных
- тем, кто планирует изучать машинное обучение (ML), где чистота данных критически важна
📍 Зарегистрируйтесь и получите скидку на большое обучение «Специализация Machine Learning»: https://otus.pw/UkAO/?erid=2W5zFG6E7sW
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🖥 Groovy — это транспилер, преобразующий функции Python в их эквиваленты на JavaScript!
🌟 Он используется в библиотеке Gradio, позволяя разработчикам писать функции на Python, которые затем выполняются на стороне клиента как JavaScript, обеспечивая быструю работу. Groovy поддерживает подмножество стандартной библиотеки Python и некоторые специфические классы Gradio, с акцентом на подробное сообщение об ошибках при попытке транспиляции неподдерживаемого кода.
🔐 Лицензия: Apache-2.0
🖥 Github
@pythonl
🖥 ex — это утилита для создания одного исполняемого файла .pex, внутри которого содержится вся ваша программа на Python и её зависимости. По сути это самодостаточная, переносимая среда выполнения, похожая на virtualenv, но упакованная в один файл.
Зачем это нужно?
Простота развёртывания: чтобы установить и запустить приложение, достаточно скопировать файл app.pex и запустить его — никакой дополнительной настройки.
Портируемость: один файл может включать сборки для разных платформ (Linux, macOS).
Изоляция зависимостей: все библиотеки (включая C‑расширения) уже внутри, конфликтов версий нет.
Как пользоваться:
Устанавливаем сам инструмент:pip install pex
Собираем .pex-файл:pex requests -o fetch.pex --script=requests
После этого fetch.pex — готовый исполняемый файл, который при запуске сразу импортирует и запускает библиотеку requests.
Интеграция с другими сборщиками:
Системы вроде Pants, Buck и {py}gradle
умеют автоматически собирать .pex-архивы из вашего кода.
Лицензия: Apache 2.0
▪ GitHub: https://github.com/pex-tool/pex
▪Документация: https://docs.pex-tool.org/
@pythonl