Как стать автором
Обновить
0
0
Ratushniy Andrey @agr_ugraweb

Архитектор

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

Чистая архитектура. Часть I — Введение

Время на прочтение4 мин
Количество просмотров30K
Это вольный и очень краткий пересказ новой книги Роберта Мартина (Дяди Боба) «Чистая Архитектура», выпущенной в 2018 году.
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии30

REST страсти по 200

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


Давно я хотел написать эту статью. Все думал — с какой стороны зайти правильнее? Но, вдруг, недавно, на Хабре появилась подобная статья, которая вызвала бурю в стакане. Больше всего меня удивил тот факт, что статью начали вбивать в минуса, хотя она даже не декларировала что-то, а скорее поднимала вопрос об использовании кодов ответа web-сервера в REST. Дебаты разгорелись жаркие. А апофеозом стало то, что статья ушла в черновики… килобайты комментариев, мнений и т.д. просто исчезли. Многие стали кармо-жертвами, считай, ни за что :)

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

Предупреждаю, все ниже написанное является реальным опытом, а не когнитивной эквилибристикой. И так, погнали.
Читать дальше →
Всего голосов 79: ↑68 и ↓11+57
Комментарии115

Как организовать CI/CD на проекте: от постановки задач до настройки конвейера развертывания

Время на прочтение5 мин
Количество просмотров15K
В чем залог успешной настройки Continuous Delivery на проектах? Слаженная работа команд разработки, тестирования и инженеров по инфраструктуре. Спасибо, кэп, как говорится :) Но как это реализовать на практике? В этой статье поделимся нашими наработками, как это всё организовать и воплотить в жизнь.

Мы обобщили базовые основы в одну шпаргалку для себя и делимся с вами:


Опытные инженеры вряд ли узнают из статьи что-то новое, но надеемся, что начинающим специалистам эта информация пригодится.


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

О сущностях, DTO, ORM и Lazy Load

Время на прочтение3 мин
Количество просмотров13K
Объектно-ориентированная парадигма — стандарт для прикладного ПО. Реляционные СУБД — стандарт хранения данных в прикладном ПО. Да, можно писать и на Haskell и хранить данные исключительно в ClickHouse. Но речь о мейнстриме.

ORM позволяет натянуть сову на глобус сделать вид, что RDBMS'а нет и данные хранятся в объектной модели, более подходящей для ООП. Остается «маленькая» такая проблемка — эта абстракция, как и многие другие, «течет». Там где в объектной модели ссылка на другой объект в базе данных foreign key и id. В момент материализации сущности мы встаем перед выбором:

  1. Загрузить все и упасть с out of memory / timeout
  2. Явно указать какие зависимости мы хотим загрузить, а какие — нет и нарушить принцип tell don't ask
  3. Загружать зависимости неявно по требованию с помощью Lazy Load и получить проблемы с производительностью где-то в вызываемом коде

Какую-же ногу себе отрезать: левую или правую?

TLDR Lazy Load не так плох, если использовать только для записи и не использовать при чтении. Но все не так просто и есть куча нюансов.
Режь правую!
Всего голосов 30: ↑26 и ↓4+22
Комментарии6

42 оператора расширенного поиска Google (полный список)

Время на прочтение15 мин
Количество просмотров278K
Те, кто давно занимается поисковой оптимизацией, хорошо знают об операторах расширенного поиска Google. Например, почти все знают об операторе site:, который ограничивает поисковую выдачу одним сайтом.

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

В этой статье я поделюсь советами, которые помогут освоить поисковые операторы для 15 конкретных задач.
Читать дальше →
Всего голосов 127: ↑124 и ↓3+121
Комментарии40

Liveprof покажет, когда и почему менялась производительность вашего PHP-приложения

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


Привет, Хабр! Меня зовут Тимур Шагиахметов, я PHP-разработчик в Badoo.

Производительность приложения — один из важнейших критериев качества работы программиста. В вопросах оптимизации PHP-приложений помощником является профайлер.

Недавно мы рассказывали о том, какими инструментами пользуемся для профилирования. Напомню: одним из инструментов для анализа производительности, когда непонятно, какие части кода повлияли больше всего на увеличение времени формирования ответа, является XHProf. Это расширение для PHP, которое позволяет профилировать код на боевом сервере и впоследствии  улучшать его.

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

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

В этой статье я расскажу о деталях реализации и особенностях использования этого инструмента.
Читать дальше →
Всего голосов 84: ↑84 и ↓0+84
Комментарии7

Как поделить архитектуру и реализацию и не поругаться

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

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


Большинство разработчиков любят заниматься архитектурой, продумывать как система или её часть будет устроена с чистого листа. Если тот, кто продумал архитектуру системы, и будет её реализовывать, никаких проблем с мотивацией нет: программист получит удовлетворение от воплощения в жизнь задуманных им идей. Но если архитектуру продумал один, а реализацией будет заниматься другой, то у последнего может возникнуть естественное возмущение: все продумали за меня, а мне только делать по написанному?



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

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

Мы Не Оскорблённые

Время на прочтение2 мин
Количество просмотров8.1K
Дядя Боб Мартин разразился манифестом терпимости к чужим идеям. Что именно его довело? Мне трудно это выразить, очень рекомендую прочитать сначала его предыдущую статью SJWJS.

Мы, Не Оскорблённые, верим, что свободное общество полагается на взаимную терпимость и прощение своих членов по отношению друг к другу и идеям других. Поэтому, мы стремимся оставаться не оскорблёнными свободой других говорить и действовать в соответствии с их самоидентификацией, политическими взглядами, стремлениями и желаниями. Мы не терпимы только к вреду наносимому преднамеренно или по небрежности.
Читать дальше →
Всего голосов 35: ↑27 и ↓8+19
Комментарии81

Подключение phpStorm tasks к Битрикс24

Время на прочтение2 мин
Количество просмотров5.4K
Добрый день.

Хочу поделится опытом подключения phpStorm к Битрикс24 для быстрого доступа к задачам и учета времени на их выполнение.

К сожалению Битрикс24 не входит в список поддерживаемых багтрекеров, а необходимость у меня появилась.
Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии14

DDD, Hexagonal, Onion, Clean, CQRS… как я собрал всё это вместе

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


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

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

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

Если вы не нанимаете джунов, то не заслуживаете сеньоров

Время на прочтение9 мин
Количество просмотров53K
Позвольте рассказать вам историю об одной очень успешной компании, совершившей большую, глупую ошибку:
Мы не нанимаем младших программистов и интернов… Если не заводить щенка, не придётся убирать лужи.
--Netflix

Я был совершенно поражён, как некое корпоративное нечто умудрилось представить щенков в отрицательном свете, да ещё кого-то этим убедило. Щенки — самые чистые создания на Земле, живая пушистая радость! Лучики света в одиноком мире. Но перейдём к сути.

Многие компании последовали данной стратегии «нанимать только сеньоров». Они обосновывают это так:
  • У нас нет времени и ресурсов нанимать младших программистов; мы слишком быстро развиваемся.
  • Наша компания может себе позволить сеньоров, так что в джунах нет необходимости.
  • На текущем этапе мы не можем позволить себе ошибки. Ставки слишком высоки.
  • Наш процесс предоставляет сотрудникам большую автономность. Мы не готовы держать джунов за ручку, как они в том нуждаются.
  • Мы хотим заложить фундамент продукта прежде, чем начнём нанимать неопытных сотрудников.
Читать дальше →
Всего голосов 81: ↑71 и ↓10+61
Комментарии281

Регистрация событий при помощи Kafka

Время на прочтение11 мин
Количество просмотров10K
Привет, Хабр!

Мы раскупорили последние резервы книги "Apache Kafka. Потоковая обработка и анализ данных" и отправили ее в допечатку. Более того, мы получили контракт на книгу "Kafka Streams in Action" и приступаем к ее переводу буквально на будущей неделе.



Чтобы показать занятный кейс использования библиотеки Kafka Streams, мы решили перевести статью о парадигме Event Sourcing в Kafka от того самого Адама Уорски, чья статья о языке Scala выходила у нас две недели назад. Тем интереснее, что мнение Адама Уорски не бесспорное: вот здесь, например, утверждается, что эта парадигма решительно для Kafka не подходит. Тем более запоминающимся, надеемся, получится впечатление от статьи.

Термин «Event Sourcing» переведен как «Регистрация событий» и в нашем издании "Чистой архитектуры" Роберта Мартина, и в данной статье. Если кому-нибудь импонирует перевод «прокачка событий» — дайте знать пожалуйста.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии1

Мы хотим заменить девопсов скриптом (на самом деле нет): разработчики, нужно ваше мнение

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

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

Основная идея — вы можете разворачивать конвейер с уже преднастроенными инструментами, но при этом с возможностью внесения целого ряда настроек, и вам останется только деплоить код.
Читать дальше →
Всего голосов 48: ↑43 и ↓5+38
Комментарии32

Информация

В рейтинге
Не участвует
Откуда
Ханты-Мансийск, Тюменская обл. и Ханты-Мансийский АО, Россия
Дата рождения
Зарегистрирован
Активность