Как стать автором
Обновить
0
0

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

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

50 терминов системного дизайна, которые должен знать каждый разработчик

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров18K



1. Масштабируемость / Scalability


  • Масштабируемость — это способность системы поддерживать возросшую нагрузку путем добавления дополнительных ресурсов
  • Примером является добавление дополнительных серверов для обработки увеличившегося веб-траффика
  • Что такое масштабируемость и как ее достичь?

2. Балансировка нагрузки / Load Balancing


  • Балансировка нагрузки — это разделение входящего сетевого траффика между несколькими серверами для снижения нагрузки на каждый из них (во избежание того, чтобы на один сервер приходилось слишком много траффика)
  • Примером является распределение веб-траффика между несколькими экземплярами EC2 с помощью сервиса AWS Elastic Load Balancer (ELB)
  • Понимание балансировки нагрузки
Читать дальше →
Всего голосов 43: ↑37 и ↓6+43
Комментарии6

Как работает Python Asyncio: воссоздаем с нуля

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров9.4K

Автор оригинала: Jacob Padilla

Сейчас asyncio — одна из самых модных тем в Python, и это справедливо — это отличный способ обработки программ, связанных с вводом-выводом! Когда я изучал asyncio, мне потребовалось некоторое время, чтобы понять, как это на самом деле работает. Но позже я узнал, что это по сути просто очень хороший слой поверх генераторов Python. В этой статье я собираюсь создать упрощенную версию asyncio, используя только генераторы Python. Затем я собираюсь реорганизовать пример, чтобы использовать ключевые слова async и await с помощью dunder-метода __await__, прежде чем замкнуть круг и заменить свою версию на настоящий asyncio. Надеюсь, создав простую версию asyncio в конце этой статьи, вы сможете лучше понять, как он творит свою магию!

Читать далее
Всего голосов 11: ↑10 и ↓1+12
Комментарии1

Использование подчеркивания в коде на Python

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

Подчёркивание _ — это символ, который используются в именах в коде на Питоне. Он влияет на то, как код работает и как код читают. Знания о том, куда поместить подчёркивание, помогает писать код.

Читать далее
Всего голосов 19: ↑19 и ↓0+24
Комментарии13

Вызовы функций в Python по прежнему медленные? Анализ последних оптимизаций в CPython

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

Я наткнулся на пост в X/Twitter, где Pritam обнаружил, что его решение на Leetcode работало медленнее, когда он использовал встроенную функцию min, и производительность улучшилась, когда он реализовал min прямо в своем коде на Python.

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

Автор на этом скриншоте использовал Python 2, который на данный момент уже стал древностью. За последние 10 лет Python 3 получил множество релизов, и последние версии были нацелены на улучшение производительности языка. Так действительно ли вызовы функций по‑прежнему так сильно влияют на производительность в Python?

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

Читать далее
Всего голосов 90: ↑90 и ↓0+113
Комментарии13

Ускорение роутера в Django в 51 раз

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров14K

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

Читать далее
Всего голосов 54: ↑53 и ↓1+61
Комментарии17

Telegram Боты на Aiogram 3.x: Первые Шаги

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров32K

Привет, друзья!

За свою практику программирования я успел написать множество малых, средних и крупных проектов, преимущественно в формате Telegram-ботов. Моя история началась с популярной на то время версии aiogram 2.24 (тех, кто в теме, поймут), а сейчас я полностью перешел на версию 3.x, о чем нисколько не жалею.

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

Сегодня мы научимся:

Читать далее
Всего голосов 11: ↑8 и ↓3+5
Комментарии13

Самоучитель по WinCC OA. Часть 1. Создание проекта и модуль para

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

Решил немного рассказать про систему визуализации от Siemens под названием WinCC OA. Эта SCADA на рынке России распространена гораздо меньше классических версий WinCC (и tia-портальных тоже), знаний по ней в открытом доступе достаточно мало, знаниями делятся неохотно. В ряде моментов WinCC OA радикально отличается от обычных распространенных SCADA, поэтому для начала необходимо усвоить базис.

Перед усвоением этого базиса я рекомендую в общем ознакомиться с архитектурой построения WinCC OA. Лучший способ такого ознакомления — найти в Интернете записи вебинаров и выступлений эксперта по WinCC OA Кондрашкина Андрея. Андрей Геннадьевич — очень мощный специалист и прекрасный докладчик. Настоящий цикл заметок, собственно говоря, и основан на его двухдневном вводном обучении. Рекомендую эту запись.

Можно углубиться в изучении вопроса и дальше, например — ознакомиться с аддонами SmartSCADA или Preactor, но это выходит очень далеко за рамки базового понимания системы. Самое главное, что необходимо вынести из этого ролика — это понимание архитектуры WinCC OA. Например, то, что система состоит из отдельных законченных функциональных единиц, которые называются «менеджерами». Менеджер выполняет строго свою заданную роль. Центральным звеном всей системы является менеджер событий (event manager или EV). Есть менеджер визуализации, User Interface или ui. Есть драйвера, например — s7. Есть менеджер для выполнения скриптов, control. Все менеджеры общаются друг с другом посредством центрального EV по стандартному протоколу TCP/IP, вне зависимости от того, находятся они на одном физическом ПК, или разнесены на несколько.

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

Третье. Все или почти все реализовано скриптами (»Что нельзя запрограммировать на Ассемблере, можно спаять» (с) ) и текстовыми файлами. Необходимо зажечь лампочку на мнемосхеме? Скрипт. Причем скрипт, который подвязывается к изменению переменной и выполняющий определенные действия только по этому изменению автоматически.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии33

Три консоли в инструментах разработчика 1С: упрощаем отладку кода, запросов и отчетов

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

Привет, Хабр! В одном из недавних проектов мне удалось поближе познакомиться с «Инструментами разработчика» (далее ИР). Это универсальный комплекс средств, который помогает решать широкий спектр задач, поставленных разработчику и администратору. 

Описание всего инструментария будет слишком объемной задачей – многие из них заслуживают отдельной статьи. 

Меня зовут Николай, я 1С-разработчик в SimbirSoft и хочу поделиться собственным опытом применения трех инструментов из набора, которые использую их чаще всего: 

Консоль запросов;

Консоль компоновки;

Консоль кода. 

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

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии10

За границей Hello World: полный гайд по разработке Telegram ботов с помощью Python и Aiogram 3. Часть 1

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров220K

Нетипичный туториал по разработке Telegram-бота на Python и Aiogram 3. В отличие от большинства гайдов и туториалов про разработку ботов «для новичков», здесь будут рассмотрены все аспекты создания бота, от установки редактора кода до подключения оплаты и развёртывания на сервере. В первой части мы рассмотрим подготовку окружения, файловую структуру бота и напишем первый рабочий код бота.

Читать далее
Всего голосов 8: ↑7 и ↓1+7
Комментарии24

Какие кабели можно встретить в стойке дата-центра?

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

Приступая к работе в ЦОД, можно легко запутаться в различных типах кабелей, которые используются для соединения и подключения сетевых устройств и серверов. Некоторые из них распространены и в повседневной жизни, а потому хорошо узнаваемы – Ethernet-кабели (с коннекторами RJ-45) и кабели питания (например, с распространенными вилками C13). Но другие, такие как оптические кабели с коннекторами стандарта SFP, LC, SC, силовые с вилкой типа IEC-309 и т. д., известны не так широко.

Если вы проводите какие-либо работы непосредственно в стойке, любая ошибка может стоить дорого – нажата не та кнопка, и клиенты уже в дауне, а любимые и глубоко уважаемые специалисты техподдержки шлют вам тикеты счастья. Даже Uptime Institute в своем исследовании 2021 года отмечает, что в 79% случаев причиной падения серверов в ЦОДах является человеческий фактор.  Всё надо делать вовремя – и нажимать кнопки, и менять комплектующие, и переключать кабели… 

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

Этот материал как раз об этом. 

В первую очередь, он будет полезен в роли шпаргалки сотрудникам-стажерам, только начинающим работу с аппаратной частью ИТ-инфраструктуры. 

Читать далее
Всего голосов 30: ↑28 и ↓2+36
Комментарии27

Работаем с Git: трудовые будни

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров42K

Прошлая статья «Работаем с Git: первые шаги в GitHub» была посвящена установке, настройке Git и классическим операциям из набора для новичков GitHub. А теперь перейдём к практике и рассмотрим «горячие» сценарии, которые делают трудовые будни куда веселее. Или не очень.

Читать далее
Всего голосов 19: ↑16 и ↓3+16
Комментарии18

Ядро планеты Python. Интерактивный учебник

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

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


Оригинал учебника лежит на GitHub, вы вольны сколько угодно дополнять и переделывать его. Самое главное — учебник написан на Jupiter Notebook, а это значит, что вы можете интерактивно редактировать код, мгновенно добавляя новые сущности или проясняя непонятные моменты.


Core of the planet Python

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

Полное руководство по модулю asyncio в Python. Часть 5

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

Привет, Хабр! Публикуем пятую часть (перваявтораятретьячетвёртая) перевода руководства по модулю asyncio в Python. Здесь представлены разделы оригинала с №10 по №13.

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

Django Rest Framework для начинающих: как работает ModelSerializer

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

В предыдущих статьях мы подробно разобрали работу сериалайзера на основе классов BaseSerializer и Serializer, и теперь мы можем перейти к классу-наследнику ModelSerializer.


image


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


  • автоматическое создание полей сериалайзера на основе данных о корреспондирующих полях модели;
  • автоматическое включение в поля сериалайзера тех же валидаторов, которые есть в полях модели, а также при определённых условиях метавалидаторов;
  • заранее определённые методы create и update.

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

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

Как я несколько лет боролся с прокрастинацией и победил: полное практическое руководство

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

Постоянно откладываешь дела на потом и не видишь в этом проблемы? Мне это знакомо. Расскажу как не повторить моих ошибок и почему пора это прекращать. Не откладывай эту статью на потом!

Начать читать
Всего голосов 125: ↑100 и ↓25+95
Комментарии174

Полное руководство по модулю asyncio в Python. Часть 3

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

Сегодня публикуем третью часть (первая, вторая) перевода учебного руководства по модулю asyncio в Python. Здесь представлены разделы оригинала №5, 6 и 7.

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

Разукрашиваем вывод mysql-client в консоли

Время на прочтение4 мин
Количество просмотров30K
Цвет и звук — это те небольшие радости, которые могут разукрасить и облегчить будние администратора при постоянной работе с консолью. Вывод цветовой информации регулируется так называемым escape-последовательностями, определяющими среди прочего цвет текста и цвет фона.

Общий вид: \033[Xm, где X — это значение параметра (цифра). Например, echo -ne "\033[34mHELLO" выведет синим цветом «HELLO». Таблицу цветов и других доступных параметров (подчеркивание, мигание и т.п.) можно получить в документации man console_codes в разделе «ECMA-48 Set Graphics Rendition». Обычно поддержка цвета интегрирована в само приложение, но mysql-client не входит в число таких программ.

В интернете не раз был встречен вопрос о разукрашивании консоли mysql, но нигде не нашлось рецепта. Только общие слова «может быть состряпать обертку» или «посмотрите в исходном коде». Такой вопрос на StackOverflow жил без ответа более 2 лет! «Жил» было специально употреблено в прошедшем времени, потому что ответ нашелся.

Поможет нам утилита grc. Она доступна в большинстве дистрибутивов и о ней многие знают. Но как обернуть в нее вывод mysql-client?


Читать дальше →
Всего голосов 103: ↑102 и ↓1+101
Комментарии30

Руководство по программированию сокетов на Python. Устранение проблем и справочный раздел

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


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


К концу руководства вы освоите основные функции и методы модуля Python socket, научитесь применять пользовательский класс для отправки сообщений и данных между конечными точками и работать со всем этим в собственных клиент-серверных приложениях.

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

Как работать с процессами и потоками в Python

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

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

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

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

Руководство по программированию сокетов на Python. Протокол и сообщения

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



К концу руководства вы освоите основные функции и методы модуля Python socket, научитесь применять пользовательский класс для отправки сообщений и данных между конечными точками и работать со всем этим в собственных клиент-серверных приложениях. Материалом делимся к старту курса по Fullstack-разработке на Python.

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

Информация

В рейтинге
6 289-й
Зарегистрирован
Активность

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

Fullstack Developer, DevOps
Intern
Python
Database
English
Git