Обновить
256K+

Python *

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

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

Пишем онлайн-тренажёр для Python, C++ и Go: опыт Практикума

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

Один из вариантов мини-IDE в интерфейсе урока

Привет! Меня зовут Павел Свиридов, я руководитель группы разработки в Яндекс Практикуме. Сегодня я вместе со своим коллегой, разработчиком Владимиром Лукьяновым, хочу рассказать о том, как наша команда развивала онлайн-тренажёры в вебе — это такие маленькие среды разработки, встроенные в курсы Практикума. Основное внимание уделю тренажёрам Python и С++, а о других языках скажу пару слов в самом конце и покажу на примере, как создать тренажёр для языка Go.
Читать дальше →

Сравнение двух систем для торговли акциями: модели ближайших соседей и торговли по скользящей средней

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

Привет!

Я достаточно давно в качестве хобби занимаюсь анализом открытых данных в играх на деньги (ставки на спорт, биржевые котировки и тп). В основном работаю руками в экселе, но также стараюсь быть в курсе того, что делают машины. Для этого прошел курсы Kaggle от Google. В этой статье я попробую сравнить результативность предсказаний дневного движения цены акции от двух примитивных систем торговли:

1. примитивного трейдера-человека, который на вводном курсе по трейдингу узнал про скользящую среднюю,

 и

2. примитивной модели, обученной по методу ближайших соседей (Класс KNeighborsClassifier в библиотеке Python Scikit-learn).

Оцениваться предсказания обеих систем будут по двум параметрам:

1. Результат торговли акцией в процентах.
2. Процент верных предсказаний.

Мне показалось, что будут интереснее писать данную статью последовательно, поэтому на момент написания этих слов я не знаю итоговых результатов.

Читать далее

Расстояние Левенштейна для чайников

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

Когда я взялась решать задачку по динамическому программированию — реализовать алгоритм, который рассчитывает расстояние Левенштейна — мне пришлось послушать пару небольших лекций и прочесть несколько статей (приведу их в конце), чтобы разобраться. Я решила попытаться пересказать алгоритм настолько просто, чтобы по этому объяснению можно было снять ролик для тиктока (когда он снова возобновит свою деятельность в РФ). Дальше — мало формул и много картинок.

Читать далее

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 7

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

На прошлом уроке мы изучили некоторые способы поиска областей интереса на изображении. Напомню, что мы делали:

• пытались найти по цвету (чаще всего так делать не надо);

• пытались найти круглый знак посредством функции HoughCircles (иногда работает);

• а еще мы изучили морфологические операции (открытие закрытие).

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

Для начала вспомним, как находить контуры.

Читать далее

Сравнительный анализ эффективности работы Cython и Python

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

Привет, Хабр! Сегодня поговорим о Cython, почему он хорош, что он умеет: хорошие вещи, плохие вещи, о том, когда стоит использовать Cython, рассмотрим пример и существующие проекты на нем.

Читать далее

Sanic — быстрее, чем кролики

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

Sanic - современный мощный фреймворк, незаслуженно обделённый вниманием российского IT-сообщества.

Читать далее

MoscowPython Meetup 78 — 14-го июля в Joom

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

Приглашаем на митап MoscowPython, который пройдёт в Joom 14-го июля.

Читать далее

В Data Science не нужна математика (Почти)

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

Привет, чемпион!

Ребята с «вышкой» всё время умничают, что в Data Science нужна «математика», но стоит копнуть глубже, оказывается, что это не математика, а вышмат.

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

Решил накидать чек-лист из простых математических приёмов, без понимания которых — тебе точно будет сложно в DS. Если ты только начинаешь карьеру в DS, то тебе будет особенно полезно. Мощь вышмата не принижаю, но для старта всё сильно проще, чем кажется. Важно прочитать до конца!
Читать дальше →

Как всегда знать свой адрес в сети и не платить за белый IP

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

Всё началось с покупки одноплатного компьютера. На нём я поднял облачный сервис Seafile, медиа-сервер Jellyfin и вики-движок Wiki.js. Потребляет такой компьютер с подключенным внешним жёстким диском крайне мало. Всё это добро я использую в одном лице для личных нужд. Поэтому платить за белый IP адрес и уж тем более покупать доменное имя считаю лишним. Вот только провайдер постоянно меняет мне внешний IP, а доступ хотелось бы всегда иметь и за пределами домашней сети.

Читать далее

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 5. Асинхронное программирование

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

Выше мы рассмотрели, как появились генераторы, как они работают и как их можно использовать в роли сопрограмм. Еще раньше было разобрано, как реализовать асинхронность на колбеках с помощью модуля selectors. Теперь соединим оба материала и реализуем настоящую асинхронность — на сопрограммах (coroutines).

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

Читать далее

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 4. Сопрограммы в Python

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

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

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

Читать далее

Статическое Python приложение в образе контейнера на базе scratch

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

Небольшое руководство о том, как можно собрать Python приложение в самодостаточный статически связанный двоичный файл и упаковать в его образ контейнера на базе scratch.

Размер итогового образа контейнера получится всего лишь от 13 мегабайт.

Читать далее

Интеграция картин в видео фасада здания за 60 часов

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

Художник-монументалист - человек, который выполняет действительно Большие Задачи. Вот и со мной рядом был такой человек, у которого еще не горел, но активно приобретал характерную черную корочку диплом.

На диплом художник выбрал Российскую национальную библиотеку (они выбирают объекты, и декорируют их). В итоге - 9 отдельных картин предполагаемых в технике мозаика были готовы украшать фасад здания. Сделать диплом - это полдела, но более важной задачей является подать его. По задумке камера должна вальяжно облетать здание, масштабироваться и проходить по замысловатым траекториям. Но вот незадача, курс 3D моделирования длился полгода, а результатом была модель пустой комнаты, с плинтусами и окнами. Отчаянные просмотры роликов на YouTube по темам «Как сделать 3D иллюстрации Adobe» дали понять одно - 3D визуализации не будет. Больно, грустно, обидно - но дедлайн заставляет креативить.

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

Мое глубокое подсознание положило эту мысль в стек головного мозга и достало его оттуда, как это водится, перед самым сном. «Так ведь можно это все реализовать программно. Распознать рамки под панно какой-нибудь нейронкой, вставить мозаики попутно сжимая их и растягивая в нужных местах, затенить, выделить контраст и бла бла бла» подумал наш герой-программист и его было уже не остановить…

Читать далее

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

Создание бота на основе discord.py. Часть 1

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

В статье рассказано про первые шаги по созданию бота для сервера Discord, на основе discord.py. Тестовый сервер, режим разработчика, создание приложения, получение токена, и тд.

Читать далее

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 3. Первый подход к асинхронности

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

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

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

Но, к счастью, существует и третий вариант — кооперативная многозадачность с помощью системного вызова select и его аналогов (poll, epoll и других). Он позволяет мультеплексировать несколько задач в одном потоке выполнения и в сущности является обычной синхронной программой. А потому никаких дополнительных трат процессорного времени и времени разработчиков не требуется.

Читать далее

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 2. Блокирующие сокеты и многозадачность

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

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

Читать далее

Автоматическое тестирование QT GUI с помощью python и funq

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

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

Читать далее

Бескомпромиссный CI-конвейер для питонистов

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

Любому Python-проекту может пойти на пользу надёжный и стабильный конвейер непрерывной интеграции (Continuous Integration, CI). В рамках таких конвейеров выполняется сборка приложений, запуск тестов, проверка кода линтерами, контроль качества программ, анализ уязвимости приложений. Правда, построение CI-конвейеров занимает много времени, требует выполнения действий, которые, сами по себе, никакой пользы не приносят. Этот материал написан для тех Python-программистов, которым нужен полнофункциональный, настраиваемый CI-конвейер, основанный на GitHub Actions. Этот конвейер оснащён всеми мыслимыми инструментами, подключён ко всем необходимым сервисам, а подготовить его к работе можно всего за несколько минут.

Читать далее

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 1. Введение

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

Дабы исчерпать до дна тему сокетов в Python я решил изучить все возможные способы их использования в данном языке. Чтобы всех их можно было испытать и попробовать на зуб, были созданы 19 версий простого эхо-сервера: от примитивного использования класса socket до asyncio. Блокирующие и неблокирующие сокеты, процессы и потоки, select'ы и selector'ы, коллбеки и сопрограммы — все эти темы расположены в эволюционном порядке, чтобы один пример плавно перетекал в другой.

Отдельно разобрано появление асинхронности в Python. На примерах детально показано, как и зачем появились итераторы, из них — генераторы, сопрограммы. Ближе к концу построен учебный макет библиотеки asyncio с минимально необходимым кодом, чтобы любой (даже такой, как я) смог разобраться, как на самом деле устроена асинхронность, как там все внутри работает.

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

Читать далее

Обзор книги Аллена Б. Дауни «Think Python. Основы Python»

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

Написать хороший учебник по Python сложно. Пожалуй, сложнее, чем по любому другому языку программирования. Как ни странно, из-за того, что Python — универсальный, распространённый и очень простой язык. Но Аллену Дауни, профессору компьютерных наук, это, похоже, удалось.

В книге найдётся интересное упражнение для изучения любого аспекта языка Python. Если вы изучаете обязательный в таких случаях модуль turtle, то будете рисовать с помощью черепашки не просто какие-то скучные прямоугольники, а буквы алфавита и спираль Архимеда. А ещё — почему бы нам не нарисовать один из самых знаменитых фракталов — кривую Коха? Если вы знакомитесь с понятием функции, то вместо скучных вычислений попробуйте найти решение уравнения Великой теоремы Ферма.

Читать далее