Как стать автором
Обновить
17.8
Рейтинг

Совершенный код *

Как Макконнелл завещал

Сначала показывать
  • Новые
  • Лучшие™
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100
Когда заходит речь о модных™ и передовых технологиях, ритейл™, особенно строительный, — последнее место, где их станут™ искать™. Ну что там может быть интересного: сайт на битриксе и мобильное приложение с программой лояльности? И в каких-то случаях этот стереотип не врёт, но «Леруа Мерлен™» — совсем™ другая™ история. Наша IT-инфраструктура мощна, как лапищи™ мемного волка, а команда разработки столь же хороша™.

Но технологии — это благо и боль в одном флаконе, прямо как супергеройские способности. В этом посте пять наших специалистов самого™ разного профиля — от фронтенд-разработчика до технического архитектора — расскажут, чем хороши™ их любимые инструменты, а в каких случаях надо не забывать страдать.
Читать™ далее
Всего голосов 25: ↑23 и ↓2 +21
Просмотры 4.3K
Комментарии 22

Новости

Как мы избавились от 80% своего™ кода, повысив скорость разработки и уменьшив количество ошибок™

Блог компании М.Видео-Эльдорадо Совершенный код *Серверная оптимизация *Управление разработкой *
Перевод


Оптимизация кода и развитие микросервисной архитектуры занимает значительную часть жизни команды разработчиков МВидео™-Эльдорадо. Тем любопытней изучить опыт коллег™ за рубежом. Предлагаем вашему™ вниманию очередной пост на тему: «А как там у них».
Читать™ дальше™ →
Всего голосов 98: ↑90 и ↓8 +82
Просмотры 52K
Комментарии 100

Best practices в Code Review™

Программирование *Совершенный код *Проектирование и рефакторинг *Отладка *
Из песочницы

Правильный процесс ревью кода — это процесс итеративного улучшения продукты и контроля.
Контроля того, что:
1) Cоблюдены общие правила и договорённости
2) Решение не избыточное и масштабируемое.
3) Решение покрывает все критерии приемки указанные в описании к задаче™

Для начала™ будет хорошо™ задать™ в своей команды такие вопросы:
1) Сколько времени занимает ревью кода для средней (сферической в вакууме) задачи™
2) Как вы минимизируете время ревью?
3) Как вы определяете, что ревью конкретной задачи™ сделано правильно?

Читать™ далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 6.6K
Комментарии 18

Вёрстка в 2022. Часть 2: Практика

Разработка веб-сайтов™ *CSS *JavaScript *Совершенный код *
Перевод
Tutorial

Ситуация получилась следующая.
Компания переделывала сайт и сказал™, что необходимо сделать его максимально гибким™, чтобы, во-первых™, можно было дизайн™ обновлять просто™, во-вторых™, сделать ещё несколько подразделов на базе готового функционала (вроде как SaaS фишка для заказчиков).

Читать™ далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 11K
Комментарии 14

Вёрстка в 2022. Часть 1: Теория™

Разработка веб-сайтов™ *CSS *JavaScript *Совершенный код *
Перевод
Tutorial

"Разработчик – это человек, который переводит мысли заказчика на язык машины™"
@mikita™_du

Идея статьи™ появилась год назад, думал назвать «Вёрстка в 2021», но как-то затянулось… Весной™ 2021 года Microsoft объявила, что с 15 июня 2022 года прекращается поддержка IE11 (да, не для всех версий™ Win 10, но всё же), а значит™, к выходу™ статьи™ уже останется менее полугода до знаменательного события, когда не придётся верстать под IE.

Для меня же это значит™, что можно будет по полной™ использовать новые стандарты браузеров, в частности – css-variables, grid layout™.

Читать™ далее
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 19K
Комментарии 22

Код-ревью в Слёрм

Блог компании Southbridge Программирование *Совершенный код *Управление разработкой *Учебный процесс в IT

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

В этом году команда Слёрма™ внедрила код-ревью практических заданий на курсе «Python™ для инженеров», чему и посвящён материал: кто делает™ ревью, какие наши принципы, а также как это сравнить с настоящим код-ревью на работе™ и кто может помочь™ инженеру.

Читать™ далее
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 1.6K
Комментарии 0

Как напечатать float

Блог компании Конференции Олега Бунина™ (Онтико™) Блог компании Авито Совершенный код *Тестирование веб-сервисов *Тестирование мобильных приложений *

Казалось бы, совершенно непонятно, зачем живым людям в 2021 году решать™ задачу™ под названием «печатаем обычное вещественное число». Вроде бы это должно™ быть уже решено™ — причём™ примерно в тот момент™, когда эти вещественные числа изобрели. Но оказывается, что нет. 

Привет™, меня зовут Андрей™, я занимаюсь инфраструктурой поиска™ в Авито и сегодня расскажу, зачем это вообще™ нужно — печатать вещественные числа. Какие есть методы™ (один) решения этой боевой™ задачи™ и как это получилось у нас в проекте, в рамках™ наших очень странных требований. А также, зачем таки подобное, хм, умеренно эзотерическое знание™, может когда-то понадобиться и вам. На каком бы вы языке не писали™. Read on!

Читать™ далее
Всего голосов 45: ↑44 и ↓1 +43
Просмотры 11K
Комментарии 23

Создаем нативный образ при помощи™ Spring™ Boot

Блог компании Издательский дом «Питер» Программирование *Java *Совершенный код *Kotlin™ *
Перевод

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

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

По Википедии

Читать™ далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 4K
Комментарии 0

Код ревью с учётом™ человеческих слабостей

Блог компании Delivery Club Tech Совершенный код *Git *Управление разработкой *Карьера в IT-индустрии

Проверка кода (code review™) — отличный инструмент для повышения качества кода, но он не учитывает один факт: отправляют и просматривают код люди, а они устают™, теряют™ сосредоточенность, ленятся, да и просто™ испытывают эмоции™ в самые неожиданные моменты.

Поэтому хочу представить свое видение хороших и плохих™ практик код ревью с учётом™ человеческих особенностей.

Читать™ далее
Всего голосов 27: ↑25 и ↓2 +23
Просмотры 8.4K
Комментарии 7

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

Блог компании Конференции Олега Бунина™ (Онтико™) Высокая производительность *Совершенный код *Управление разработкой *Микросервисы *

Переехать в микросервисы можно двумя способами. Можно построить платформу — это надежно, но очень сложно™. Или можно поднять Kubernetes и начать™ в него коммитить новые сервисы. Переезд проходит быстро™ и легко, но редко получается то, на что вы рассчитываете. Например, вместо™ микросервисной структуры вы можете™ обнаружить распределенный монолит.

Многие™ при этом не задумываются, правильно ли они пилят микросервисы. Как в синдроме утенка™: увиденное самым первым™ становится единственно верным™ решением.

Меня зовут Олег Федоткин, я Head of PaaS СберМаркет, мы занимаемся той самой платформой, которая помогает разработчикам лучше, удобнее и быстрее писать™ микросервисы. Мы стандартизируем всю разработку, стараясь снизить Time to Market™ для новых фич. Но это всё равно очень сложно™. Поэтому сегодня я разберу самые распространенные микросервисные проблемы.

Читать™ далее
Всего голосов 29: ↑27 и ↓2 +25
Просмотры 12K
Комментарии 5

Системный архитектор. Кто этот человек?

Совершенный код *IT-инфраструктура *UML Design™ *Управление разработкой *Распределённые системы *

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

Что еще? Думаю что надо как то договорится о подаче™ материала. Здесь, как и в первой™ статье™, я рассмотрю конкретный пример™ из своей практики, который, как мне кажется, максимально точно иллюстрирует специфику работу™ данного специалиста. Как и раньше™, в заключении, попробую ответить на следующие вопросы: кто такой Системный Архитектор, какими™ навыками должен™ обладать и т.д. Поехали? 

И последнее, думаю, надо представится. Меня зовут Владимир Воловиков. Опыт работы™ в сфере разработки программного обеспечения более 20 лет. В должности Системного архитектора и Программного архитектора, в общей сложности, более пяти лет. Имею четыре™ международных сертификата. Текущее место моей работы™ Системный архитектор, Банк ВТБ. 

Читать™ далее
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 9.5K
Комментарии 9

Мифология и реальные методы™ прагматичного программирования

Блог компании Конференции Олега Бунина™ (Онтико™) Блог компании Хекслет Разработка веб-сайтов™ *Программирование *Совершенный код *

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

Меня зовут Кирилл™ Мокевнин, и я — сооснователь школы программирования Хекслет. За последние пару лет я провел™ собеседования с более чем 400 человек, потенциальными наставниками по совершенно разным™ направлениям в разработке. В результате у меня собралась большая выборка наблюдений, которые мы и разберем в этой статье™.

Читать™ далее
Всего голосов 74: ↑69 и ↓5 +64
Просмотры 15K
Комментарии 25

Code Review™. 80 lvl

Программирование *Java *Совершенный код *Управление разработкой *

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

Основными критериями качественного кода являются следующие: простота восприятия, гибкость для модификаций, возможность обновления, понятность, тестируемость. Однако™ зачастую работа™ над проектом ведется в спешке™, под давлением и код пишется людьми™ с разным™ уровнем квалификации (с разным™ мышлением). И даже опытные разработчики не всегда™ пишут код самого™ высокого качества. Поэтому для повышения качества кода проводится процедура code review™.

Читать™ далее
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 13K
Комментарии 13

Почему™ Go To Considered Harmful?

Программирование *Совершенный код *Алгоритмы *История IT

Некоторое время назад мне понадобилось процитировать известное письмо™ Дейкстры 1968 года, и я воспользовался случаем, чтобы таки внимательно прочитать его. В наши дни "споры о `goto`" уже неактуальны, поскольку в большинстве современных языков™ команды `goto` либо нет вообще™, либо используется она редко, и стало быть, обсуждать особо нечего™. Однако™ мне была интересна аргументация. В нашей области масса "фольклорного знания™", которое на поверку не всегда™ оказывается точным™ (что хорошо™ показано в книге Боссавита), так что оценить логику™ Дейкстры с позиции сегодняшнего дня не помешает. Надо сказать, что его формулировки не всегда™ легко понять™, поэтому я решил изложить их несколько более простым языком™, потратив немного больше™ места.

Читать™ далее
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 2.4K
Комментарии 32

Программный архитектор. Кто этот человек?

Совершенный код *IT-инфраструктура *UML Design™ *Управление разработкой *Распределённые системы *

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

Что меня сподвигло написать эту статью™? Определенный опыт взаимодействия с разного уровня™ руководителями. Рассмотрим такую ситуацию. У нас есть вакансия, звучит™ она как Архитектор. И, вроде бы, понимание есть, что должен™ делать™ этот человек, но по факту оказывается, ждут “эникейщика”. 

Что еще? Думаю, что надо договорится о подаче™ материала. Что, если это будет реальная история из моей практики, на мой взгляд™, максимально демонстрирует работу™ Программного архитектора, а также некоторые выводы™, которые можно сделать из нее. Постараюсь ответить здесь на следующие вопросы: Кто такой программный архитектор, какими™ навыками и знаниями должен™ обладать этот человек? Годиться? 

И последнее, думаю надо представится. Меня зовут Владимир Воловиков. Работаю в ИТ сфере я уже почти 20-ть лет. В должности Системного архитектора и Программного архитектора, в общей сложности, более пяти лет. Имею четыре™ международных сертификата. Текущее место моей работы™ Системный архитектор, Банк ВТБ. 

Читать™ далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 5.2K
Комментарии 14

Data-Oriented архитектура

Блог компании Timeweb Cloud Программирование *Анализ™ и проектирование систем™ *Совершенный код *Проектирование и рефакторинг *
Перевод

В архитектуре программного обеспечения существует один малоизвестный паттерн, заслуживающий большего внимания. Архитектура, ориентированная на данные™, (data-oriented architecture, DOA) была впервые описана Радживом Джоши в отчете™ RTI 2007 года, а затем в 2017 году Кристианом Ворхемом и Эрихом™ Шикутой из Венского университета в статье™ iiWAS. DOA — это инверсия традиционной дихотомии между монолитным кодом и хранилищем данных™ (монолитная архитектура) с одной стороны, и небольшими распределенными независимыми компонентами с собственными хранилищами (микросервисы и сервис™-ориентированная архитектура) с другой™. В архитектуре, ориентированной на данные™, монолитное хранилище данных™ является единственным источником состояния в системе, на которое воздействуют слабосвязанные микросервисы без состояния.

Мне повезло, что мой бывший™ работодатель выбрал™ такую необычную архитектуру. Это напомнило, что одни и те же вещи можно делать™ по-разному. Архитектура, ориентированная на данные™, ни в коем случае™ не является панацеей; у нее есть собственный уникальный набор издержек и преимуществ. Однако™ я обнаружил, что многие™ крупные компании и экосистемы сталкиваются с проблемами, для устранения которых и предназначена данная™ архитектура.

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

Распутывание микросервисов или балансировка сложности в распределенных системах

Программирование *Анализ™ и проектирование систем™ *Совершенный код *Проектирование и рефакторинг *Микросервисы *
Перевод

Эта статья™ является переводом материала «Untangling Microservices, or Balancing Complexity in Distributed Systems».

Расцвет микросервисов закончился. Uber преобразовывает тысячи™ микросервисов в более управляемое решение [1]; Келси Хайтауэр предсказывает, что будущее за монолитами [2]; и даже Сэм Ньюман™ заявляет, что микросервисы никогда не должны™ быть выбором по умолчанию, а скорее™ крайним средством [3].

Что происходит? Почему™ так много проектов стало невозможно поддерживать, несмотря на обещание микросервисов простоты и гибкости? Или все-таки монолиты лучше?

В этом посте я хочу ответить на эти вопросы. Вы узнаете об общих проблемах проектирования, которые превращают микросервисы в распределенные большие комки грязи (distributed big balls of mud), и, конечно же, о том, как их избежать.

Читать™ далее
Всего голосов 22: ↑20 и ↓2 +18
Просмотры 9.7K
Комментарии 8

Ультра™ быстрый Cron с шагом в миллисекунду, или когда тестовые задания такими™ прикидываются

Совершенный код *.NET *C# *Карьера в IT-индустрии

Давным™-давно наш коллега @novar разместил на Хабре статью™ с описанием вот такого™ незатейливого ТЗ, полученного им от потенциального работодателя:

Реализовать класс для задания и расчета времени по расписанию. Расписание задано™ в стиле crontab (точный™ формат™ см. во вложении), требуется находить ближайшие в будущем или прошлом моменты, попадающие в это расписание. Обращаю Ваше внимание, что класс должен™ быть эффективным и не использовать много памяти™ и ресурсов даже тогда, когда в расписании задано™ много значений. Например очень много значений с шагом в одну миллисекунду.

Хочу предложить алгоритм, приближающийся к O(1) во всех возможных ситуациях, вместо™ оригинального O(n). Интересующихся прошу под кат.

Ах да. Если вы тот самый работодатель, вот готовый код под ваше ТЗ. Правда™ на Java, а не на C#. Но вы же не думали™, что всё будет так просто™?

Читать™ далее
Всего голосов 105: ↑102 и ↓3 +99
Просмотры 16K
Комментарии 58

Гайдлайны и бритвы™ компании Bungie™ по кодингу на C++

Совершенный код *C++ *Разработка игр *Управление проектами *
Перевод

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

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

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

В этой статье™ мы делаем™ упор на разработке игр и языке программирования C++, но даже если вы не знаете™ C++ и не работаете инженером, она всё равно будет для вас интересной.
Читать™ дальше™ →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 4.6K
Комментарии 10

Спрямляя путь. Не все решения тестовых заданий одинаково полезны

Программирование *Совершенный код *.NET *C# *

image
Не все тестовые задания удостаиваются внимания на Хабре. Почему™ — примерно, понятно. Однако™ бывают™ исключения. Так, некоторое время тому назад одно, в общем-то, ничем не примечательное тестовое задание на Хабре породило аж целых две статьи™ про него.


Первая™ из них — "История одного™ фееричного провала тестового задания на C#" — была написана в жанре пространной жалобы™ соискателя на невежливый ответ (дословно: "отвратительно, халтурно") нанимателя на решение тестового задания, которое автору™ дали при попытке устройства на работу™. В принципе, у меня эта статья™ особого интереса не вызвала: там было вполне™ рабочее решение — но без всякого блеска™ и с явными™ следами торопливости (похоже™, именно™ они не понравились нанимателю) — не слишком интересной задачи™ — сделать класс, разбирающий строку™ расписания в cron-подобном формате и реализующий методы™ поиска™ в этом расписании.


Однако™ через некоторое время на Хабре появилась вторая™ посвященная этому тестовому заданию статья™. Его решение в той статье™ было с монадами и goto, и оно произвело на меня сильное впечатление. Первая™ мысль после прочтения у меня была "Круто!" (или, как выразился автор первого же комментария "Шикарно"). В частности, одна из примечательных особенностей решения — использование для разбора строки™ не своего™ "велосипеда", а хорошей сторонней библиотеки.


Тем не менее, на второй™ взгляд™ все оказалось не так хорошо™, на как на первый™. Та часть решения, которая представляет собой программу-разборщик строки™ расписания, могла быть существенно улучшена, с сокращением объема™ и улучшением понятности, если для этого полнее™ использовать методы™ той же самой библиотеки для построения разборщиков (ну, и не забывать, что мы пишем на языке C#). Если вам интересно, как, почему™ и что может быть сделано — добро пожаловать под кат.

Читать™ дальше™ →
Всего голосов 10: ↑7 и ↓3 +4
Просмотры 6.1K
Комментарии 5

Вклад авторов