Pull to refresh
0
0
Send message

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

Level of difficultyMedium
Reading time13 min
Views27K

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

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

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

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

Давайте разбираться
Total votes 43: ↑43 and ↓0+43
Comments9

Самый научный гайд по сну

Level of difficultyEasy
Reading time12 min
Views127K

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

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

Например, мне категорически не хотелось расставаться со смартфоном перед сном. Спустя долгие часы изучения этого вопроса я обнаружил, что этого не нужно делать! И ребята, сидящие на диете, можете выдохнуть, метаболизм во сне не отключается. Ниже мы подробно и без воды разберём всё, что касается сна.

Читать далее
Total votes 133: ↑127 and ↓6+121
Comments134

Покажи мне свой Git, и я скажу, кто ты

Reading time15 min
Views36K

Можно ли с помощью GitHub анализировать работу, не заглядывая в монитор сотрудника — без скриншотов и тайм-трекеров?

Я Александр Кириллов, технический директор компании Evrone. Больше 20 лет я посвятил разработке. В этой статье поделюсь с вами опытом, который собрал за время работы с распределенными командами. Расскажу о том, как, не нарушая приватность разработчиков, следить за качеством работы на проектах и отслеживать нежелательные паттерны с помощью метрик в Jira и Git.

Читать далее
Total votes 73: ↑63 and ↓10+53
Comments26

Как максимизировать своё capacity (2)

Reading time11 min
Views5.8K

Продолжаем рассказ про здоровую продуктивность. Вот здесь можно найти начало моего рассказа, а сейчас поговорим про планирование и выполнение задач.

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

Узнать как
Total votes 13: ↑13 and ↓0+13
Comments4

Вопросы и ответы для собеседования Go-разработчика

Level of difficultyMedium
Reading time53 min
Views104K

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


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


Да, это очень объемный пост, и вряд ли его можно вдумчиво осилить за один подход, но поместив его в закладки он, возможно, когда-то сослужит вам добрую службу (читать его можно по частям, находясь в метро или между вечными совещаниями; да и Ctrl + F никто не отменял). Ещё ему очень не хватает оглавления для удобной навигации между вопросами, но у хабраредактора нет возможности генерировать TOC (если будут запросы об этом в комментариях — сделаю его руками). Об очепятках, пожалуйста, пишите в личку.

Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments16

Проходим L6 интервью на System Design в FAANG

Reading time6 min
Views13K

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

Читать далее
Total votes 19: ↑15 and ↓4+11
Comments6

Когда и зачем нужен CI/CD

Reading time6 min
Views25K

Скорость сборки продукта — важное конкурентное преимущество в разработке программного обеспечения. То, что раньше делалось месяцами, сегодня выполняется за считанные дни без потери качества. Путь к ускорению релизов лежит через автоматизацию и внедрение CI/CD.

В статье разберём, когда и зачем нужен CI/CD, но перед этим, расскажем, как устроена методология и почему эффективнее внедрить её, чем деплоить вручную.

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments7

Арракис, который мы заслужили

Reading time4 min
Views50K

Во вселенной писателя-фантаста Фрэнка Герберта, Дюна, она же Арракис — это пустынная и маловодная планета с двумя лунами. По сюжету, она находится за пределами Солнечной системы, но если мы захотим поискать ближайшую схожую параллель, то больше всего подходит планета Марс. Предлагаю воспользоваться возможностями, которые даёт современная космонавтика, и совершить воображаемую прогулку на нашу Дюну.
Читать дальше →
Total votes 231: ↑225 and ↓6+219
Comments249

Как образуются астрофизические кротовые норы и как мы можем их наблюдать

Reading time14 min
Views16K

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

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

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

Читать далее
Total votes 13: ↑10 and ↓3+7
Comments1

Архитектура кода программного обеспечения: декорируем стратегией. Рассказ в 10 эпизодах, основанный на реальных событиях

Reading time20 min
Views11K

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

Читать далее
Total votes 15: ↑10 and ↓5+5
Comments9

Сделать робота на raspberry pi, обновленный pi-tank. Часть 2. Софт

Reading time6 min
Views28K


Вторая часть полностью посвящена описанию программного обеспечения, используемого на роботе.

Так как разработанный робот (pi-tank) по большому счету рассчитан на начинающих роботостроителей, то все будет максимально упрощено, а в конце статьи будет приложен образ (image) для raspberry pi для самостоятельного дальнейшего изучения.

Ссылка на 1-ю часть статьи.

Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments15

Ответы на часто задаваемые вопросы о NFT

Reading time6 min
Views44K
У вас тоже накопилось много вопросов к этому новому виду… искусства? Платформе?

Новости о блокчейне всегда заставляют нас задуматься: «Эм… А что здесь происходит?». Именно такое чувство я испытал, читая, как Граймс получает миллионы долларов за цифровые рисунки и видео в виде NFT-токенов или как анимацию Nyan Cat продали на блокчейн-аукционе за 43 млн рублей.


Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments19

CQS (CQRS) со своим блэкджеком

Reading time7 min
Views17K
Command-query separation (CQS) — это разделение методов на read и write.

Command Query Responsibility Segregation (CQRS) — это разделение модели на read и write. Предполагается в одну пишем, с нескольких можем читать. М — масштабирование.

Этот подход часто используют как способ организации кода, даже если хранилище одно. Но как всегда, в реальных более-менее сложных проектах эта штука дает сбой.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments12

Недостающее введение в контейнеризацию

Reading time13 min
Views42K

Эта статья помогла мне немного углубится в устройство и принцип работы контейнеров. Поэтому решил ее перевести. "Экосистема контейнеров иногда может сбивать с толку, этот пост может помочь вам понять некоторые запутанные концепции Docker и контейнеров. Мы также увидим, как развивалась экосистема контейнеров". Статья 2019 года.

Docker - одна из самых известных платформ контейнеризации в настоящее время, она была выпущена в 2013 году. Однако использование изоляции и контейнеризации началось раньше. Давайте вернемся в 1979 год, когда мы начали использовать Chroot Jail, и посмотрим на самые известные технологии контейнеризации, появившиеся после. Это поможет нам понять новые концепции...

Углубляемся дальше
Total votes 19: ↑19 and ↓0+19
Comments2

Использование алгоритма Прима для генерации соединённых друг с другом пещер

Reading time4 min
Views13K


Я решил объяснить один из алгоритмов генерации карты, используемых в моей игре In the House of Silence. Главное преимущество этого способа заключается в том, что в отличие от других алгоритмов, он никаким образом не может сгенерировать карту с разделёнными частями.

Генерация идеального лабиринта



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

Для понятности я привёл псевдокод, описывающий алгоритм Прима. Будет довольно просто приспособить его под любой язык программирования.
Читать дальше →
Total votes 50: ↑50 and ↓0+50
Comments5

Фантастика 2020 года, которую стоит почитать

Reading time6 min
Views109K


Под конец года принято подводить итоги и кажется стоит вспомнить, что же было в этом непростом году хорошего. Например, я читал много отличных книг (что еще делать дома?). Вот немного про самые примечательные из них или, по крайней мере, те, которые сильнее всего запомнились мне.
Читать дальше →
Total votes 57: ↑55 and ↓2+53
Comments112

Как защититься от неожиданных счетов за AWS

Reading time5 min
Views27K
Представьте, что у вас в облаке маленький проектик. Уже полгода вы платите за него по 20 центов в месяц. В принципе, ничего особенного. Но однажды утром вдруг приходит крупный счёт на 2700 долларов.


В облаке мы платим за хранение, вычисления и другие услуги по мере их использования. Не нужно поднимать собственный сервер. Однако недостаток в том, что можно случайно потратить больше денег, чем есть в кошельке. Это особенно сложно с бессерверными решениями, которые автоматически масштабируются вместе с поступающим трафиком.
Total votes 35: ↑34 and ↓1+33
Comments63

Подробнее о тайном математическом обществе, известном под именем «Никола Бурбаки»

Reading time5 min
Views15K

Почти сто лет подряд анонимные члены группы писали книги, выражающие чистые математические мысли



Некоторые из основателей группы: Анри Картан (стоит слева), Андре Вейль (стоит второй справа) и Шолем Мандельбройт (сидит справа).

Приглашение пообщаться с членами одного из старейших тайных математических обществ Антуан Шамберт-Луар получил по телефону. «Мне сказали, что Бурбаки хотели бы встретиться со мной, чтобы обсудить возможную совместную работу», — сказал он.

Шамберт-Луар принял приглашение, и одну из недель сентября 2001 года он провёл, читая вслух математические тексты по семь часов в день, и обсуждая их с членами группы, личности которых неизвестны остальному миру.

Официально вступить в группу его не приглашали, но в последний день его пребывания ему выдали долгосрочное задание – закончить рукопись, над которой группа работала с 1975 года. Когда позднее Шамберт-Луар получил отчёт о встрече, он обратил внимание, что его отметили, как «membrifié», то есть, члена группы. С тех пор он помогает развивать почти сизифову математическую традицию, начавшуюся ещё до Второй мировой войны.
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments21

Использование Nginx FastCGI Cache

Reading time9 min
Views26K

FastCGI Cache — это система кэширования данных реализованая на уровне HTTP-сервера Nginx.

Преимущество FastCGI Cache заключается в том, что Nginx вернёт закешированный ответ пользователю сразу, как только получит запрос, при этом слой приложения не будет вовсе обрабатывать поступивший HTTP-запрос, если он имеется в кэше Nginx. 

Использование FastCGI Cache — отличный способ снизить нагрузку на вашу систему.

Если на вашем сайте есть страницы, которые изменяются редко или задержка обновления информации на некоторое время не критична, то FastCGI Cache именно то, что нужно.

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments16

Как этот sidecar-контейнер оказался здесь [в Kubernetes]?

Reading time10 min
Views14K
Прим. перев.: Этой статьёй, написанной Scott Rahner — инженером в Dow Jones, мы продолжаем цикл многочисленных материалов, доступно рассказывающих о том, как устроен Kubernetes, как работают, взаимосвязаны и используются его базовые компоненты. На сей раз это практическая заметка с примером кода для создания хука в Kubernetes, демонстрируемого автором «под предлогом» автоматического создания sidecar-контейнеров.


(Автор фото — Gordon A. Maxwell, найдено на просторах интернета.)

Когда я начал изучать sidecar-контейнеры и service mesh'и, мне потребовалось разобраться в том, как работает ключевой механизм — автоматическая вставка sidecar-контейнера. Ведь в случае использования систем вроде Istio или Consul, при деплое контейнера с приложением внезапно в его pod'е появляется и уже настроенный контейнер Envoy (схожая ситуация происходит и у Conduit, о котором мы писали в начале года — прим. перев.). Что? Как? Так начались мои исследования…
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments1
1
23 ...

Information

Rating
Does not participate
Registered
Activity