Как стать автором
Обновить
18
0
Баев Александр @oldbay

GIS Python developer

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

Шпаргалка по визуализации данных в Python с помощью Plotly

Время на прочтение62 мин
Количество просмотров306K
Plotly — библиотека для визуализации данных, состоящая из нескольких частей:

  • Front-End на JS
  • Back-End на Python (за основу взята библиотека Seaborn)
  • Back-End на R

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



Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии17

Автоматизация homebridge с помощью Node-Red

Время на прочтение4 мин
Количество просмотров14K
На мой взгляд, одним из главных минусов homebridge является отсутсвие возможности создавать продвинутые сценарии. Вся автоматизация возлагается на домашний центр, которым может быть Ipad (подключенный к зарядке), Apple TV или HomePod. Не у всех эти устройства есть, вдобавок у HomeKit очень скудная автоматизация. Исправить данную ситуацию можно с помощью Node-Red. Статья рассчитана на пользователей, у которых уже установлен и настроен homebridge.


Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии2

41 вопрос о работе со строками в Python

Время на прочтение9 мин
Количество просмотров158K
Я начал вести список наиболее часто используемых функций, решая алгоритмические задачи на LeetCode и HackerRank.

Быть хорошим программистом — это не значит помнить все встроенные функции некоего языка. Но это не означает и того, что их запоминание — бесполезное дело. Особенно — если речь идёт о подготовке к собеседованию.

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


Читать дальше →
Всего голосов 47: ↑44 и ↓3+59
Комментарии40

DLL & Python

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

DLL & Python


image


Недавно меня заинтересовала тема использования DLL из Python. Кроме того было интересно разобраться в их структуре, на тот случай, если придется менять исходники библиотек. После изучения различных ресурсов и примеров на эту тему, стало понятно, что применение динамических библиотек может сильно расширить возможности Python. Собственные цели были достигнуты, а чтобы опыт не был забыт, я решил подвести итог в виде статьи — структурировать свой знания и полезные источники, а заодно ещё лучше разобраться в данной теме.


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

Читать дальше →
Всего голосов 24: ↑21 и ↓3+26
Комментарии13

Микросервисы для начинающих

Время на прочтение7 мин
Количество просмотров55K
Оглядываясь примерно на пять лет назад в прошлое, можно заметить, насколько сильно с тех пор изменилось отношение к архитектуре микросервисов. Поначалу они были чрезвычайно популярны. После успеха Netflix, Amazon и Gilt.com разработчики решили, что де-факто разработка микросервисов не отличается от разработки приложений. Теперь же все поняли, что микросервисы представляют из себя новый архитектурный стиль, который эффективен для решения определенных задач, имеет свои плюсы и минусы.

Чтобы понять, что такое микросервисы и в каких случаях их следует использовать, мы обратились к Джейме Буэльта (Jaime Buelta), автору книги «Hands-On Docker for Microservices with Python». Он рассказал о преимуществах этой архитектуры, а также поделился рекомендациями для разработчиков, планирующих перейти на нее с монолитов.

image
Читать дальше →
Всего голосов 15: ↑8 и ↓7+4
Комментарии4

Микросервисы: как соблюсти контракт

Время на прочтение9 мин
Количество просмотров18K
Переход к микросервисной архитектуре требует пересмотра подхода к разработке, тестированию, сопровождению, проектированию – иными словами, ко всем аспектам жизненного цикла программных компонентов. В этом посте мы расскажем о практиках, к которым пришла команда архитекторов Acronis на пути к лучшим API компонентов. Рассказ будет включать как постановку задачи, так и анализ ее решений. Возможно, кому-то этот пост покажется “капитанским”, кому-то будет неясно почему упустили супер-решение Х, но надеемся, что вам он будет интересен и полезен. Строителей микросервисов приглашаем под кат – почитать и оставить свои комментарии.

image
Читать дальше →
Всего голосов 24: ↑21 и ↓3+31
Комментарии46

С чего начать изучение Python: книги для начинающих

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

Друзья, забирайте в закладки подборку из 17 книг по Python.

Подборка поможет вам освоить язык программирования с нуля или с минимальными знаниями.
Готовы приступить к изучению Python?

Тогда начнем!
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии16

Python как предельный случай C++. Часть 2/2

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

Продолжение. Начало в «Python как предельный случай C++. Часть 1/2».


Переменные и типы данных


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


В С++ у программиста есть выбор: использовать автоматические переменные, размещаемые в стеке, или держать значения в памяти данных программы, помещая в стек только указатели на эти значения. Что, если мы выберем для Python только одну из этих опций?


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

Читать дальше →
Всего голосов 34: ↑25 и ↓9+16
Комментарии28

Python как предельный случай C++. Часть 1/2

Время на прочтение10 мин
Количество просмотров17K
От переводчика

Брендон Роудс − весьма скромный человек, представляющий себя в твиттере как «Python-программиста, возвращающего долг сообществу в форме докладов или эссе». Число этих «докладов и эссе» впечатляет, равно как и число свободных проектов, контрибьютором которых Брендон являлся или является. А ещё Брэндон опубликовал две книги и пишет третью.


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


Как у нас принято, прошу сообщать в личку о допущенных мной ошибках и опечатках.


Что означает словосочетание «предельный случай» в названии моего доклада? Предельный случай возникает, когда вы перебираете последовательность опций, пока не дойдёте до крайнего значения. Например, n-сторонний многоугольник. Если n=3, то это треугольник, n=4 − четырёхугольник, n=5 − пятиугольник, и т. д. По мере приближения n к бесконечности стороны становятся всё меньше и всё многочисленнее, и очертание многоугольника становится похоже на окружность. Таким образом, окружность является предельным случаем для правильных многоугольников. Вот что происходит, когда некая идея доводится до предела.


Я хочу поговорить о Python как о предельном случае для C++. Если вы возьмёте все хорошие идеи из C++ и очистите их, доведя до логического завершения, я уверен, в результате вы придёте к Python так же естественно, как серия многоугольников приходит к окружности.

Читать дальше →
Всего голосов 52: ↑37 и ↓15+22
Комментарии22

Исследование глубин аннотаций типов в Python. Часть 2

Время на прочтение9 мин
Количество просмотров8.2K
Сегодня мы публикуем вторую часть перевода материала, который посвящён аннотациям типов в Python.



Первая часть
Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии5

Исследование глубин аннотаций типов в Python. Часть 1

Время на прочтение8 мин
Количество просмотров9.1K
C 2014 года, когда в Python появилась поддержка аннотаций типов, программисты работают над их внедрением в свой код. Автор материала, первую часть перевода которого мы публикуем сегодня, говорит, что по её оценке, довольно смелой, сейчас аннотации типов (иногда их называют «подсказками») используются примерно в 20-30% кода, написанного на Python 3. Вот результаты опроса, который она, в мае 2019, провела в Twitter.

Как оказалось, аннотации используют 29% респондентов. По словам автора статьи, в последние годы она всё чаще натыкается на аннотации типов в различных книгах и учебных руководствах.

Вторая часть



В документации по Python термины «type hint» («подсказка типа») и «type annotation» («аннотация типа») используются как взаимозаменяемые. Автор статьи пользуется, в основном, термином «type hint», мы — термином «аннотация типа».

В этом материале будет рассмотрен широкий спектр вопросов, касающихся использования аннотаций типов в Python. Если вы хотите обсудить оригинал статьи с автором — можете воспользоваться механизмом pull-запросов.
Читать дальше →
Всего голосов 39: ↑34 и ↓5+29
Комментарии7

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

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

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



Описывается достаточно простое в реализации программное средство контроля используемых ресурсов оперативной памяти в процессе выполнения приложения. Основу реализации составляет перехват и регистрация запросов на выделение, освобождение и повторное использование ресурсов памяти, направляемых приложением операционной системе через вызовы malloc(), calloc(), realloc(), free(). Все запросы памяти регистрируются в специальном журнале и по завершении приложения накопленная информация выводится в форме отчета на консоль или записывается в текстовый файл. Анализ отчета позволяет выявлять случаи неэффективного использования оперативной памяти в приложении. К таковым относятся “утечки” (memory leaks), когда запрошенные ресурсы памяти не освобождаются и не востребуются приложением, фрагментация, когда размеры освобожденных и доступных для повторного использования непрерывных участков памяти оказываются недостаточными для удовлетворения новых запросов, что приводит к выделению дополнительных ресурсов.

Встраиваемое средство контроля оперативной памяти может находиться во включенном или выключенном состояниях (на регистрацию запросов памяти), а возможности программного переключения состояний позволяют управлять и оптимизировать объем получаемых для данных по выделенным ресурсам памяти.
Читать публикацию
Всего голосов 11: ↑9 и ↓2+7
Комментарии7

[Что не так с GraphQL]… И как с этим бороться

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

В прошлом материале, мы рассмотрели неудобные моменты в системе типов GraphQL.
А теперь мы попробуем победить некоторые из них. Всех заинтересованных, прошу под кат.

Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии23

Что не так с GraphQL

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

В последнее время GraphQL набирает всё большую популярность. Изящный синтаксис запросов, типизация и подписки.


Кажется: "вот оно — мы нашли идеальный язык обмена данными!"...


Я разрабатываю с использованием этого языка уже больше года, и скажу вам: всё далеко не так гладко. В GraphQL есть как просто неудобные моменты, так и действительно фундаментальные проблемы в самом дизайне языка.


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

Читать дальше →
Всего голосов 91: ↑88 и ↓3+85
Комментарии132

Сергей Голубев: «Самое лучшее, что можно сделать для OSM сейчас — взять дамп планеты, удалить его и начать всё заново»

Время на прочтение9 мин
Количество просмотров19K
Сергей Голубев — натуралист, опытный осмер и автор блога «Город Шахты». Его размышления об OpenStreetMap всегда неожиданны, а потому вдвойне интересны. Он умеет найти необычный ракурс и на привычное посмотреть под другим углом. Зачем OSM нужны катастрофы, почему у него не существует сообщества, а также какое будущее ждет этот проект — обо всем этом он рассказал в интервью.

Читать дальше →
Всего голосов 53: ↑52 и ↓1+51
Комментарии74

SQL и XPath против РосРеестра

Время на прочтение3 мин
Количество просмотров26K
Уже несколько лет РосРеестр выдаёт данные в формате XML, а с недавних пор – только в XML. И это замечательно! Ведь это удобный, человек-читаемый и машино-читаемый формат, для работы с которым существует огромное количество инструментов. Но Кадастровым Инженерам почему то, подавай данные в таких древних форматах как .tab и .shp – ведь только с этими форматами они умеют работать в своих ГИС. Для решения этой проблемы подключилась куча корыстных и бескорыстных людей – и в результате КИ получили кучу конвертеров в свои любимые программы. Но есть маленькая проблема – РосРеестр имеет привычку менять xml-схемы, молча и без предупреждения. В результате работа КИ парализуется, ведь они не способны работать с XML!
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии11

Понимание сверточных нейронных сетей через визуализации в PyTorch

Время на прочтение10 мин
Количество просмотров32K
В нашу эру, машины успешно достигли 99% точности в понимании и определении признаков и объектов на изображениях. Мы сталкиваемся с этим повседневно, например: распознавание лиц в камере смартфонов, возможность поиска фотографий в google, сканирование текста со штрих-кода или книг с хорошей скоростью и т. д. Такая эффективность машин стала возможным благодаря особому типу нейронной сети, называемой сверточной нейронной сетью. Если вы энтузиаст глубокого обучения, вы, вероятно, слышали об этом, и вы могли разработать несколько классификаторов изображений. Современные фреймворки глубокого обучения, такие как Tensorflow и PyTorch, упрощают обучение машин изображениям. Однако все еще остается вопрос: как данные проходят через слои нейронной сети и как компьютер обучается на них? Чтобы получить четкое представление с нуля, мы погрузимся в свертку, визуализируя изображение каждого слой.

image
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии8

Несовершенные технологии

Время на прочтение5 мин
Количество просмотров10K
Здравствуйте. Я Михаил Капелько, программист команды Opensource Game Studio. Я хочу рассказать вам, что мы узнали при приближении к выпуску OGS Mahjong 1.0, нашему последнему релизу пасьянса Маджонг (но не последнему в серии Маджонг). Эта статья продолжает предыдущую: Долгий путь к Mahjong 0.7

Год назад в мае 2011-го мы выпустили OGS Mahjong 0.7, он дался нам с большим трудом. В этом году в сентябре 2012-го мы выпустили OGS Mahjong 1.0. Во время разработки 1.0 мы хотели распрастранить нашу игру на всех дистрибутивах Linux, а также Mac OS X. К сожалению, нам это не удалось, т.к. OGS Mahjong использует OGRE и OIS.
Читать дальше →
Всего голосов 13: ↑8 и ↓5+3
Комментарии11

Введение в комлексные числа

Время на прочтение2 мин
Количество просмотров31K
Привет!

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

image

А школьники могут что-то новое узнать ;)
// Всех кого заинтересовал прошу под кат.
Читать дальше →
Всего голосов 56: ↑28 и ↓280
Комментарии111

PostgreSQL на многоядерных серверах Power 8

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

Аннотация


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

Введение


В ряде задач практически неограниченного масштабирования по объему обрабатываемых транзакций можно достичь, используя распределённые системы, в которых тем или иным способом поток транзакций распределяется на большое количество серверов. Такое масштабирование часто называют “горизонтальным”. Однако, универсального распределенного решения не существует, кроме того, распределённость имеет свою цену. Архитектура системы должна заранее проектироваться как распределённая. Распределенные системы менее гибки, чем монолитные, к тому же они сложнее в эксплуатации и требуют более высокой квалификации персонала. Одни задачи легче поддаются распараллеливанию, другие — сложнее. Поэтому спрос на высокопроизводительные монолитные системы существует, и достижение возможно лучших результатов по производительности в рамках одного сервера было и остается важной задачей. Это часто называют “вертикальным масштабированием”.

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

Для решения таких проблем существуют механизмы управления доступом к ресурсам — использование блокировок, а также пригодные в некоторых случаях неблокирующие (lock-free) подходы. Рост производительности этих механизмов, а также детализация блокировок дает возможность снизить издержки, связанные с одновременным (конкурентным) доступом.

При этом, если в распределённых системах узким местом оказывается, как правило, сеть, то в монолитных системах, близких к пиковой производительности, её рост ограничивается именно упомянутыми механизмами управления одновременным доступом.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии44

Информация

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