Pull to refresh
5
0.1
Сергей Смирнов @mao_zvezdun

Пользователь

Send message

Широка, необъятна, интерактивна: оффлайн карта России с Plotly

Level of difficultyMedium
Reading time14 min
Views21K

Привет, Хабр!

На связи участник профессионального сообщества NTA Максим Алёшин.

Сегодня создание интерактивной карты на python не составляет большого труда: стоит подключить библиотеку (например, Folium или Bokeh), указать картографический сервер, и после выполнения нескольких «магических» строк кода ваши данные как на ладони!

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

Оффлайн карта России с Plotly

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

Level of difficultyMedium
Reading time13 min
Views60K

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

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

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

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

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

Полезные алиасы в Bash

Level of difficultyEasy
Reading time4 min
Views30K

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

Читать далее

Движок для игры от первого лица в 265 строках Javascript

Level of difficultyHard
Reading time6 min
Views26K
image

Сегодня окунёмся в мир, который можно потрогать. В этой статье мы исследуем, как с нуля, быстро и без особо сложной математики написать движок для игры от первого лица. Для этого мы воспользуемся приёмом под названием «бросание лучей» (raycasting). Возможно, вы видели примеры такой техники в играх Daggerfall и Duke Nukem 3D, а из более свежего – в статьях из «ludum dare» от Нотча Перссона. Что ж, для Нотча это неплохо, но не для меня! Вот демка (управление стрелками и тачпадом) [источник].
Читать дальше →

Математическая версия игры «Морской бой»

Level of difficultyEasy
Reading time3 min
Views9.3K

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

В качестве игрового поля берётся координатная плоскость хОу произвольного размера. Если играющие знакомы с отрицательными числами, то от (-10; -10) до (10; 10) скорее всего будет достаточно, хотя чем обширнее их знания алгебры, тем больше нужна игровая площадь. Для всех, кто младше шестого класса, советую поле от (0; 0) до (20; 20), или даже до (10; 10). Прямоугольное, естественно (квадратность не обязательна). Для старших, конечно, можно задавать её как любую криволинейную трапецию или не задавать вовсе, лишь бы все корабли вместились в чертёж заданного масштаба.

Читать далее

Как я использовал Pytest для написания тестов, гарантированно обходящих двухфакторную аутентификацию

Reading time10 min
Views5.4K

Тестирование страниц входа и согласия может быть довольно сложным: та же самая двухфакторная аутентификация (2FA), которая обеспечивает безопасность ваших клиентов, также затрудняет написание автоматизированных тестов. В этой статье я расскажу, как написал Python-тесты, которые обходят 2FA и при этом не покушаются на  безопасность клиентов. Для этого я использовал Selenium и разработал Slackbot.

Читать далее

Правильное подключение к БД: почему, зачем и как

Reading time5 min
Views18K


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


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


Статья рассчитана на начинающих и всех, кто интересуется этой темой.

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

«Карманный синоптик за час». Пишем Telegram-бота для мониторинга погоды на Python

Level of difficultyMedium
Reading time6 min
Views35K

Хабровчане, всем привет! Меня зовут Максим Плачковский, я автор канала PythonToday. Из этой статьи вы узнаете, как написать своего Telegram-бота для получения данных о погоде в любом городе нашей планеты. Мы детально рассмотрим работу с API, парсинг JSON и напишем бота на асинхронной библиотеке aiogram. А после — загрузим его на виртуальный сервер и запустим. Если интересно, добро пожаловать под кат!
Читать дальше →

Blink: супербыстрый эмулятор x86_64 размером 119 КБ

Level of difficultyMedium
Reading time6 min
Views20K


На Хабре когда-то писали про талантливую программистку Джастин Танни, автора маленьких и очень быстрых приложений. Приятно знать, что она не останавливает свою неординарную деятельность. Например, одна из её последних разработок — крошечный эмулятор под названием Blink размером всего 116 КБ, который очень быстро компилирует WASM и выполняет Linux-программы x86_64 под разными платформами и даже в браузере.
Читать дальше →

Асинхронные задачи с FastAPI и Celery

Level of difficultyEasy
Reading time10 min
Views32K

Если в приложении есть длительные процессы, то вместо того, чтобы блокировать основной поток, вы должны обрабатывать их в фоновом режиме.

Чтобы достичь этого, мы расскажем вам о процессе настройки Celery и Redis для обработки длительно выполняющихся процессов в приложении FastAPI. Мы также будем использовать Docker и Docker Compose, чтобы связать все воедино. Наконец, мы рассмотрим, как протестировать задачи Celery с помощью модульных (unit) и интеграционных тестов.

Читать далее

Glider guns vs случайная конфигурация в игре «Жизнь»

Reading time2 min
Views3.4K

И снова к старой теме. В старой статье я сделал два предположения:

Гипотезы

Первая гипотеза касается окончания 'движухи' - в широком диапазоне изначальных плотностей p от 0.1 до 0.7, после окончания 'движухи' 'пепел' имеет одну и ту же плотность, около 0.27

Так как ружья накачают 'вселенную' глайдерами при сколь угодно малой изначальной плотности, и снова начнется 'движуха', то вторая гипотеза сильнее:

В пределе при любой плотности p (кроме вырожденных случаев p=0, p=1) получается 'пепел' плотности 0.027

На Julia, имея теперь огромные мощности, я решил проверить обе. Вас ждет красивое видео

Читать далее

Игровой программный рендеринг в 2022-м году

Reading time28 min
Views28K


Программный рендеринг был широко распространён в играх на ПК до повсеместного распространения т. н. 3d-ускорителей (видеокарт). Каждая игра содержала свой собственный код рендеринга, каждая игра имела свои уникальные особенности в нём. Но с распространением видеокарт программный рендеринг в играх умер.


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

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

Создаём сложные интерфейсы и спецэффекты на базе Qt. Часть II

Reading time25 min
Views20K

Привет, Хабр! Меня зовут Михаил Полукаров, я занимаюсь разработкой desktop-версии в команде VK Teams. В первой части я рассказывал о том, как использовать маски и создавать сложные многослойные окна. Под катом этой статьи мы продолжим исследовать возможности Qt Framework, рассмотрим полупрозрачность и управление буксировкой окна, а также реализуем интересный спецэффект. В конце статьи рассмотрим, как можно применить на практике весь, изложенный в этом цикле статей, материал для создания современного демонстрационного приложения.

Читать далее

Мир непостоянен, и это нормально

Reading time7 min
Views9.4K


Похоже, последние два кризиса (февраль и сентябрь) в отношении ИТ надолго, и нужно учиться жить в новых условиях. Относительно февраля — мы только-только более-менее стабилизировались после ухода вендоров и других событий постфевральского мира. Сейчас я расскажу именно про тогдашнюю ситуацию: кому-то наш опыт, возможно, пригодится сегодня.

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

Нассим Талеб ввёл понятие антихрупкости — это не просто устойчивость к кризисам, а укрепление в ответ на них.

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

В общем, теперь будет только так. И работать надо в условиях постоянных изменений. И это новая «нормальность».

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

Для начала разберём кризис 24 февраля и посмотрим, как он повлиял на меня: у нас большая группа компаний, много сотрудников, проектов, сотни вендоров и решений. Вся деятельность спланирована минимум на год вперёд. Для планирования надо понимать цели группы, знать стратегию и каскадировать эти планы на подразделения. Проблема только в том, что, когда прилетает «джокер», всё это летит в тартарары. И наступает управленческая паника.
Читать дальше →

Как оставаться программистом, если у тебя память как у дрозофилы

Reading time15 min
Views62K

Мой мадригал тем инструментам разработки, которые изменили мою жизнь

Программирование стало гораздо более многогранным ремеслом с тех пор, как в середине 1990-х я впервые попробовал AmigaBASIC. В те времена еще можно было купить один большой том о компьютере, на котором вы программируете – и там бы нашлось 99% всей нужной информации. Эта книга, где на множестве страниц уголки загнуты в качестве закладок, обклеенная стикерами, лежала бы у вас под рукой, пока вы вбивали бы команды в монохромный текстовый редактор.

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

Сегодня никто бы больше и не подумал покупать документацию по разработке – и Microsoft, и Apple свободно выкладывают свою документацию в Интернете для всех желающих. А что говорить о проектах с открытым исходным кодом!

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

Читать далее

Самый мощный суперкомпьютер 60-х. Краткая история IBM Stretch

Reading time5 min
Views8.7K


42 года назад, 5 сентября 1980 года в Университете Бригама Янга был навсегда выключен последний суперкомпьютер IBM Stretch. Этот сверхмощный мейнфрейм, известный также под наименованием IBM 7030, стал результатом научно-исследовательского проекта, который корпорация IBM начала еще в 1955 году — его целью было построить суперкомпьютер, в сотни раз превосходящий по мощности все, что еще было создано до этого. Stretch по праву считался самым быстрым и продвинутым компьютером на всем земном шаре в конце 70-х и начале 80-х годов прошлого века, и в то же время снискал славу провального проекта, принес компании многомиллионные убытки и в итоге был выведен из эксплуатации. Почему его судьба сложилась именно таким образом? Все дело в завышенных ожиданиях.
Читать дальше →

Виды анимации на верстке: свойства, особенности, примеры кода

Reading time10 min
Views29K

Frontend-разработчик нашей компании Данила Абрамов рассказывает, как оптимизировать анимации и делать их плавными. В статье разберем CSS Transition, CSS Animation, SVG animation, JS-Анимацию, JS canvas и JS. WebGL / ThreeJs.

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

Читать далее

Руководство по CMake для разработчиков C++ библиотек

Reading time18 min
Views109K

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

Читать далее

#2 Нейронные сети для начинающих. NumPy. MatplotLib. Операции с изображениями в OpenCV

Reading time16 min
Views26K

Это вторая статья из серии введения в «Нейронные сети для начинающих». Здесь и далее мы постараемся разобраться с таким понятием — как обработка графических данных, визуализация данных, а также на практике решим пару простых задач. Предыдущая статья — #1 Нейронные сети для начинающих. Решение задачи классификации Ирисов Фишера
Маленький совет из будущего: «В данной статье будут затронуты некоторые понятия, о которых я писал раньше, так что для полного понимания темы, советую прочитать и предыдущую статью»
На самом деле, на хабре было множество публикаций по этой теме, но все они говорят о разных вещах. Давайте разберёмся и соберём всё в одну кучку, для полноценного понимания картины мира.
Читать дальше →

Обработка окон и вкладок браузера в Selenium PHP

Reading time15 min
Views11K

Один из распространённых сценариев работы с веб-приложениями заключается в открывании нового окна (или вкладки) браузера после выполнения пользователем определённого действия. Многие веб-разработчики используют HTML-тэг __blank, приказывающий браузеру при нажатии на ссылку открыть новое окно (или вкладку, это зависит от выбранных пользователем настроек). Работа с окнами в Selenium при помощи PHP может использоваться для автоматизации взаимодействия с окнами, вкладками и даже всплывающими окнами браузера.

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

В этой статье мы подробно рассмотрим применение Selenium для автоматизации взаимодействия с браузерами, вкладками и всплывающими окнами. Для демонстрации работы с окнами в Selenium PHP мы воспользуемся PHPUnit — фреймворком юнит-тестирования для PHP.
Читать дальше →

Information

Rating
5,929-th
Registered
Activity