🕷️ Scrapy — гибкий фреймворк для написания парсеров
Scrapy изначально был создан для веб-парсинга, но его также можно использовать для извлечения данных через API или как веб-краулер. Помимо этого:
▪️имеет встроенную поддержку для извлечения данных из HTML/XML источников с помощью расширенных CSS-селекторов и выражений XPath,
▪️предоставляет интерактивную консоль для тестирования и отладки,
▪️поддерживает экспорт данных в разных форматах (JSON, CSV, XML),
▪️поддерживает множество кодировок.
Вчера вышел последний релиз Scrapy 2.11.1
🔗 Ссылка на страницу парсера на PyPI
Scrapy изначально был создан для веб-парсинга, но его также можно использовать для извлечения данных через API или как веб-краулер. Помимо этого:
▪️имеет встроенную поддержку для извлечения данных из HTML/XML источников с помощью расширенных CSS-селекторов и выражений XPath,
▪️предоставляет интерактивную консоль для тестирования и отладки,
▪️поддерживает экспорт данных в разных форматах (JSON, CSV, XML),
▪️поддерживает множество кодировок.
Вчера вышел последний релиз Scrapy 2.11.1
🔗 Ссылка на страницу парсера на PyPI
❤8🔥2👏2👍1
🐍 Туториал Real Python по декораторам
В нём рассказывается, как создавать декораторы и использовать их. В частности, туториал охватывает темы:
▫️Что значит, когда функции являются объектами первого класса.
▫️Как определять функции, чтобы их можно было использовать в качестве декораторов.
▫️Какие практические задачи можно решать с помощью декораторов.
▫️Лучшие практики создания декораторов.
🔗 Ссылка на полный туториал
В нём рассказывается, как создавать декораторы и использовать их. В частности, туториал охватывает темы:
▫️Что значит, когда функции являются объектами первого класса.
▫️Как определять функции, чтобы их можно было использовать в качестве декораторов.
▫️Какие практические задачи можно решать с помощью декораторов.
▫️Лучшие практики создания декораторов.
🔗 Ссылка на полный туториал
👍13🥰2❤1
🤔 Остаться или уйти? Оптимальный срок работы на одном месте
Вы любите свою работу, интересные проекты вам гарантированы, зарплата повышается каждый год. Но вот уже 5 лет вы трудитесь в одной и той же компании. Не пора ли что-то изменить, пока мотивация окончательно не улетучилась?
Многие опытные айтишники сталкиваются с такой дилеммой. С одной стороны, текущее место работы устраивает. С другой — хочется разнообразия, новых задач и знаний.
Должен ли современный IT-специалист менять работу чаще, чем раз в 5 лет? Или лучше наращивать экспертизу в рамках одной компании? А может дело совсем не в сроках, а в качестве задач и развитии карьеры?
👉 Расскажите о своём опыте в нашем новом опросе 👈
Вы любите свою работу, интересные проекты вам гарантированы, зарплата повышается каждый год. Но вот уже 5 лет вы трудитесь в одной и той же компании. Не пора ли что-то изменить, пока мотивация окончательно не улетучилась?
Многие опытные айтишники сталкиваются с такой дилеммой. С одной стороны, текущее место работы устраивает. С другой — хочется разнообразия, новых задач и знаний.
Должен ли современный IT-специалист менять работу чаще, чем раз в 5 лет? Или лучше наращивать экспертизу в рамках одной компании? А может дело совсем не в сроках, а в качестве задач и развитии карьеры?
👉 Расскажите о своём опыте в нашем новом опросе 👈
👍7🎉2
📦 uv — новый инструмент для работы с зависимостями в Python, написанный на Rust
Создатели позиционируют его как замену pip, pip-tools и virtualenv. Это, кстати, те же разработчики, которые сделали линтер Ruff.
На картинке показано сравнение uv с другими инструментами в разрешении зависимостей (слева) и установке (справа) зависимостей Trio с использованием прогретого кеша.
🔗 Более подробный пост о проекте
🔗 Репозиторий на GitHub
Создатели позиционируют его как замену pip, pip-tools и virtualenv. Это, кстати, те же разработчики, которые сделали линтер Ruff.
На картинке показано сравнение uv с другими инструментами в разрешении зависимостей (слева) и установке (справа) зависимостей Trio с использованием прогретого кеша.
🔗 Более подробный пост о проекте
🔗 Репозиторий на GitHub
🔥20👍3
У нас есть еженедельная рассылка о последних открытиях и тенденциях в мире Python. Мы опубликовали один из свежих выпусков на
Ниже — небольшая подборка, а целиком читайте здесь 👈
🔎 Поисковик на 80 строках кода
Публикация рассказывает, как сделать базовую поисковую систему буквально на 80 строках Python-кода. Автор реализовал все основные компоненты поисковика: краулер, инвертированный индекс, ранжировщик и интерфейс.
▪️Web2PDF – CLI-инструмент для конвертации веб-страниц (по URL) в PDF-файлы.
▪️Rexi – инструмент для работы с регулярными выражениями в терминале.
▪️Django HTMX Components – набор готовых компонентов, которые можно скопировать и вставить в Django-приложение.
🕹 Управление зависимостями
Туториал, который рассказывает, как начать пользоваться Poetry.
🔥 Интересные проекты
▪️«Гарри Поттер и движок Elasticsearch» — это семантическая поисковая система на основе векторной базы данных с информацией о вселенной Гарри Поттера.
▪️Чат-бот, имитирующий стиль Эминема.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
В новой статье рассказывается, как:
▪️создать грамматику ANTLR для простого «игрушечного» языка программирования Slang и сгенерировать парсер из этой грамматики,
▪️определить абстрактное синтаксическое дерево (AST) с помощью Pylasu,
▪️интегрировать парсер в приложение командной строки, позволяя пользователям анализировать код на Slang как из строк, так и из файлов, и визуализировать соответствующее AST в формате JSON.
🔗 Читать статью полностью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🎉2
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
У нас вышла интересная статья на
Ниже — небольшая подборка, а целиком читайте здесь 👈
▫️ Исследователи Стэнфордского университета обнаружили, что чат-боты склонны делать выбор в пользу насилия и ядерных ударов в военных играх.
▫️Разработчики приложения для знакомств Bumble протестировали новую AI-функцию Deception Detector, которая автоматически заблокировала 95% мошеннических аккаунтов.
▫️Google создала MobileDiffusion — мини-модель для супербыстрой генерации изображений на смартфонах.
🛠 Инструменты
▫️UserSketch — создаёт чат-бота на основе единой базы знаний с данными, собранными из любых документов, почты, мессенджеров, приложений для управления проектами и организации бизнес-процессов.
▫️Ytube AI — превращает YouTube-видео в SEO-оптимизированные статьи.
▫️ThreadScribe.ai — превращает сообщения из Slack в структурированную базу знаний, которой можно задавать любые вопросы и получать инсайты.
▫️Fooocus — бесплатная опенсорсная альтернатива Midjourney. Устанавливается локально.
Google выпустила инструмент localllm для запуска LLM локально или в облаке, на CPU вместо GPU. Подробный туториал по установке и настройке localllm — в блоге разработчиков.
🎓 Исследования
Исследователи из Технологического института Джорджии представили PokéLLMon. Возможности этого ИИ-агента сопоставимы с человеческими — он уже выиграл 56% боев против людей. Авторы также нашли способ избавиться от галлюцинаций и решили проблему панического переключения, когда при столкновении с сильным противником агент начинал хаотично переключаться между покемонами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
This media is not supported in your browser
VIEW IN TELEGRAM
🪄 Самый простой способ добавить вход по магической ссылке с помощью Django
Вход по магической ссылке подразумевает альтернативный способ аутентификации без использования логина и пароля. Вот как он работает:
▪️Пользователь вводит его email и кликает на кнопку.
▪️Затем он переходит по ссылке, которая пришла на его почту.
▪️Вуаля — он залогинен.
Как реализовать это через Django — читайте в новой статье 👈
Вход по магической ссылке подразумевает альтернативный способ аутентификации без использования логина и пароля. Вот как он работает:
▪️Пользователь вводит его email и кликает на кнопку.
▪️Затем он переходит по ссылке, которая пришла на его почту.
▪️Вуаля — он залогинен.
Как реализовать это через Django — читайте в новой статье 👈
👍22❤2🥱2
Эта встроенная функция снабжает циклы счётчиком. Возвращает генераторный объект, который имеет метод, вызываемый встроенной функцией next: на каждом проходе цикла возвращает кортеж {индекс, значение}. Цикл for проходит по этим кортежам автоматически, что позволяет распаковывать их значения с помощью присваивания кортежей почти так, как в zip.
S = "stroka"
example = enumerate(S)
next(example) # -> (0, 's')
shopping_list = ['яблоки', 'бананы', 'апельсины', 'хлеб']
for index, item in enumerate(shopping_list, start=1):
print(f"Пункт {index}: {item}")
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍15
В Python можно выпрямить вложенные списки с помощью... функции sum(). Вот код
l=[['a', 'b', 'c'], ['1', '2'], ['#']]
sum(l, [])
Дело в том, что sum() принимает первым аргументом итерируемый объект, а вторым — значение, с которого начинается операция. По умолчанию это 0, но если указать пустой список [], то sum() начнёт с него. Затем sum() последовательно применяет операцию сложения к элементам первого аргумента, начиная со значения второго аргумента. В случае списков это означает конкатенацию.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46😁12🤩2🥱2❤1
🐍⛓ Цепи Маркова: генерирование читабельной бессмыслицы за 20 строк на Python
В новой статье научимся генерировать осмысленные, но в то же время абсурдные фразы и предложения с помощью цепи Маркова.
🔗 Читать статью
🔗 Зеркало
В новой статье научимся генерировать осмысленные, но в то же время абсурдные фразы и предложения с помощью цепи Маркова.
🔗 Читать статью
🔗 Зеркало
👍18
🐍 Почему не стоит использовать неподдерживаемые библиотеки
Автор новой статьи объясняет, почему перед установкой понравившейся библиотеки стоит проверить, поддерживает ли её разработчик. Он приводит в пример Flask-Mail, у которой последний коммит был 9 лет назад. При этом, если гуглить статьи об отправке email в Flask, то 20 лучших результатов будут упоминать именно эту библиотеку.
❗Однако проблемы безопасности библиотеки не исправляются. Кроме того, может в любой момент отвалиться совместимость с новой версией Python.
🔗 Прочесть статью целиком можно по этой ссылке
Автор новой статьи объясняет, почему перед установкой понравившейся библиотеки стоит проверить, поддерживает ли её разработчик. Он приводит в пример Flask-Mail, у которой последний коммит был 9 лет назад. При этом, если гуглить статьи об отправке email в Flask, то 20 лучших результатов будут упоминать именно эту библиотеку.
❗Однако проблемы безопасности библиотеки не исправляются. Кроме того, может в любой момент отвалиться совместимость с новой версией Python.
🔗 Прочесть статью целиком можно по этой ссылке
👍15⚡2🔥1😁1
33 года назад Гвидо ван Россум релизнул Python. На сегодняшний день он является самым популярным языком программирования в мире
Выпьем за Python любимый напиток и продолжим кодить
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🎉43❤21🥰5😁3⚡2👏1🌚1👾1
🎂 Опрос в честь дня рождения: сколько лет вы уже пишете на Python?
🎉 — более 5 лет
❤️ — 3-5 лет
👍 — 1-2 года
🥰 — я в теме меньше года
#интерактив
🎉 — более 5 лет
❤️ — 3-5 лет
👍 — 1-2 года
🥰 — я в теме меньше года
#интерактив
🥰213👍178❤146🎉112👾4🌚2👏1🤔1🤩1
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
📈 5 трендов в подборе ИТ-специалистов на 2024 год
Использование ИИ-алгоритмов становится трендом и в Human Resources. Такими инструментами пользуются и кандидаты, и работодатели.
🤖 Например, появляются Applicant tracking system (ATS) с ИИ, которые автоматизируют поиск и отбор кандидатов. А ещё есть Final Round AI — своеобразный помощник с искусственным интеллектом, который генерирует индивидуальные ответы на онлайн-интервью в режиме реального времени.
👉 О других трендах читайте в нашей новой статье 👈
🔗 Зеркало
Использование ИИ-алгоритмов становится трендом и в Human Resources. Такими инструментами пользуются и кандидаты, и работодатели.
🤖 Например, появляются Applicant tracking system (ATS) с ИИ, которые автоматизируют поиск и отбор кандидатов. А ещё есть Final Round AI — своеобразный помощник с искусственным интеллектом, который генерирует индивидуальные ответы на онлайн-интервью в режиме реального времени.
👉 О других трендах читайте в нашей новой статье 👈
🔗 Зеркало
❤5👍1
big-o-cheatsheet.pdf
254.8 KB
🤔 Вычислительная сложность алгоритмов: удобная шпаргалка
Понимание вычислительной сложности алгоритмов важно для разработчика. Как минимум, про это могут спросить на собеседовании, как максимум — это поможет улучшить ваш проект.
❓Что это такое?
Вычислительная сложность пытается ответить: как изменятся время исполнения алгоритма и объём занятой памяти в зависимости от размера входных данных? Тут вводится понятие асимптотической сложности. Это математическая модель, описывающая поведение ограничений на ресурсы (например, время выполнения или использование памяти) в пределе, когда размер входных данных стремится к бесконечности. Алгоритм с меньшей асимптотической сложностью является более эффективным для всех входных данных.
Для асимптотической сложности алгоритма используется следующая нотация: 𝑂
(«О»-большое), которое описывает верхнюю границу времени.
✍️ Категории алгоритмической сложности в 𝑂-нотации:
- Постоянное время: 𝑂(1)
Время выполнения не зависит от количества элементов во входном наборе данных.
- Линейное время: 𝑂(𝑁)
Время выполнения пропорционально количеству элементов в наборе.
- Логарифмическое время: 𝑂(log𝑁)
Время выполнения пропорционально логарифму от количества элементов в наборе.
- Линейно-логарифмическое время: 𝑂(𝑁log𝑁)
Время выполнения больше чем, линейное, но меньше квадратичного.
- Квадратичное время: 𝑂(𝑁^2)
Время выполнения пропорционально квадрату количества элементов в наборе.
🔗 Ссылка на отличную шпаргалку
Понимание вычислительной сложности алгоритмов важно для разработчика. Как минимум, про это могут спросить на собеседовании, как максимум — это поможет улучшить ваш проект.
❓Что это такое?
Вычислительная сложность пытается ответить: как изменятся время исполнения алгоритма и объём занятой памяти в зависимости от размера входных данных? Тут вводится понятие асимптотической сложности. Это математическая модель, описывающая поведение ограничений на ресурсы (например, время выполнения или использование памяти) в пределе, когда размер входных данных стремится к бесконечности. Алгоритм с меньшей асимптотической сложностью является более эффективным для всех входных данных.
Для асимптотической сложности алгоритма используется следующая нотация: 𝑂
(«О»-большое), которое описывает верхнюю границу времени.
✍️ Категории алгоритмической сложности в 𝑂-нотации:
- Постоянное время: 𝑂(1)
Время выполнения не зависит от количества элементов во входном наборе данных.
- Линейное время: 𝑂(𝑁)
Время выполнения пропорционально количеству элементов в наборе.
- Логарифмическое время: 𝑂(log𝑁)
Время выполнения пропорционально логарифму от количества элементов в наборе.
- Линейно-логарифмическое время: 𝑂(𝑁log𝑁)
Время выполнения больше чем, линейное, но меньше квадратичного.
- Квадратичное время: 𝑂(𝑁^2)
Время выполнения пропорционально квадрату количества элементов в наборе.
🔗 Ссылка на отличную шпаргалку
👍6🥰6🔥2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
⛩️ 6 способов нестандартно войти в Айти
Стандартный способ вхождения в профессию программиста — через универ. Все, что отличается от него, уже считается нестандартным способом. Разбираем несколько необычных способов входа в ИТ-сферу и то, какие преимущества они дают:
🛤 Роадмапы
👨💻 Знакомые айтишники
💬 Комментарии
🙌 Менторинг
🕹 Игры
⌨️ Стажировки
Стандартный способ вхождения в профессию программиста — через универ. Все, что отличается от него, уже считается нестандартным способом. Разбираем несколько необычных способов входа в ИТ-сферу и то, какие преимущества они дают:
🛤 Роадмапы
👨💻 Знакомые айтишники
💬 Комментарии
🙌 Менторинг
🕹 Игры
⌨️ Стажировки
👍7❤6🔥4
Media is too big
VIEW IN TELEGRAM
💬 Vanna — библиотека для общения с БД на естественном языке
Инструмент по вашей просьбе генерирует SQL-запрос, который отправляется к базе данных. Работа Vanna проходит в два шага:
▫️Обучение на ваших данных из базы.
▫️Ответы на запросы.
🔗 Ссылка на подробный гайд по началу работы с Vanna (внутри также есть ссылки на Google Colab и GitHub)
Инструмент по вашей просьбе генерирует SQL-запрос, который отправляется к базе данных. Работа Vanna проходит в два шага:
▫️Обучение на ваших данных из базы.
▫️Ответы на запросы.
🔗 Ссылка на подробный гайд по началу работы с Vanna (внутри также есть ссылки на Google Colab и GitHub)
❤🔥11🔥6🥰3😁1
👍6
🐍 Краткое руководство по основным изменениям в каждой новой версии Python
Автор собрал небольшой справочник, в котором перечислил, что нового появлялось в Python, начиная с Python 3.5. Вот некоторые заметные нововведения:
▶️ Python 3.6 — f-строки (f"{текст}")
▶️ Python 3.8 — моржовый оператор (walrus)
▶️ Python 3.9 — оператор объединения для словарей
▶️ Python 3.10 — match/case
🔗 Подробнее об этом всём читайте в статье
Автор собрал небольшой справочник, в котором перечислил, что нового появлялось в Python, начиная с Python 3.5. Вот некоторые заметные нововведения:
if (thing := get_thing()) is not None:
do_something(thing)
else:
raise Exception(f"Something is wrong with {thing}")
combined_dict = dict_one | dict_two
updated_dict |= dict_three
🔗 Подробнее об этом всём читайте в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19😁5🔥1