Обновить
512K+

Python *

Высокоуровневый язык программирования

331,78
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели16K

Попользовавшись множеством приложений вида «калькулятор калорий» и «трекер тренировок», пришел к выводу, что функционал подобных приложений не так широк, как этого бы хотелось, а доступ к более‑менее продвинутому функционалу стоит несоразмерно много для российского кошелька. Философия популярных приложений часто такова: вот, отслеживай съеденные калории, но чтобы контролировать соотношение БЖУ, отслеживать потребление воды и т. д. — плати деньгу. С вас 20 баксов в месяц, но только сегодня всего за 199$ можешь получить доступ на год. Ну что, пробиваем? (*утрированно*)

И тут начинается история с разработкой моего чат-бота...

Читать далее

Книга «Грокаем глубокое обучение с подкреплением»

Время на прочтение13 мин
Охват и читатели14K
image Привет, Хаброжители!

Мы учимся, взаимодействуя с окружающей средой, и получаемые вознаграждения и наказания определяют наше поведение в будущем. Глубокое обучение с подкреплением привносит этот естественный процесс в искусственный интеллект и предполагает анализ результатов для выявления наиболее эффективных путей движения вперед. Агенты глубокого обучения с подкреплением могут способствовать успеху маркетинговых кампаний, прогнозировать рост акций и побеждать гроссмейстеров в Го и шахматах.

Давайте научимся создавать системы глубокого обучения на примере увлекательных упражнений, сопровождаемых кодом на Python с подробными комментариями и понятными объяснениями. Вы увидите, как работают алгоритмы, и научитесь создавать собственных агентов глубокого обучения с подкреплением, используя оценочную обратную связь.
Читать дальше →

Python декораторы на максималках. Универсальный рецепт по написанию и аннотированию от мала до велика

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели88K

Декорирование функций - это, наверное, самая сложная среди базовых и самая простая среди продвинутых фич языка Python. С декораторами, наверное, знакомы все джуны (хотя бы в рамках подготовки к собеседованиям). Однако, крайне мало разработчиков пишут их правильно. Особенно принимая во внимания тенденции последних нескольких лет к аннотированию всего и вся. Даже популярные open-source проекты (если основная часть их кода была написана до 2018 года) вряд ли дадут вам примеры декораторов, отвечающих всем современным требованиям к коду.

Так давайте разбираться!

Материал полностью написан на основе моего опыта по работе над OSS проектами, поэтому в нем вы найдете примеры достаточно сложных кейсов, которые никогда не рассматриваются в других подобных гайдах. В то же время я постарался подвести к ним максимально “мягко”, чтобы было понятно даже начинающим питонистам.

В рамках статьи мы разберемся с декорированием функций в Python от простого к самому сложному. Рассмотрим, как их правильно писать и аннотировать, чтобы другие потребители вашего кода не страдали от близкого знакомства с ним. Уверен, что даже если вы чрезвычайно опытный разработчик, вы найдете для себя полезные советы (хотя и можете пропустить солидную часть материала).

Давайте разбираться

Как подружить Asterisk с потоковым распознаванием от Яндекс SpeechKit через EAGI и Python

Время на прочтение3 мин
Охват и читатели8.4K
До этого самого времени, я никогда не писал код на Pyhton и Node JS. И поэтому мне было очень сложно скрестить эти системы. И поэтому решил написать об этом пост, так как готовых примеров в Яндексе нет за исключением MRCP про которого было немало нелестных отзывов от пользователей этой системы, но пруфы в данное время предоставить не могу. Я решил не пользоваться этим костылем и изобрести велосипед на костылях сам. Для этого мне в помощь прослужила сама документация с Яндекса и некоторые примеры с StackOverflow.
Читать дальше →

Как сделать свой AnythingGPT, отвечающий на вопросы так, как вам это необходимо (Python, OpenAI Embeddings, ChatGPT API)

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели22K

Всем привет! Недавно я на практике применил одно интересное решение, которое давно хотел попробовать, и теперь готов рассказать, как своими руками такое можно сделать для любой другой аналогичной задачи. Речь пойдет о создании своей кастомизированной версии ChatGPT, которая отвечает на вопросы, учитывая большую базу знаний, которая по длине не ограничивается размером промта (то есть вы бы не смогли просто добавить всю информацию перед каждым вопросом к ChatGPT). Для этого будем использовать контекстные эмбеддинги от OpenAI (для действительно качественного поиска релеватных вопросов из базы знаний) и сам СhatGPT API (для оборачивания ответов в натуральный человеческие ответы). При этом, также предполагается, что ассистент может отвечать не только на прямо указанные в Q&A вопросы, но и на такие вопросы, на которые смог бы отвечать человек, который ознакомился с Q&A. Кому интересно научиться делать простых ботов, отвечающих по большой базе знаний, добро пожаловать под кат.

Под кат

Четыре способа написать Hello world, или инструменты для создания GUI на Python

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели88K

После написания программы ее можно модифицировать и добавить графический интерфейс — с Python это проще, чем кажется. Для программирования красивого и функционального GUI иногда достаточно простого знания html и css.

Под катом — подборка некоторых инструментов для создания интерфейсов на Python. Сохраняйте статью в закладки и предлагайте свои варианты в комментариях!
Читать дальше →

Автоматизация обеспечения качества кода на языке Python

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели27K

В первой части статьи я раскрою общие концепции и рабочие процессы, применимые к большинству программных проектов. Даже если вы не пишете код на языке Python, вы сможете почерпнуть из этой статьи что-то новое.

Во второй части я предлагаю пошаговое руководство по настройке инструментария для повышения качества кода в проектах на Python. Отдельное внимание отведу инструментам, которые я использую и которым отдаю предпочтение, имея 15 лет профессионального опыта работы с Python. А также приведу некоторые доступные альтернативы каждому из моих предложений.

Читать далее

XML-RPC: Ускоряем работу сервера, пользуясь только стандартной библиотекой Python

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели4.5K

Кратно увеличим производительность приложения на основе xmlrpc.server из стандартной библиотеки Python.

Да ну?

Учим ламу говорить на руcском

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели10K

Тут я рассказывал как можно использовать магию низкорангового разложения (Low Rank Adaption) матриц для того что бы легко дообучать большие текстовые модели. Сейчас же я напишу свою реализацию LoRA используя PyTorch, переведу весь датасет alpaca-cleaned (на котором училась альпака - языковая модель родом из стенфорда) на русский язык, используя взломаный яндекс переводчик, и наконец "скормлю" его языковой модели, что бы она наконец смогла понимать русский язык.

Советую ознакомится с кратким теоретическим описанием происходящего (хотя вроде как такие просьбы не работют()

Читать далее

Парсер комбинаторы на Python

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.6K

Статья предлагает взглянуть на опыт разработки парсер комбинаторов для Python, что вылилось в библиотеку PGPC для разработки парсеров на Python. Библиотека была вдохновлена Parsec.
Особый интерес представляет эмуляция do-нотации через Python генераторы, отсюда и название библиотеки: Python Generator based Parser Combinator library.

Читать далее

Как создать голосового ассистента

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели19K

В данной статье я расскажу, как можно сделать простого голосового ассистента. Все это мы будем делать в Python.

Читать далее

Ray Casting 3D игра на Python + PyGame

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели37K

В этой статье мы посмотрим на моем примере как создать игру в 3D иллюзией с помощью технологии RayCasting на связке Python + PyGame. Только тригонометрия и вычисления, никак движков.

Все мы помним старые игры, в которых впервые появилось трехмерное измерение. Но сейчас эта графика кажется очень устаревшей. Потому что в современных играх графика настолько близка с реальностью что порой тяжело понять что это вообще графика. В наше существует куча приемов чтобы сделать графику такой реалистичной.

Сейчас нам все это позволяют сделать видеокарты, но раньше мощностей не хватало чтоб даже приблизиться к такой графике. Поэтому прибегали к более простым методам, не требующих большого количества вычислений.

Основоположником 3д игр стала игра Wolfenstein 3D, выпущенная в 1992 году а за ней и Doom 1993 года. На самом деле здесь используется технология RayCasting, третьего измерения тут просто не существует.

Процесс разработки и код

Использование python-docx-template для динамического создания закладок и ссылок на них в документах Word

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели16K

Я использую модуль python-docx-template для генерации файлов docx по шаблону.

Подробнее о модуле можно почитать здесь.

Модуль содержит функционал для вставки в документ внешних ссылок, но когда мне понадобилось создавать по шаблону внутренние ссылки (на конкретное место в документе), такого функционала не нашлось, поиск в сети тоже ничего не дал.

Здесь я предлагаю свой способ вставки закладок (bookmarks) и ссылок (hyperlinks) на них при помощи python-docx-template.

Читать далее

Ближайшие события

Измерение покрытия python сервисов для end-to-end тестов

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели7.4K

Как измерить покрытие автотестами? Данный вопрос всегда вызывает жаркие дискуссии в рядах тестировщиков. Измерять покрытие становится сложнее, когда мы движемся вверх по пирамиде тестирования и уровень наших тестов растет. Как здорово на уровне Unit тестов, там отлично показывается сколько строк кода покрыто, процент и т.д. Вот если бы подобный отчет можно было сделать для end-to-end тестов или UI, то сразу было бы понятно реальное тестовое покрытие и каких тестов не хватает. К счастью, есть такой инструмент, который позволяет строить подробный отчет по покрытию Python сервисов.

Читать далее

Под капотом Python. Тонкости популярных конструкций with и contextmanager

Время на прочтение8 мин
Охват и читатели23K

Привет, Хабр! Меня зовут Павел Корсаков, я python-разработчик, backend-developer в облачном провайдере beeline cloud.

Язык программирования Python задумывался своим автором Гвидо ван Россумом как ориентированный на повышение производительности разработчика, читаемости кода и его качества. Как следствие, в нем много , за который мы его любим. А к какому то сахару мы так привыкаем, что используем и не задумываемся, что происходит под капотом в этот момент. В статье я хочу разобрать конструкции языка with и contextmanager, рассказать, как они устроены, какие задачи решают и как развивались от истоков Python до наших дней. 

В этой статье оглянемся в прошлое языка, ответим на вопросы, как написать менеджер контекста, как создать функцию генератор для декоратора contextmanager. Опытные разработчики могут узнать что-то новенькое или дополнить статью ценными комментариями.

Читать далее

Как правильно написать калькулятор на питоне с помощью eval()

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели9.3K

В комментариях к статьям по синтаксическому анализу я иногда вижу такие:

„на питоне калькулятор пишется проще простого — print(eval(input()))”

Ну, вобщем‑то — да, но если, например, вы прикрутите такой калькулятор к своему сайту, то любой желающий вместо 2+2*2 может написать exec("import os; os.removedirs('/')"), предварительно изучив все ваши секретные файлы подобным же образом. Такая перспектива не может радовать, но и отказываться от eval() тоже не стоит.

Читать далее

Пишем микро-shellcode в формате ELF вручную

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели4.9K

На Хабре уже не раз публиковались статьи про устройство формата ELF и написание файлов в таком формате вручную, но я не считаю лишним опубликовать и свой вариант решения задачи написания ELF-файла вручную. В результате получился файл, вызывающий /bin/sh и занимающий всего 76 байт (что на 8 байт меньше, чем сумма длин необходимых для запуска заголовков ELF).

Читать далее

Jira worklog без плагинов

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели5K

В связи с ситуацией отключения плагинов табеля рабочего времени для пользователей РФ в Jira я начал изучать тему получения нужной информации по трудозатратам через Jira API. Даже нашел несколько статей на эту тему на уважаемом ресурсе. Но, как оказалось, некоторые моменты устарели, а некоторые были упущены авторами, либо они на них просто не наткнулись.

Читать далее

Особенности разработки автотестов различными инструментами, а также статистика по использованию

Время на прочтение9 мин
Охват и читатели11K

Попробуем разобраться в автоматизации тестирования ПО, сделаем обзор сервисов для автоматического тестирования, выясним, какой язык программирования лучше подходит для QA Automation. Вся информация основана в том числе на реальных событиях и моём реальном опыте.

Читать далее

Объектно-ориентированное программирование в размышлениях и опытах хоккеиста Степана Осечкина

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели53K

В программировании есть несколько основных парадигм — подходов, которые определяют, как программисты структурируют и организуют свой код

Одним из наиболее популярных подходов сейчас является объектно-ориентированное программирование, ООП, где код организуется вокруг объектов и классов. Объектно-ориентированный подход поддерживается многими языками программирования и начинающим разработчикам стоит детальнее разобраться с тем, что же на практике означают страшные слова «полиморфизм», «инкапсуляция» и другие термины, применяемые в этой парадигме.

В этой статье я расскажу о ключевых понятиях, связанных с ООП, и на примере Python-кода разберу, как одна и та же задача может быть успешно решена с использованием процедурного и объектного подхода. Но обо всём по порядку; начнём, традиционно, с основ, а поможет мне в этом выдуманный хоккеист Степан.

Читать далее