Практики, которые раздражают других инженеров данных
Отсутствие аннотаций типов — это неуважение к себе и к другим, кто использует ваши пайплайны. Код, который вы пишете, не только для выполнения, но и для коммуникации.
В инженерии данных аннотации типов служат контрактом между шагами пайплайна, чётко определяя, какой тип данных функция ожидает и какой тип данных она вернёт. Это делает пайплайны более предсказуемыми и проще для отладки, так как каждая функция заранее сообщает свои требования.
Это выглядит нормально, но...
Это не говорит, что такое
Вот так будет лучше:
Чёткая коммуникация с самого начала. Каждый, кто увидит эту функцию, точно будет знать, что ожидать. Вот что значит чёткая коммуникация. Аннотации типов — в помощь
👉 @PythonPortal
Отсутствие аннотаций типов — это неуважение к себе и к другим, кто использует ваши пайплайны. Код, который вы пишете, не только для выполнения, но и для коммуникации.
В инженерии данных аннотации типов служат контрактом между шагами пайплайна, чётко определяя, какой тип данных функция ожидает и какой тип данных она вернёт. Это делает пайплайны более предсказуемыми и проще для отладки, так как каждая функция заранее сообщает свои требования.
Это выглядит нормально, но...
def enrich_user_names(df, user_lookup=None):
pass
Это не говорит, что такое
df, какого типа user_lookup, или что функция должна вернуть. Теперь представьте, что это часть производственного пайплайна с 10+ участниками. Такая неопределённость становится багом.Вот так будет лучше:
def enrich_user_names(
df: pd.DataFrame,
user_lookup: Optional[Dict[int, str]] = None
) -> pd.DataFrame:
pass
Чёткая коммуникация с самого начала. Каждый, кто увидит эту функцию, точно будет знать, что ожидать. Вот что значит чёткая коммуникация. Аннотации типов — в помощь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👀3🤯2
Когда вам когда-либо нужно было добавить математическое описание для вашей функции на Python, но вы обнаруживали, что это занимает слишком много времени?
Непрограммисты не могут легко читать логику Python. Однако вручную конвертировать её в LaTeX — это медленно, и быстро становится устаревшим по мере изменения кода.
latexify_py решает эту проблему с помощью одного декоратора, генерируя LaTeX прямо из вашей функции, чтобы математика оставалась читаемой и всегда синхронизированной с кодом.
Основные возможности:
• Три декоратора для разных выводов: выражения, полные уравнения или псевдокод
• Отображает отрендеренный LaTeX прямо в ячейках Jupyter
• Функции продолжают работать нормально при вызове
Кроме того, latexify_py — это open source. Установите с помощью "
Статья о 3 инструментах, которые конвертируют код Python в LaTeX: https://bit.ly/3Pw89yP
Запустите этот код: https://bit.ly/4bW2ycE
👉 @PythonPortal
Непрограммисты не могут легко читать логику Python. Однако вручную конвертировать её в LaTeX — это медленно, и быстро становится устаревшим по мере изменения кода.
latexify_py решает эту проблему с помощью одного декоратора, генерируя LaTeX прямо из вашей функции, чтобы математика оставалась читаемой и всегда синхронизированной с кодом.
Основные возможности:
• Три декоратора для разных выводов: выражения, полные уравнения или псевдокод
• Отображает отрендеренный LaTeX прямо в ячейках Jupyter
• Функции продолжают работать нормально при вызове
Кроме того, latexify_py — это open source. Установите с помощью "
pip install latexify-py".Статья о 3 инструментах, которые конвертируют код Python в LaTeX: https://bit.ly/3Pw89yP
Запустите этот код: https://bit.ly/4bW2ycE
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍3
Люди и агенты писали бы код лучше, если бы можно было легко проверить, какие значения переменные обычно принимают в продакшене.
Хотя подобные подходы уже встречались (в каком-то смысле ещё со времён Smalltalk), Darklang выделяется как заметный пример: у каждой функции есть примеры прошлых HTTP-запросов, и можно увидеть, как реальные данные проходят через неё.
Ещё в 2018 году я немного исследовал похожую идею: что если можно кликнуть на любую функцию в коде и увидеть примеры прошлых входных и выходных данных?
Удалось трассировать/записывать произвольные программы на Ruby (очень медленно) благодаря гибкости интерпретатора Ruby. Можно было даже записать выполнение тестов и затем использовать это как примеры данных при чтении кода.
https://geoffreylitt.com/margin-notes/
Есть серьёзные сложности, чтобы сделать это реально рабочим. Записывать большой объём детального runtime-состояния — сложно и дорого по ресурсам. А удобно показывать это состояние прямо в редакторах кода исторически тоже было непросто (хотя сейчас, с агентами, ситуация быстро меняется — в чём-то становится проще).
В целом же runtime-состояние до сих пор сильно недоиспользуется в интерфейсах разработки, а агрегированные данные из продакшена — тем более. Людям и агентам гораздо полезнее видеть конкретные данные, а не только абстрактную логику.
Чёрт возьми, у нас уже есть AI — почему бы не предсказывать, как будут меняться переменные, исходя из контекста всей организации, а не только кодовой базы😭
👉 @PythonPortal
Хотя подобные подходы уже встречались (в каком-то смысле ещё со времён Smalltalk), Darklang выделяется как заметный пример: у каждой функции есть примеры прошлых HTTP-запросов, и можно увидеть, как реальные данные проходят через неё.
Ещё в 2018 году я немного исследовал похожую идею: что если можно кликнуть на любую функцию в коде и увидеть примеры прошлых входных и выходных данных?
Удалось трассировать/записывать произвольные программы на Ruby (очень медленно) благодаря гибкости интерпретатора Ruby. Можно было даже записать выполнение тестов и затем использовать это как примеры данных при чтении кода.
https://geoffreylitt.com/margin-notes/
Есть серьёзные сложности, чтобы сделать это реально рабочим. Записывать большой объём детального runtime-состояния — сложно и дорого по ресурсам. А удобно показывать это состояние прямо в редакторах кода исторически тоже было непросто (хотя сейчас, с агентами, ситуация быстро меняется — в чём-то становится проще).
В целом же runtime-состояние до сих пор сильно недоиспользуется в интерфейсах разработки, а агрегированные данные из продакшена — тем более. Людям и агентам гораздо полезнее видеть конкретные данные, а не только абстрактную логику.
Чёрт возьми, у нас уже есть AI — почему бы не предсказывать, как будут меняться переменные, исходя из контекста всей организации, а не только кодовой базы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
Самый полный список видеокурсов по Computer Science в интернете.
cs-video-courses — 78K+ звёзд.
MIT.
Stanford University.
University of California, Berkeley.
Harvard University.
Carnegie Mellon University.
Indian Institutes of Technology.
Princeton University.
California Institute of Technology.
Всё бесплатно. Все лекции — в формате видео. Всё собрано в одном репозитории.
Темы:
→ Структуры данных и алгоритмы
→ Операционные системы
→ Распределённые системы
→ Системы баз данных
→ Компьютерные сети
→ Машинное обучение
→ Глубокое обучение
→ Обработка естественного языка (NLP)
→ Компьютерное зрение
→ Компьютерная графика
→ Безопасность
→ Квантовые вычисления
→ Робототехника
→ Блокчейн
От начального уровня (CS50) до продвинутого (6.824 Distributed Systems).
Учебная программа бесплатная.🤙
👉 @PythonPortal
cs-video-courses — 78K+ звёзд.
MIT.
Stanford University.
University of California, Berkeley.
Harvard University.
Carnegie Mellon University.
Indian Institutes of Technology.
Princeton University.
California Institute of Technology.
Всё бесплатно. Все лекции — в формате видео. Всё собрано в одном репозитории.
Темы:
→ Структуры данных и алгоритмы
→ Операционные системы
→ Распределённые системы
→ Системы баз данных
→ Компьютерные сети
→ Машинное обучение
→ Глубокое обучение
→ Обработка естественного языка (NLP)
→ Компьютерное зрение
→ Компьютерная графика
→ Безопасность
→ Квантовые вычисления
→ Робототехника
→ Блокчейн
От начального уровня (CS50) до продвинутого (6.824 Distributed Systems).
Учебная программа бесплатная.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁48🔥5❤2
Перевод текста с экрана в реальном времени теперь с открытым исходным кодом.
Он считывает и переводит текст из игр, видео, субтитров — вообще всего, что у тебя на экране. Мгновенно.
Раньше: сделать скриншот → скопировать → вставить → ждать обработки.
Теперь: просто работает в фоне. Я читаю японские питч-деки в реальном времени.
Ноль затрат на API. Всё работает локально. Open source.😆
👉 @PythonPortal
Он считывает и переводит текст из игр, видео, субтитров — вообще всего, что у тебя на экране. Мгновенно.
Раньше: сделать скриншот → скопировать → вставить → ждать обработки.
Теперь: просто работает в фоне. Я читаю японские питч-деки в реальном времени.
Ноль затрат на API. Всё работает локально. Open source.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🤯2👀2🤣1
Свойства и методы
Если вы хотите узнать свойства и методы объекта или модуля, используйте функцию
Вы также можете использовать функцию
Один из эффективных способов использования функции
Этот код возвращает
👉 @PythonPortal
Если вы хотите узнать свойства и методы объекта или модуля, используйте функцию
dir(). Ниже мы проверяем свойства и методы строкового объекта.my_str = 'I love Python'
print(dir(my_str))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
'__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__',
'__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith',
'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha',
'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join',
'lower', 'lstrip', 'replace', 'rfind', 'rstrip', 'split',
'startswith', 'strip', 'upper']
Вы также можете использовать функцию
dir(), чтобы посмотреть свойства и методы модулей. Например, если вы хотите узнать свойства, методы, атрибуты, классы и функции, доступные в модуле collections, можно использовать следующий код:import collections
print(dir(collections))
['ChainMap', 'Counter', 'OrderedDict', 'UserDict', 'UserList',
'UserString', '__all__', '__builtins__', '__cached__', '__doc__',
'__file__', '__loader__', '__name__', '__package__', '__path__',
'__spec__', '_chain', '_collections_abc', '_count_elements',
'_eq', '_iskeyword', '_itemgetter', '_proxy', '_recursive_repr',
'_repeat', '_starmap', '_sys', '_tuplegetter', 'abc',
'defaultdict', 'deque', 'namedtuple']
Один из эффективных способов использования функции
dir() — проверить, доступен ли конкретный атрибут у объекта. Например, с помощью этой функции можно проверить, есть ли у списка атрибут __len__.my_list = [1, 2, 3, 4]
print('__len__' in dir(my_list))
True
Этот код возвращает
True, потому что __len__ является одним из атрибутов объекта списка.Please open Telegram to view this post
VIEW IN TELEGRAM
❤21
Как проверить, является ли строка печатаемой или нет в Python 🤯
👉 @PythonPortal
>>> "123".isprintable()
True
>>> "abc".isprintable()
True
>>> "\t\n".isprintable()
False
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍6
Как превратить годы обучения в IT в реальный опыт и деньги
Самое странное сейчас это пытаться вкатиться в IT по классике, когда опытные программисты давно кодят с нейронками даже в больших проектах.
Поэтому в 2026 выигрывает тот, кто быстро делает рабочие решения без долгих лет обучения и максимально сокращает путь с нуля до первого реального проекта в IT.
Андрей Ивашев запускает бесплатный 3-дневный интенсив:
«Первые деньги на вайбкодинге»
📅 7-9 апреля в 19:00 МСК
Для тех хочет начать программировать с нейронками и заработать на этом первые деньги даже без опыта и образования.
Программа 🔥
7 апреля
почему сегодня вход в IT стал сложнее и почему вайбкодинг меняет правила игры
8 апреля
3 способа заработать на вайбкодинге в 2026 и где брать первого клиента, чтобы сделать проект за реальные деньги
9 апреля
На практике соберём AI-ассистента, который станет твоим первым IT-проектом.
🎁 Бонус за регистрацию:
«Библиотека промптов для заработка на вайбкодинге», которые помогут упаковать портфолио и общаться с клиентами так, чтобы покупали
50 бесплатных нейросетей, чтобы кодить без остановки + серкетные бонусы
Бесплатных мест для наших подписчиков всего 100.
Зарегистрироваться бесплатно
Зарегистрироваться бесплатно
Зарегистрироваться бесплатно
Тыкни на 🔥, если идёшь.
Самое странное сейчас это пытаться вкатиться в IT по классике, когда опытные программисты давно кодят с нейронками даже в больших проектах.
Поэтому в 2026 выигрывает тот, кто быстро делает рабочие решения без долгих лет обучения и максимально сокращает путь с нуля до первого реального проекта в IT.
Андрей Ивашев запускает бесплатный 3-дневный интенсив:
«Первые деньги на вайбкодинге»
📅 7-9 апреля в 19:00 МСК
Для тех хочет начать программировать с нейронками и заработать на этом первые деньги даже без опыта и образования.
Программа 🔥
7 апреля
почему сегодня вход в IT стал сложнее и почему вайбкодинг меняет правила игры
8 апреля
3 способа заработать на вайбкодинге в 2026 и где брать первого клиента, чтобы сделать проект за реальные деньги
9 апреля
На практике соберём AI-ассистента, который станет твоим первым IT-проектом.
🎁 Бонус за регистрацию:
«Библиотека промптов для заработка на вайбкодинге», которые помогут упаковать портфолио и общаться с клиентами так, чтобы покупали
50 бесплатных нейросетей, чтобы кодить без остановки + серкетные бонусы
Бесплатных мест для наших подписчиков всего 100.
Зарегистрироваться бесплатно
Зарегистрироваться бесплатно
Зарегистрироваться бесплатно
Тыкни на 🔥, если идёшь.
🤣12🔥4❤3
Создай Large Language Model с нуля
Этот репозиторий содержит примеры кода для разработки, предобучения (pretraining) и дообучения (finetuning) LLM с нуля.
Это официальный кодовый репозиторий для книги *Build a Large Language Model (From Scratch)*.
Для каждой главы включены примеры в формате ноутбуков:
Глава 1: Понимание Large Language Models
Глава 2: Работа с текстовыми данными
Глава 3: Реализация механизмов attention
Глава 4: Реализация GPT-модели с нуля
Глава 5: Предобучение на неразмеченных данных
Глава 6: Дообучение для задачи классификации текста
Глава 7: Дообучение для следования инструкциям
👉 @PythonPortal
Этот репозиторий содержит примеры кода для разработки, предобучения (pretraining) и дообучения (finetuning) LLM с нуля.
Это официальный кодовый репозиторий для книги *Build a Large Language Model (From Scratch)*.
Для каждой главы включены примеры в формате ноутбуков:
Глава 1: Понимание Large Language Models
Глава 2: Работа с текстовыми данными
Глава 3: Реализация механизмов attention
Глава 4: Реализация GPT-модели с нуля
Глава 5: Предобучение на неразмеченных данных
Глава 6: Дообучение для задачи классификации текста
Глава 7: Дообучение для следования инструкциям
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Быть добру: кто-то выложил в open-source Python-библиотеку, которая даёт прямой доступ к Google Flights.
Она называется Fli — обходит веб-интерфейс и работает напрямую с реверс-инжиниренным API, выдавая быстрые и структурированные результаты.
100% open-source.
👉 @PythonPortal
Она называется Fli — обходит веб-интерфейс и работает напрямую с реверс-инжиниренным API, выдавая быстрые и структурированные результаты.
100% open-source.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍5🤔2
Крутой новый блог-пост: почему асинхронный Python на самом деле детерминирован.
Мы разбираем, как на самом деле работает event loop в Python, и показываем, что несмотря на возможное чередование async-задач, они всегда начинают выполнение в предсказуемом порядке, что упрощает построение конкурентных async-воркфлоу.
READ PAPER🤨
👉 @PythonPortal
Мы разбираем, как на самом деле работает event loop в Python, и показываем, что несмотря на возможное чередование async-задач, они всегда начинают выполнение в предсказуемом порядке, что упрощает построение конкурентных async-воркфлоу.
READ PAPER
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Ничоси: кто-то решил самую большую проблему Claude Code.
Все знают, что Claude Code плохо справляется с UI-дизайном. Поэтому кто-то создал MCP, который даёт Claude встроенный AI-инструмент для дизайна.
Вместо постоянного переключения между дизайн-платформой и редактором кода, он генерирует дизайн и сразу добавляет его в кодовую базу.
👉 @PythonPortal
Все знают, что Claude Code плохо справляется с UI-дизайном. Поэтому кто-то создал MCP, который даёт Claude встроенный AI-инструмент для дизайна.
Вместо постоянного переключения между дизайн-платформой и редактором кода, он генерирует дизайн и сразу добавляет его в кодовую базу.
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥19❤2👍2