Обновить
1024K+

Python *

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

Пишем свой Chat GPT

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

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

У меня давно было желание  поработать с непосредственно с самим API от Open AI и с другими LLM моделями. Решил написать свой чат с возможностью адаптировать под внутренние нужды команды в дальнейшем. Проект выложен в открытый доступ, скачать можно по ссылке. Сам проект находится в активной разработке, так что вы можете писать ваши замечания / пожелания в комментариях или отправить ваш pull request с исправлениями. Будем оперативно исправлять ошибки. 

На бэкенде был выбран Python, Django Rest Framework. На фронтенде React, Redux, Saga, Sass. Начнем с бэкенда, им занимался Егор. Далее про серверную часть проекта он пишет от себя.

Читать далее

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

Первый проект Django. Часть 1

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

В данной статье:

Создаем первый наипростейший проект в Django за 5 минут без регистраций и смс. В первый раз у меня на это ушло несколько часов.

Создать первый проект Django

От маргинального языка к самому популярному в мире: как изменился Python за двадцать лет

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

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

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

В опросе приняли участие:

Григорий Петров, директор по техническому маркетингу в Evrone

Андрей Власовских, ведущий разработчик в Яндексе

Михаил Еловских, старший разработчик в Яндексе

Антон Патрушев, технический директор в Spherical

Читать далее

VoiceChat c Vorbis кодеком на несколько человек с блэкджеком и (Web?)UI над UDP socket python

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

Ругает VoIP, discord и др. за фатальный недостаток

Пару лет назад, когда все эти гитхабры для меня были птичьим пением, а делать мне было нечего — писал я значит небольшие проекты на python. Среди них был простенький голосовой чат на двоих через TCP. Но вот я нашел его и захотел допилить. Лучший способ допилить что‑то — это придумать заново. Всё что вы прочитаете далее — есть мой гайд по изготовлению велосипеда и не претендует на звание полноценного презентабельного проекта.

Кнопка Читать далее с крутым текстом, вот!

DesktopETL — кросс-платформенный прототип ETL-системы, или как регулярно загружать XML/JSON и сохранять в XLS/CSV

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

Идея моего домашнего проекта началась с простой, на первый взгляд, задачи: с потребности конвертировать файлы формата XML в формат XLS (или CSV) для последующего анализа. И я был наивен, чтобы попробовать решение «в лоб» и с помощью Excel импортировать богатый внутренний мир SAP Business Objects, описанный в иерархической структуре XML, в табличную форму, — и примерно через час мое сознание, в очередной раз выдав исключение о переполнении памяти, подключило опыт, который намекнул, что иерархические структуры заранее неизвестной глубины проще всего обрабатывать посредством рекурсии. Так появился лаконичный скрипт на Python. Потом еще один. И еще. Потом скрипты пошли в массы среди коллег по цеху. Появились фантазии и мечты, например возможность каждые пять минут забирать XML (или JSON) из кафки (Apache Kafka), трансформировать на лету и класть, например, в DWH. Вполне ожидаемо, что была масса вопросов к скриптам и просьба «быстренько поправить». И в какой-то момент, как в том классическом анекдоте про «закопанную стюардессу», я понял, что хватит… Так и появился MVP, который я хотел бы представить в этой статье.
Читать дальше →

Превращаем любой фреймворк в FastAPI. На прицеле Flask

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

Я уверен, вы знаете, что такое FastAPI. По результатам опросов Stackoverflow этот фреймворк уверенно входит в топ любимых фреймворков не только питонистов, но и разработчиков в целом. И не зря: за счет свеого подхода к сериализации данных он предоставляет действительно потрясающий опыт разработки.

На Хабре уже была отличная статья о том, как устроен FastAPI изнутри. Там достаточно подробно рассмотрены все ключевые концепции этого фреймворка, а также разобраны детали его реализации на базе Starlette.

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

Интересно? Тогда добро пожаловать!

Читать далее

Selenium. Автоматизация тестирования календаря (Datepicker)

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

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

Ответом IT-сообщества, было появлению множества инструментов для тестирования PHPUnit, Selenium, Pytest, Unittest, AssertJ. Инструменты позволили сосредоточить на том что тестируем и минимальными затратами на разработку теста. Развитие области автоматического тестирования, тестовые кейсы можно описать в виде небольших скриптов, с помощью тестовых фреймворков. Такие тесты, разработчики могут запускать в любой момент своей работы, чтобы поддерживать качество продукта. Для автоматизации тестирования веб-приложений применяется Selenium и его производные.

Selenium - это проект с открытым исходным кодом. Проект является “зонтичный” - собирательным, потому что в его состав входят множество независимых компонентов Selenium WebDriver, Selenium Grid, Selenium Server, Selenium IDE и т.д. Но в сообществе, когда говорят “Selenium”, часто подразумевают Selenium WebDriver.

Автотесты применяются на различных уровнях ПО. Автотестами можно проверить работу функции, модуля программы или набора модулей. Для систематизации понятий тестов, Майк Кон придумал абстракцию, которая группирует тесты по уровню детализации и назначению. Назвал ее пирамидой тестирования и описал в книге «Scrum: гибкая разработка ПО». С Selenium WebDriver специалист, может разрабатывать end-to-end тесты - которые находятся на вершине пирамиды тестирования. End-to-end тесты - проверяют полную работу системы и имитируют действия пользователя. Но как сделать такой автотест для веб приложения?

Читать далее

Крестики-Нолики (Tic Tac Toe) с компьютером на Python. Мой первый шаг к Machine Learning. Часть 1

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

Всем привет. Я любитель Python и совсем недолго осваиваю язык всеми доступными способами. Моя цель - понять принципы машинного обучения и его взаимосвязь с нейросетью. Никакого опыта в IT не имел, тем не менее постараюсь излагать общепринятой терминологией, не судите строго. Моя основная профессия (оперирующий травматолог, кандидат наук) не менее сложная и далека от IT, но для упрощения работы в нее все больше внедряются AI и ML. Мною движет лишь интерес к современным технологиям, программированию.

В первой части покажу только основные этапы создания игры, где пользователь выбирает роль (Х или О), играя с компьютером. Поиск в сети Python аналогов дал только несколько вариантов игры с рандомным ответом компьютера. Мой целью в этой части стало самостоятельно научиться оценивать текущую позицию на поле "Крестики-Нолики" и подбирать оптимальный вариант следующего хода компьютера. К слову, уже перед окончанием статьи нашел готовую web-игру в google, где уже реализован такой подход. Тем интереснее было проверить себя и поделиться "изобретением колеса, но по-своему".

Во второй части попробую прикрутить к игровой логике другой подход - машинное обучение на основе большого числа сыгранных партий компьютером с самим собой.

Кому будет полезен материал: любителям Python, логики, алгоритмов. В финальном коде все переменные, функции и действия прокомментированы на английском.

Крестики-Нолики с компьютером на Python