Посты | OTUS
Комментарии в коде: почему, зачем и как?

JavaDeep_20_06_Site.png

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

Свёрточные сети на графах

ML_Deep_19.06_SITE.png

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

Ошибка порядка наследования в Liskov Substitution

JavaDeep_19.06_Site.png

Согласно тесту Тьюринга, если что-то плавает как утка, крякает как утка и летает как утка, то это что-то — утка. Но что делать, если при этом она не работает без батареек?

Если в вашем приложении объект пришёл к вам по референсу на базовый класс, но ведёт себя не так, как вы ждёте от базового класса, то у вас в приложении нарушен один из принципов SOLID — Liskov Substitution. Ошибка частая и не сразу заметная.

Давно ли вы работали с числами?

JavaDeep18.05_Site.png

Странный вопрос для программиста. С одной стороны, мы только и работаем что с числами. Все наши программы с их несчётными фабриками, хэлперами, интерфейсами и менеджерами для процессора – набор чисел: прочитай, увеличь, сдвинь, сохрани.

Ретроспектива в Scrum: философия постоянных улучшений

Scrum_Deep_15.06_SITE.png

Япония дала миру многие интересные идеи. В области управления вы наверняка вспомните Kanban и Kaizen. Kanban изначально был системой организации конвейерного производства и процессов его снабжения, а затем был подхвачен IT-сообществом и превращён в прекрасный инструмент управления IT-процессами.

Kaizen – философия постоянного улучшения процессов, философия мелких ежедневных изменений к лучшему. Kaizen является одним из необходимых принципов построения Kanban-систем, но и в Scrum есть место для постоянного совершенствования. И это, конечно же, Ретроспектива.

Зачем что-то обещать или почему noexcept меняет поведение кода?

С++Deep_14.06_SITE.png

Если бы по телевизору показывали рекламу языка C++, наверняка, в ней бы было что-то вроде:

«С добавлением move-семантики вы получаете бесплатное увеличение производительности за счёт избавления от нецелесообразных операций копирования. Просто перекомпилируйте свой проект новой версией компилятора с поддержкой 11 или 14 стандарта и радуйтесь ускорению работы программы!».

Стоит ли верить такой рекламе?

Scrum и командообразование: принцип «чёрного ящика»

ScrumDeep_14.05_SITE.png

Одна из главных задач Scrum-мастера – помочь команде разработки стать настоящей командой. Часто «командой» называют просто рабочую группу: людей, собранных вместе для работы над каким-то продуктом или проектом. Команда – тоже группа людей, работающих вместе. Но у неё есть ряд отличий от рабочей группы, и два самых главных из них – синхронизация целей и командная ответственность.

Функции потерь Дискриминатора: стабилизация обучения

ML_Deep_14.06_SITE.png

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

Аннотация @Autowired: что к чему?

Spring_Deep_13.06_Site_NEW.png

Решил рассказать немного про аннотацию @Autowired. Принцип её работы очень прост.

Spring_970x90-20219-94c741.png

Допустим у нас есть bean-зависимости:

@Configuration
public class Config {
    // тип бина - ServiceDependency, имя - dependency
    public ServiceDependency dependency() {
        return new ServiceDependencyImpl()
    }
}

Spring Context

SpringDeep_10.06_Site.png

Под словом «Spring» обычно подразумевают просто IoC-контейнер, помогающий структурировать Java-приложения. В действительности под словом «Spring» скрывается целый мир.

IoC-контейнер, это замечательный способ собрать приложение «по кусочкам» из разных компонентов. Spring же предоставляет удобные способы как написания данных «кусочков», так и объединения их в единое приложение. Например, у нас есть два класса.