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

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

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

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

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

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

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

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

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

Давайте разбираться
Всего голосов 43: ↑43 и ↓0+43
Комментарии9

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

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

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

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

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

Читать далее
Всего голосов 103: ↑97 и ↓6+121
Комментарии134

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

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

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

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

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

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

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

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

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

Узнать как
Всего голосов 13: ↑13 и ↓0+13
Комментарии4

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

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

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


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


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

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

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

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

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

Читать далее
Всего голосов 15: ↑11 и ↓4+11
Комментарии6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

Время на прочтение6 мин
Количество просмотров45K
У вас тоже накопилось много вопросов к этому новому виду… искусства? Платформе?

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


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

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

Время на прочтение7 мин
Количество просмотров17K
Command-query separation (CQS) — это разделение методов на read и write.

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

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

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

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

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

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

Углубляемся дальше
Всего голосов 19: ↑19 и ↓0+19
Комментарии2

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

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


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

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



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

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

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

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


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

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

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


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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность