Как стать автором
Обновить
71
0
Аркадий @p0is0n

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

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

Идеальная удаленка: восемь простых шагов

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

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

Для кого она? Во‑первых, для тех, кто до сих пор сомневается, имеет ли смысл уходить на удаленку. Или стоит перед выбором (в том числе при смене и поиске новой работы), а иногда и практически перед ультиматумом руководителей, стремящихся минимизировать косты и любыми способами перевести большую часть коллектива на удаленный или гибридный режимы работы.

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

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

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

Читать далее
Всего голосов 77: ↑69 и ↓8+76
Комментарии74

Разный подход к CI/CD: опыт Amazon и Google

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


Несколько лет я был техническим лидером инфраструктуры для интеграционного тестирования на уровне компании в Amazon и в Google. Могу сказать, что подходы этих двух компаний к CI/CD значительно различаются.

В Amazon я проработал 11 лет (с 2009 по 2020 год). Я работал главным инженером в команде Developer Tools, которая управляла всей инфраструктурой и инструментами для CI/CD по всей компании. Мы обслуживали программное обеспечение, которое десятки тысяч сотрудников Amazon каждый день использовали для написания, проверки, сборки, тестирования и развёртывания кода.

В 2020 году я всё-таки решился на большие изменения и присоединился к Google, где провёл 4 года в качестве технического руководителя инфраструктуры для интеграционного тестирования — критически важной части инструментария CI/CD Google. Несмотря на схожесть сферы деятельности, технологические стеки различались кардинально.

Получив опыт работы в Google, другой компании с иным взглядом на процессы, я вернулся в Amazon. Без сомнений, взглянуть на вещи под другим углом было интересно и полезно.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+17
Комментарии3

Собираем данные из сотни микросервисов, или Как мы разобрали Ozon на кубики, а потом собрали заново

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

Всем привет! Меня зовут Саша, я руковожу группой разработки Composer Core в Ozon Tech. В этой статье я расскажу о том, как устроена пользовательская часть одного из ведущих российских маркетплейсов, в развитии которой на момент написания статьи участвуют сотни специалистов из десятков команд. При наличии такого количества людей разрабатывать новую функциональность, не рискуя сломать уже существующую, является достаточно сложной задачей.

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

Продукт, который мы разработали, вряд ли когда-нибудь станет open-source-проектом, так как он слишком зависит от специфики инфраструктуры Ozon Tech. Но основные принципы могут быть полезны при проектировании похожих систем.

Читать далее
Всего голосов 40: ↑38 и ↓2+40
Комментарии12

Как сменить технологию и не закопаться в рефакторинге: опыт внедрения DDD в проект на FastAPI — Часть 1

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

Привет, хабравчане!

В серии статей расскажу, что такое DDD (domain-driven design) и какие у него преимущества и недостатки. Разберемся, когда применять подход и как сочетать его с FastAPI, популярным ASGI фреймворком на Python.

В этой части рассмотрим паттерны проектирования Repository и Unit of Work. С их помощью мы работаем через интерфейсы. Паттерны помогают в разделении кода на слои: основная логика приложения представляется внутренними слоями, а используемые технологии - внешними.

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

Микросервисы в представлении среднего разработчика, и как всё на самом деле

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

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

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

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

погрузиться в микросервисы
Всего голосов 236: ↑232 и ↓4+260
Комментарии207

Что такое устройство защиты от дугового пробоя (УЗДП) и с чем его едят?

Время на прочтение14 мин
Количество просмотров99K
Продолжаем тему современных устройств защиты для домашних электрощитов. На очереди Устройства защиты от дугового пробоя (УЗДП — формулировка из ГОСТ), они же «Устройства защиты от искрения» (УЗИс) они же  arc-fault detection device (AFDD), они же  arc-fault circuit interrupter (AFCI)… Имен много, а суть одна: это устройство призвано отключить линию, если обнаружится дуговой пробой где-то на линии. Это часть теоретическо-методическая. Тесты и расчленение устройств будет в продолжении.

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

Простой пример использования Symfony Messenger

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

Пришёл и мой черёд асинхронно и многопоточно средствами PHP кое-что пообрабатывать… И я, естественно, вспомнил про компонент Messenger фреймворка Symfony.

Ранее я никогда Symfony Messenger не использовал.
Чтобы понять, как с ним работать, я пытался найти какой-то простой, законченный и самодостаточный пример, понятный даже чайнику, но мне это не удалось...

Всё, что находилось, было либо слишком сложным, либо это были какие-то отдельные куски кода, понятные только тем, кто уже работал с Symfony Messenger. К тому же всё, что находилось, в основном было "заточено" либо под Redis, либо под RabbitMQ. установка которых как-то немного перебор для учебного примера…

В-общем, я создал и выложил на GitHub такой простой, законченный и самодостаточный пример работы Symfony Messenger совместно с Symfony Console.

Посмотреть пример работы Symfony Messenger
Всего голосов 8: ↑8 и ↓0+12
Комментарии0

Как устроен рекомендательный сервис, который выдерживает 700 тысяч запросов в секунду. Доклад Яндекса

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

«Баннерная крутилка» —  один из самых высоконагруженных сервисов в Яндексе. Он умеет переживать 700 тысяч RPS, а иногда и больше. Каждый раз, когда приходит запрос, крутилка должна просмотреть базу из миллиарда документов и выбрать из них самые релевантные для пользователя. При этом выдерживаются весьма жесткие временные рамки: 99% всех запросов обрабатываются менее чем за 200 миллисекунд.

Какими принципами стоит руководствоваться при построении подобных высоконагруженных систем? Как устроены стадии отбора документов? Какое участие в ранжировании принимает ML? Обо всём этом на недавнем мероприятии для разработчиков в Ереване рассказал Артём Ваншулин, руководитель разработки ранжирования в команде баннерной системы. Сегодня мы делимся с сообществом текстовой версией его доклада. Передаём ему слово.

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

Знания как код: архитектурный репозиторий в git на базе PlantUML

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

Привет, Хабр! Меня зовут Максим Приходский, я архитектор R-Style Softlab и сегодня хочу рассказать вам о проекте создания архитектурного репозитория в git на базе PlantUML.

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

Фоновые асинхронные задачи в FastAPI и их мониторинг

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

Привет! Меня зовут Иван, я бэкенд-разработчик в KTS.

Сегодня расскажу, как в FastAPI эффективно работать с фоновыми задачами и настроить их мониторинг в Prometheus.

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

В статье опишу 5 вариантов: встроенный в FastAPI Background Tasks и 4 библиотеки — ARQ, SAQ, FastStream, адаптированный к асинхронному коду Celery.

В конце расскажу, как мониторить фоновые задачи.

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

Блеск и нищета модели предметной области

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


Мартин Фаулер в книге «Patterns of Enterprise Application Architecture» описывает «Модель предметной области (Domain Model)» как сложный подход к организации бизнес-логики. Метод заключается в создании классов, соответствующих объектам предметной области из реального мира как с точки зрения структуры данных, так и поведения. При этом технические аспекты, такие как хранение данных, аутентификация и авторизация, управление транзакциями, выносится за пределы слоя бизнес-логики. Паттерн реализуется одним из двух способов:

  1. Богатая (насыщенная) модель — данные и поведение инкапсулируются внутри объектов предметной области.
  2. Анемичная модель — в объектах предметной области инкапсулируются только данные, поведение (методы) выносится в отдельный слой сервисов.

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →
Всего голосов 36: ↑34 и ↓2+45
Комментарии46

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

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

В чём принципиальное отличие джуна от мидла, а мидла от сеньора? На какие навыки поднажать, чтобы не задерживаться на одной ступеньке? Эти темы актуальны в ИТ-сообществе всегда. 

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

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

Локальный веб-сервер для разработки с помощью Docker

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


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

Если это Senior Full Stack разработчик с опытом администрирования Linux, то установка и настройка конфигов Nginx, PHP-fpm, MariaDB для него не будут проблемой (а может и с Docker даже знаком?). 

Разработчик Middle уровня (особенно без опыта с backend) возможно пользуется одним из готовых решений под Windows/MacOS.

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

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

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

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

Расширенная настройка бэкэнд-проекта Python ( пример FastAPI )

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

? Привет! Возможно, вы что-то знаете о Python, если вы здесь. Особенно о веб-фреймворках Python. Например, есть одна вещь, которая меня очень раздражает при использовании Django: наложение слоя структуры проекта.

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

Но как только вы начнете писать «лучшие» приложения, вы освоите другие шаблоны проектирования мирового класса, такие как DDD и его многоуровневая архитектура, и через некоторое время вы еще больше усложните свою систему с помощью CQRS. Лично мне стало труднее поддерживать базу кода, следуя всем этим принципам, когда фреймворк является ЦЕНТРАЛЬНОЙ частью всего приложения. Из него даже выйти невозможно, если через какое-то время решишь сменить фреймворк…

✅В этой статье я постараюсь поднять вопрос, а затем решить его.

? Отказ от ответственности: давайте ограничим проект серверного API интернет-рынком.

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

Генерация картинок на любом железе без Midjourney

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

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

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

Эффективный Dart: Руководство по стилю

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

Привет, если вы на пути изучения Flutter/Dart или вам просто интересно почитать про путь изучения, подписывайтесь на мой канал в telegram, буду рад вас видеть! А сегодня поговорим про руководство по стилю в Dart!

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

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

«Код-ревью — это когда твои комментарии в интернете действительно читают»: дискуссия с разработчиками на C++

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

Заходят как-то на Хабр С++ разработчики из крупных компаний, а у них спрашивают: что такое код-ревью и используют ли они спецификатор final. Эти и другие вопросы с подвохом мы задали инженерам из YADRO, VK, Kaspersky, Syntacore и PVS-Studio. В итоге обсудили инструменты для работы со сторонними зависимостями, интерфейсы «плюсовых» библиотек и отказ (или нет) от exceptions.  

Продолжим дискуссию на митапе по С++, который пройдет онлайн 20 марта. Регистрируйтесь, подключайтесь к трансляции и пишите вопросы и комментарии в чат — ведущие озвучат некоторые из них.

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

Книга «Грокаем Continuous Delivery»

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

Привет, Хаброжители!

Код должен быть готов к релизу всегда!

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

«Грокаем Continuous Delivery» — это руководство по настройке и работе с пайплайном непрерывной доставки. В каждой главе рассматривается отдельный сценарий, с которым вы столкнетесь при создании системы CD, и приводятся реальные примеры, например автоматическое масштабирование и тестирование унаследованных приложений. Кристи Уилсон сопровождает каждый шаг иллюстрациями, кристально четкими объяснениями и практическими упражнениями для закрепления полученных знаний.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+7
Комментарии5

На словах ты Лев Толстой, а на деле не можешь развернуть Nginx в Kubernetes

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

Привет! Меня зовут Леонид, я руководитель DevOps-юнита в KTS.

Как понять на собеседовании, что человек действительно умеет что-то делать руками, а не просто красиво говорит? 

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

Читать далее
Всего голосов 41: ↑35 и ↓6+31
Комментарии47

Разработка интерфейса | Flutter

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

Привет, если вы на пути изучения Flutter/Dart или вам просто интересно почитать про путь изучения, подписывайтесь на мой канал в telegram, буду рад вас видеть! А сегодня поговорим про разработку пользовательского интерфейса во Flutter!

В этой статье мы переходим к теме создания пользовательских интерфейсов. Теперь, когда разобрали основы Flutter widgets (1 и 2 часть). Обсуждение сосредоточено на ключевых технических элементах проектирования красивого интерфейса. Мы поговорим, как:

• Используйте шрифты для улучшения текстового интерфейса

• Определите макет на экране для лучшего размещения

• Укажите адрес хост-платформы

• Используйте возможности Flutter для фундаментального улучшения ваших приложений

• Понять, как обращаться к функциональным областям, зависящим от платформы, с помощью Dart SDK

• Создать код, работающий с Flutter, для представления информации наиболее эффективным способом

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

Информация

В рейтинге
Не участвует
Откуда
Казахстан
Дата рождения
Зарегистрирован
Активность