Задать вопрос
  • Можно ли в controllerbot добавить несколько админов?

    @enabl3 Автор вопроса
    Решено, необходимо в боте controllerbot, выбрать необходимый канал, управление админами, добавить.
    Ответ написан
    Комментировать
  • Что такое Доменный объект и Предметная область, простым языком?

    @deliro
    Предметная область — множество всех сущностей и их отношений в рамках контекста.

    Например:
    В рамках магазина это покупатели, продавцы, товары, цены, скидки, поставщики, процесс продажи, прихода на склад, возврата и т.п.
    В рамках дискорда это пользователи, серверы, комнаты, группы, права на доступ, процессы присоединения к серверу, входа в комнату, оплаты nitro, написания текстового сообщения и т.п.

    В целом, это всё, что понимает твой менеджер и ничего, что он не понимает. В предметную область не входит, например, то, где именно ты хранишь данные — в mysql, в файлах, получаешь и сохраняешь их по API или хранишь их в redis'е. Но входит абстрактная сущность "хранилище". Она же — интерфейс репозитория. Репозиторий — это паттерн, который скрывает реализацию конкретного хранилища и который оперирует объектами доменной модели — элементами предметной области, как будто они хранятся у тебя в оперативной памяти. Например, у репозитория могут быть методы
    users.getByID(1234), users.save(user), users.getByEmail("hello@world")
    и т.п. Реализация репозитория определяет, куда именно сохранится этот user или откуда он скачается. В одну таблицу или в несколько. Нормализованные ли будут данные лежать в РСУБД или денормализованные. Именно здесь можно реализовать запись в master, а чтение с реплик. Или энкодинг в msgpack и передачу его по API куда-то. Или по gRPC. Потому что предметная область не должна перегружаться деталями реализации хранилищ.

    Про доменную модель:
    Словарь (он же хэш, он же ассоциативный массив) — это не доменная модель (хотя в некоторых функциональных языках может быть). Объект ORM — это тоже не доменная модель, хотя много где пытается ей быть. Доменная модель не зависит от конкретных фреймворков, баз данных, оптимизаций этих баз и прочих навязанных технической составляющей сущностей. Чаще всего это обычный класс на языке, на котором пишется код (или struct в случае Golang).

    Недавний пример:
    У сущности есть теги по категориям:
    {"category1": ["foo", "bar"], "cat2": ["foo", "hello", "world"]}
    . Их так удобно представлять на уровне предметной области, об этой структуре я могу общаться с заказчиком. Но в монге они сохраняются в виде
    ['category1%%foo', 'category1%%bar', 'cat2%%foo', 'cat2%%hello', 'cat2world']
    , потому что так их легче индексировать и быстрее по ним искать. Но это скрыто в реализации репозитория, доменная область про это ничего не знает. Это даёт сразу много преимуществ:
    1. Это очень просто тестировать, без всяких моков. Вместо репозитория с монгой я делаю репозиторий, который хранит сущности в оперативе. Всё, тесты бизнес-логики не зависят от инфраструктуры. А репозиторий монги я тестирую отдельно, мокая запросы в саму монгу или даже не мокая
    2. Это облегчает понимание всего продукта. Мозг не пытается составить полную картину, когда запросы в БД перемешаны с логикой, тут же сплиты-джойны строк, какие-то ещё низкоуровневые действия. Мозгу легко ориентироваться в пределах уровня. На уровне репозитория я думаю о том, как сущности хранить и доставать из хранилища, на уровне служб я думаю о том, как сущности взаимодействую и какие их них нужно извлечь/сохранить, но не как
    3. Рефакторинг очень простой. Даже теоретическая смена БД. Завтра с монги нужно будет перенести одну сущность на постгрес — без проблем. Я напишу один новый репозиторий, не затронув ни строчки кода за его пределами, кроме места, где он создаётся. При этом, остальные сущности могут лежать всё также в монге

    Доменные модели бывают богатыми и анемичными (но не бескровными). Оба подхода применяются и, имхо, не является антипаттерном ни один из них. Лично я использую анемичные модели, а всю бизнес-логику храню в службах.
    Ответ написан
    2 комментария
  • Что такое выражение, литерал и инициализация в JavaScript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    По-простому я бы объяснил так:
    • выражение – это любой кусок кода, который в итоге даёт значение. Напр. цифра 0 или a===b
    • литерал – это буквально записанное значение. Напр. 10 или "строка" или объект {a:10, b:20}
    • инициализация – придание начального значения. Напр. переменной при создании: var a = 10
    Ответ написан
    3 комментария
  • В чём отличие git bash и просто bash?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Git это линуксовый пакет программ, состоящий из множества утилит работающих в текстовом терминале. Когда портировали Git в Windows, пришлось портировать и часть окружения Linux, в том числе и интерпретатор командной строки bash. Git хоть и может выполняться в стандартной командной строке Windows или в Power Shell, но родным для него является bash и лучше работать в нём. Так как это не полноценный bash из линукса, а лишь его виндовая адаптация для Git, то его и назвали Git bash.
    Ответ написан
    Комментировать
  • Что более актуально использовать :Grid или flex?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    К слову, флексы и гриды НЕ альтернатива друг другу.
    А скорей важное дополнение. На гридах удобно сделать сетку для проекта, минуя фреймворки. Флексы же используются для внутренней разметки блоков чаще всего.
    На счёт актуальности флексов и гридов, каждый проект уникален.
    И исходить нужно не из собственного «как верстать», а из требований заказчика. Так как выбирается метод вёрстки исходя из желаемой поддержки, кроссбраузерности.
    Ответ написан
    1 комментарий
  • Что более актуально использовать :Grid или flex?

    yudinikita
    @yudinikita
    Инженер-программист из России
    При помощи гридов, базовую разметку всей страницы можно построить буквально парой строк css. Flexbox вам такого не даст. Как я вижу, то flexbox призван решить проблемы построения разметки через float'ы + добавить фишек сверху.

    grid'ы призваны решить проблему и того и другого + добавить фишек сверху. Но гриды это не замена flexbox. Их можно и нужно использовать вместе.

    Пример такой: есть всем известная масонри сетка, щас, её вручную, при помощи flexbox сделать нельзя, а вот при помощи гридов раз плюнуть. Чуете разницу?

    В итоге, flexbox можно уже использовать. Гриды можно использовать не везде, но изучать их в любом случае нужно для дальнейшего развития.
    Ответ написан
  • Что более актуально использовать :Grid или flex?

    delphinpro
    @delphinpro Куратор тега Вёрстка
    frontend developer
    Смотрим ссылки
    https://caniuse.com/#feat=flexbox
    https://caniuse.com/#feat=css-grid

    И сами решаем, можно ли конкретно вам на отдельно взятом проекте использовать ту или иную технологию.

    Актуально то, что позволяет вам сделать техническое задание к проекту.
    Ответ написан
  • Мощнее ли пароль, содержащий китайские иероглифы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    тут вопрос в том, поддерживает ли алгоритм китайские иероглифы.
    Большинство в качестве паролей понимают кодировки, где один байт = 1 символ.
    китайские иероглифы возможно только в многобайтных кодировках, а в этом случае предполагается что пароль вообще может быть бинарным.
    Ответ написан
    Комментировать
  • Как верстать блоки сложной формы на чистом css?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Пример
    Используем псевдоэлементы и трансформацию.
    Простые углы реализуем за счёт рамки. Однако, если потребуется тень, придётся и там применить трансформацию.
    Для сложных углов вводим вложенный элемент и используем внутреннюю тень.
    И, конечно же, всегда есть вариант с использованием SVG в качестве фона (или напрямую).
    Ответ написан
    6 комментариев
  • Чем спецификация отличается от документации в JAVA?

    zolt85
    @zolt85
    Программист
    Спецификация - это сухое описание продукта или подхода. ТТХ если хотите. Документация же может содержать советы по применению продукта основанного на спецификации, или наоборот совету по не применению.

    По ссылке, которую Вы привели находится спецификация API 8 JDK.

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

    Спецификация языка Java есть по такому адресу: https://docs.oracle.com/javase/specs/.

    ИМХО, понять ее не в состоянии даже те, кто ее написал)
    Ответ написан
    1 комментарий