Рубрика «Анализ и проектирование систем» - 22

Всем привет, меня зовут Константин. Я занимаюсь разработкой на Java в Tinkoff.ru и люблю SOLID. В этой статье мы сформулируем принцип подстановки Лисков, покажем его связь с принципом Открытости-Закрытости, узнаем, как правильно формировать иерархию наследования и ответим на философский вопрос о том, является ли квадрат прямоугольником.

Принцип подстановки Лисков - 1

Читать полностью »

Дзен Go - 1

Оценивая свою работу, я недавно много размышлял о том, как мне писать хороший код. Учитывая, что никто не интересуется тем, как писать плохой код, возникает вопрос: как узнать, что ты написал на Go хороший код? Если есть какая-то шкала между хорошо и плохо, то как понять, какие части шкалы относятся к хорошему? Каковы его свойства, атрибуты, отличительные признаки, паттерны и идиомы?
Читать полностью »

Что такое структура данных?
Проще говоря, структура данных — это контейнер, в котором хранятся данные в определенной компоновке (формате, или способе организации их в памяти). Эта «компоновка» позволяет структуре данных быть эффективной в одних операциях и неэффективной в других. Ваша цель — понять структуры данных, чтобы вы могли выбрать структуру данных, наиболее оптимальную для рассматриваемой проблемы.

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

Читать полностью »

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

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

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

Ну, изменилось и изменилось – я просто наслаждался результатом, пока не прочитал книжку про работу мозга. Тут всё встало на свои места. Дело оказалось в дефолт-системе мозга.Читать полностью »

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

Я, если честно, плохо понимаю, что такое «технические статьи». Я понимаю, что такое «задача» и что такое «решение». Еще я понимаю, что решение одной и той же задачи можно найти на разных уровнях – от «железного» до философского. Какой уровень правильнее – не знаю.

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

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

Нерушимая память, нерушимые процессы - 1

Прочитав недавно (1, 2, 3) с каким трудом даются “космические” процессоры, невольно задался мыслью, раз “цена” за устойчивое железо настолько высока, может быть стоит сделать шаг и с другой стороны — сделать устойчивый к спецфакторам “софт”? Но не прикладной софт, а скорее среду его выполнения: компилятор, ОС. Можно ли сделать так, чтобы выполнение программы в любой момент можно было оборвать, перезагрузить систему и продолжить с того же (или почти с того же) места. Существует же в конце концов гибернация.
Читать полностью »

Этим постом я хочу открыть ветку статей посвященную IdentityServer4. Начнем мы с основных понятий.

Самым перспективным на текущий момент протоколом аутентификации является OpenID Connect, а протоколом авторизации (предоставления доступа) является OAuth 2.0. IdentityServer4 реализует эти два протокола. Он оптимизирован для решения типичных проблем безопасности.

Читать полностью »

Говорят, что можно бесконечно смотреть на огонь, наблюдать за тем, как работают другие, а также изучать DDD (Domain Driven Design, предметно-ориентированное проектирование). Но если у вас есть только 10 минут — можно прочитать эту статью и пройтись по самым верхушкам, а потом с умным видом кивать головой во время светской беседы.

Покрутили и рассмотрели DDD с разных сторон вместе с Андреем Ратушным — техническим директором компании Югорские Интернет Решения.

Что можно узнать о Domain Driven Design за 10 минут? - 1

Читать полностью »

В разработке hh.ru сегодня около 150 человек. У нас множество интересных команд, и каждая вносит значительный вклад. Но в этой статье я расскажу лишь про одну из них.

Видишь архитектуру? И я не вижу, а она есть - 1

Читать полностью »

image

Привет, меня зовут Денис, я работаю в Тинькофф и занимаюсь BPM-системами. В этой статье я расскажу, как мигрировать с легаси систем а-ля IBM BPM на опенсорс движок процессов Camunda на примере большого процесса. А в конце приглашу вас на четвертый митап по Camunda, который пройдет 27 февраля в Тинькофф, в Москве (м. Водный Стадион) вечером.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js