Как стать автором
Обновить
38
0
Евгений @Eugene_Rymarev

Программист Python

Отправить сообщение

systemd: как писать юниты с элегантной перезагрузкой

Время на прочтение20 мин
Количество просмотров27K

Разработка системы с элегантным завершением работы может оказаться той ещё пляской с бубном. В идеальном мире каждый сервис управлялся бы юнитом systemd. ExecStart запускала бы процесс, обрабатывающий SIGTERM, а ExecStop оповещало бы процесс и осуществляло блокировку, которая бы корректно завершала процесс и его ресурсы.


Однако многие программы завершаются некорректно, а то и вовсе сбивают все настройки при закрытии. В этой статье мы рассмотрим поведение systemd при завершении работы и методы написания юнитов systemd для выборочной очистки (custom cleanup) перед закрытием. Подробности — к старту нашего курса по DevOps.

Читать дальше →

Как выучить что угодно в 7 раз быстрее и эффективнее

Время на прочтение4 мин
Количество просмотров120K

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

Удивительно, но такое средство было найдено в 1990 году американским социологом Майклом Хоу. Он провел серию тестов среди студентов и определил, что пользователи «волшебного средства» в 7 раз лучше запоминали материал, легко вспоминали факты и легко применяли знания на практике.

Тот, кто использовал «волшебное средство» был наголову выше обычных студентов. «Обычные» хуже помнили материал и хуже его понимали, более того, даже одаренные отличники были слабее тех, кто использовал это «волшебное средство».

Это удивительное средство...

Читать далее

IT для неайтишников: Срывают сроки, что делать бизнес-заказчику?

Время на прочтение13 мин
Количество просмотров12K

Срыв сроков и выход за оценки - довольно частая и болезненная проблема бизнеса при взаимодействии с IT-специалистами. Иногда срывы сроков и выходы за оценки начинают приобретать хронический характер и встаёт острый вопрос: «Что же с этим делать?». Давайте рассмотрим, какие действия могут предпринять «неайтишники», чтобы выйти из ситуации. Сразу скажу, что слова: «Просто напишите нормальное ТЗ» - не прозвучат.

Читать далее

Исчерпывающее руководство по множествам в Python

Время на прочтение10 мин
Количество просмотров74K

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

Читать далее

Руководство по MicroPython MQTT на базе Raspberry Pi

Время на прочтение5 мин
Количество просмотров9.6K


Сегодня рассказываем как написать простой MQTT-клиент на Raspberry Pi при помощи MicroPython и реализовать функции подключения, отправки сообщений и подписки между клиентом и брокером MQTT-сообщений. Подробности о разработке с использованием протокола интернета вещей MQTT — к старту курса по Fullstack-разработке на Python.

Читать дальше →

Не трогай это

Время на прочтение4 мин
Количество просмотров11K

Вчера увидел вот этот пост в LinkedIn с фразой «First rule of programming, If it works, don't touch it» и как-то вскипело. Поясню почему.

Читать далее

Списковые включения в Python мощнее, чем можно подумать

Время на прочтение7 мин
Количество просмотров36K

В Python списковые включения (и генераторы списков) —  замечательные механизмы, способные серьёзно упрощать программный код. Правда, чаще всего их используют в форме, предусматривающей наличие единственного цикла for и, возможно, одного условия if. И это всё. Но если попытаться немного вникнуть в эту тему, то окажется, что у списковых включений Python имеется гораздо больше возможностей, чем можно подумать, возможностей, разобравшись с которыми, можно, по меньшей мере, кое-чему научиться.

Читать далее

Taichi и 100-кратное ускорение Python-кода

Время на прочтение12 мин
Количество просмотров36K

Python стал самым популярным языком во многих быстроразвивающихся областях, таких, как глубокое обучение и различные направления анализа и обработки данных. Но при этом за удобство работы с Python-кодом, за высокий уровень его читабельности, приходится платить производительностью. Конечно, все мы время от времени жалуемся на скорость работы программ, и Python, безусловно, не стоит винить во всех грехах. Несмотря на это, справедливым будет заявление о том, что природа Python, интерпретируемого языка, не способствует высокой производительности кода, особенно когда речь идёт о «тяжёлых» вычислениях (один из признаков таких вычислений — наличие в программе нескольких вложенных циклов).

Если вы когда-либо попадали в одну из следующих ситуация — тогда эта статья, определённо, написана для вас.

Читать далее

Запускаем OpenVPN в Докере за 2 секунды

Время на прочтение3 мин
Количество просмотров79K
Привет, хабровчане! Сталкивались ли вы когда-либо с ситуацией, когда очень хотелось бы виртуально перенестись в другой город, страну или на другой континент? У меня такая необходимость возникает достаточно часто, поэтому возможность иметь свой VPN сервер, который можно запустить где угодно, за пару секунд, стоял достаточно остро.

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


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

Время на прочтение3 мин
Количество просмотров10K

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

Читать далее

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

Время на прочтение11 мин
Количество просмотров7.5K

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

Читать далее

Тестируем слой БД в Python с использованием pytest и testcontainers

Время на прочтение15 мин
Количество просмотров18K

Несмотря на большую популярность testcontainers в мире java, информации по применению testcontainers в python в интернете практически нет. Даная статья - попытка ликвидировать этот пробел. Если тема показалась интересной, добро пожаловать под кат!

Читать далее

Грандиозное тестирование аккумуляторов AA/AAA

Время на прочтение6 мин
Количество просмотров306K
После моего грандиозного тестирования батареек многие просили провести такие же основательные тесты NiMh-аккумуляторов. За четыре месяца я протестировал 198 аккумуляторов (44 модели AA и 35 моделей AAA).



Читать дальше →

Как сделать ваш код на Python быстрым и асинхронным с Sanic

Время на прочтение6 мин
Количество просмотров15K

Всем привет, в этой статье я расскажу о создании простых асинхронных проектов на фреймворке Sanic.

Читать далее

11 друзей Sanic’а – собираем асинхронное веб-приложение на Python

Время на прочтение9 мин
Количество просмотров16K
Рано или поздно маленькие приложения разрастаются до нагруженных production-решений, поэтому программисту необходимо заранее продумать стек технологий. Для Python концептуальный выбор стоит между синхронными и асинхронными фреймворками. После появления библиотеки asyncio популярность асинхронных Python-фреймворков сильно выросла, потеснив таких монстров, как Django и Flask, и стало намного проще писать веб-приложения, способные пережить высокий RPS.

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

Статья поможет новичкам посмотреть, как можно использовать вместе различные асинхронные библиотеки. А опытные программисты могут сравнить представленное ниже решение со своими наработками и конструктивно покритиковать.
Читать дальше →

F-строки в Python мощнее, чем можно подумать

Время на прочтение5 мин
Количество просмотров142K

Форматированные строковые литералы, которые ещё называют f-строками (f-strings), появились довольно давно, в Python 3.6. Поэтому все знают о том, что это такое, и о том, как ими пользоваться. Правда, f-строки обладают кое-какими полезными возможностями, некоторыми особенностями, о которых кто-нибудь может и не знать. Разберёмся с некоторыми интересными возможностями f-строк, которые могут оказаться очень кстати в повседневной работе Python-программиста.

Читать далее

Мягкий способ релокации в Европу, или Поиск тихой гавани в неспокойные времена

Время на прочтение11 мин
Количество просмотров78K

Если 20-21 года можно назвать «годами удалёнки», то 2022 можно назвать годом релокации. Если раньше мысль о переезде посещала меня в формате «ну когда-нибудь потом, перееду в тепло ближе к пенсии», то после февраля этого года, когда зарубежные компании начали сворачивать бизнес в России, заказчики — сокращать бюджеты, а деньги со счёта в банке можно ждать неделями — вопрос о переезде в другую страну встал ребром. Причём не с целью «переждать», а как минимум для небольшой адаптации за рубежом, для возможного переезда уже на ПМЖ.

В качестве такой первой остановки выбрал Сербию (почему именно её расскажу дальше). Если вас тоже посещали/посещают мысли уехать — переходите под кат, там я делюсь своими критериями выбора страны,  деталями переезда и сведениями, которые удалось узнать у уже переехавших.

Читать далее

Использование Docker для сборки и запуска проекта на C++

Время на прочтение5 мин
Количество просмотров48K

В этой публикации речь пойдет о том, как выполнить сборку C++ проекта, использующего GTest и Boost, при помощи Docker. Статья представляет собой рецепт с некоторыми поясняющими комментариями, представленное в статье решение не претендует на статус Production-ready.


Зачем и кому это может понадобиться?


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


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


Представленное в статье окружение можно использовать как каркас для тестовых заданий или лабораторных работ.

Читать дальше →

Ventoy — мультизагрузка образов OS с преферансом и куртизанками

Время на прочтение23 мин
Количество просмотров230K
Привет Хабр!

Существует несколько программ с графическим интерфейсом, предназначенных для создания Live USB-дисков.

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


Проект начатый китайским разработчиком longpanda примерно полтора года назад, в марте 2020-го, успел набрать популярность и уже включён в состав репозиториев некоторых дистрибутивов linux. И неспроста.

Давайте посмотрим почему...

Пароль как крестраж: ещё один способ защитить свои учётные данные

Время на прочтение5 мин
Количество просмотров11K

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

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Екатеринбург, Свердловская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Software Developer, Backend Developer
Middle
Python
Docker
Linux
Git
PostgreSQL
Database
Software development
MySQL
SQL