All streams
Search
Write a publication
Pull to refresh
14
0
Сергей Б. @sergey-b

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

Send message

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


One trick to solve them all

Интересно, в windows можно что-нибудь сделать без правой кнопки мыши?

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

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


А еще есть такой способ пропаганды, когда начинают упоминать террористов в положительном ключе. Типа: "А вы знаете, что главный террорист иг каждое утро делал гимнастику?" Требование к уточнению очень хорошо помогают противодействовать такому виду пропаганды: "А вы знаете, что главный террорист иг (запрещенная в РФ организация) каждое утро делал гимнастику?" Сразу возникает вопрос, почему нельзя было рассказать о миллионах других людей, которые делают гимнастику, но при этом их деятельность не запрещена в РФ.

А как телеграм отличает террористов от мирных протестующих? Неужели их сообщения читает?

Да, есть такие модели. И я, возможно, куплю себе M720. Но я очень не люблю возиться с батарейками, поэтому предпочитаю те модели, где можно подзаряжаться от USB. А все такие мыши почему-то имеют вот этот нелогичный элемент, который портит всю эргономику.

Logitech flow — нежизнеспособная технология. Обе машины, должны быть подключены к одной локальной сети, и там, и там должна быть одна операционная система с одинаковыми драйверами. Так не бывает. На одном рабочем столе ставят 2 машины не для того, чтобы они просто рядом стояли, а чтобы поднять на них разные окружения. Если на обеих машинах можно решать одни и те же задачи, то и переключаться между ними нет смысла.

02/03/2019 в 95% случаев это 03 февраля или в 5% случаев 02 марта.


02.03.2019 в 100% случаев 02 марта. Потому что формата, допускающего 11.23.2019 ни в одной стране, к счастью, не придумали.

Разве вы не знаете, что тепло человеческих рук идет на зарядку Матрицы?

Кто-нибудь может объяснить мне, почему у мышей Logitech переключатель между компьютерами находится снизу? В чем тут логика? Чтобы 2 мыши на столе не держать приходится покупать с переключателями. Но они так неудобно расположены, что иногда думаешь, что проще 2-ю купить, чем переключаться.

Основная фишка заключается в том, что вам не придется нигде писать


MyClass.getInstance("V1")

Потому что нигде в коде, кроме тестов и внутренних инициализирущих методов класса MyClass, использование значений констант типа "V1" не допускается. Этот код не пройдет ревью.

Почему общество "Телепат" не предъявляет иск к обществу "Амедико" за то, что они их программой незаконно пользуются?

Нажимаете точку и получаете все методы, определенные в классе MyClass. Какой еще помощи вы ожидаете от IDE или от компилятора?

Это код на языке Java. Вы не можете написать MyClass.instances.get, потому что instances — приватное поле. В енуме оно тоже есть, и при отладке вы его даже посмотреть сможете.


Насчет switch практически все, что я о нем думаю, я написал в своей статье https://habr.com/en/post/312792/.

if(obj.isMegaFeature1()) {код для мегафичи 1}

Это самый правильный код. Потому что его невозможно сломать.

Есть еще вариант с ConcurrentHashMap и putIfAbsent на лету для неизвестных значений, но это только для внутренних сервисов, которые не могут прислать пользовательские данные, иначе OOM можно словить.

Пример
public class MyClass {
    private static final Map<String, MyClass> instances =
            new HashMap<>();
    private static final Logger logger =
            LoggerFactory.getLogger(MyClass.class);
    private static final MyClass FALLBACK;
    static {
        // Способы инициализации могут быть разными
        // в зависимости от сложности алгоритма.
        // Можно выкачать из базы,
        // можно rest-сервис вызвать и т. п.
        // В первой версии почти всегда сгодится хардкод.
        // Можно комбинировать: часть значений
        // захардкодить, часть откуда-нибудь закачать.
        instances.put("V1", new MyClass("V1", ...));
        instances.put("V2", new MyClass("V2", ...));
        instances.put("V3", new MyClass("V3", ...));
        instances.put("V4", new MyClass("V4", ...));
        instances.put("V5", new MyClass("V5", ...));
        FALLBACK = instances.get("V1"); // или что угодно
    }

    public static MyClass getInstance(String name) {
        // Возможно, здесь будет ленивая инициализация
        MyClass result = instances.get(name);
        if (result != null) {
            return result;
        }
        logger.warn("Получено неподдерживаемое имя {}",
                    name);
        return FALLBACK; // или что-то посложнее
    }

    private MyClass(String name, ...) {
        this.name = name;
        // инициализация фич и других свойств
    }

    private final String name;

    // Использовать имя в условиях if нельзя —
    // только для отладки
    // или в качестве ключа поиска.
    // Это контролируется через ревью или хуки.
    public String getName() {
        return name;
    }

    private final boolean feature1;
    // фичи и другие свойства с геттерами
}

У меня уже давно нет проблемы с NPE. Не знаю, где вы тут его увидели.


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


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


Зато я знаю, что бывает, если делать так, как предлагаете вы, на периоде 5+ лет. Код будет выглядеть так:


18+
if (value == MyEnum.V1 || value == MyEnum.V2
        || value == MyEnum.V3) {
    // кусочек кода фичи1
    // кусочек кода фичи2
    // кусочек кода фичи3
    // кусочек кода фичи1
    if (value != MyEnum.V3) {
        // кусочек кода фичи2
    }
}

if (value == MyEnum.V1 || value == MyEnum.V3
        || value == MyEnum.V2 || value == MyEnum.V5) {
    // кусочек кода фичи4
    // кусочек кода фичи2
    // кусочек кода фичи3
    // кусочек кода фичи1
    if (value == MyEnum.V5) {
        // кусочек кода фичи5
    }
}

Попробуйте добавить в MyEnum значение V6 с фичами 1, 2, 4 и 6, при этом новая фича 6 должна выполняться так же и для V4, а для V3 пока нет, но известно, что через полгода фича 6 и для V3 тоже понадобится.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity