Задать вопрос
  • Как правильно документировать разрастающуюся БД?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    1. Основная проблема документации ее поддержка. Когда документация отстает, то она больше мешает чем, помогает.
    2. Автоматизация создания доки, помню, использовал Interprice Architect для автосоздания диаграмм бд, в принципе помогало, но боюсь что использовалось только мной
    3. В обще кто то сказал что лучшая документация это код, поэтому соглашусь что если есть некий workflow по созданию бд, и есть миграции с описанием что делает та или иная таблица. Я использую Propel2 ORM там есть некий конфиг (chema.xml) которая описывает таблицы + разделения таблицы на пакеты/группы/контекст. Маленьким контекстом проще управлять.
    Ответ написан
    1 комментарий
  • Почему не получается отфильтровать массив строк?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Предлагаю сделать следующее:

    • Прочитать сообщение об ошибке и попытаться осознать, что в нём сказано
    • Посмотреть, какие значения принимает key при переборе p
    • Открыть документацию и разобраться, что делает цикл for...in
    • Погуглить, какие ещё бывают способы перебора

    UPD. Ну что, никак?

    В сообщении об ошибке сказано, что невозможно прочитать свойство у undefined (ну, так язык устроен). Т.е., массива строк у вас нет. Массив строк - это когда всё его содержимое является строками. Откуда в массиве взялись undefined (да, у вас их там несколько)? Цикл for...in обрабатывает не только собственные свойства объектов, но и те, что доступны через цепочку прототипов. Значения которых уже не являются элементами и, соответственно, не имеют запрашиваемого вами свойства textContent. Раз свойства нет, получаете undefined.

    Как собирать массив текстов (const getText = el => el.textContent;), чтобы туда не попадал всякий мусор - лучше бы вообще отказаться от применения for...in, варианты разные есть:

    const list = Array.from(p, getText);
    
    // или
    
    const list = Array.prototype.map.call(p, getText);
    
    // или
    
    const list = [];
    for (const n of p) {
      list.push(getText(n));
    }
    
    // или
    
    const list = [];
    for (let i = 0; i < p.length; i++) {
      list[i] = getText(p[i]);
    }
    
    // или
    
    const list = [];
    p.forEach((n, i) => list.splice(i, 0, getText(n)));

    Если же хотите и дальше использовать for...in, то прежде чем что-то делать с конкретным свойством, убедитесь, что оно является собственным, методы Object.hasOwn и Object.prototype.hasOwnProperty вам в этом помогут.
    Ответ написан
    Комментировать
  • Как применить эффект на все изображения?

    imko
    @imko
    Senior Scratch Developer
    const theImage = document.querySelector('.image')
        new ImageHover(theImage);

    querySelector возвращает первый попавшийся подходящий элемент, тебе надо использовать querySelectorAll чтобы получить все три картинки, перебрать полученный список и для каждой создать ImageHover
    Ответ написан
    1 комментарий
  • Как правильно документировать разрастающуюся БД?

    @rPman
    Описывай все
    Очень хороший тон писать самодокументируемый код, среды разработки и всякие doxygen для обычных языков программирования, и хоть как то описывай базу данных, комментарии, правильное именование и само собой документация. Недостаточно сказать что вот тут лежат записи таких то объектов, опиши их отношения, количественные и не только ограничения, порядок участия в бизнеспроцессах и т.п.
    Ответ написан
    4 комментария
  • Имеет ли смысл добавлять первичный ключ в таблицу?

    @Everything_is_bad
    Имеет ли смысл добавлять первичный ключ в таблицу?
    пишу веб приложение на джанго.
    псс, в Джанго ты модель без первичного ключа и не сделаешь.
    Ответ написан
    1 комментарий
  • В чем ошибка запуска Docker compose?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как подключить бд к серверу в docker-compose?

    DB_HOST: db

    Предположу, фронт использует localhost или 127.0.0.1 для подключения к бд? Если да, то заменяем ее на db.

    Можно проверить, кто использует сеть my_network (искать в Containers), фронт должен быть там:
    $ docker network inspect my_network

    MYSQL_USER: "root"
    MYSQL_PASSWORD:

    Ну и пароль рекомендую все таки установить.
    Ответ написан
    5 комментариев
  • Какой docker compose использовать и почему их два?

    Исторически docker-compose была как отдельная программа. С некоторых пор она стала расширением докера и теперь вызывается командой `docker compose`.
    Ответ написан
    Комментировать
  • Какой docker compose использовать и почему их два?

    @dronmaxman
    VoIP Administrator
    docker compose - новая версия
    docker-compose - больше не развивается, поддерживает для совместимости
    Ответ написан
    1 комментарий
  • В чем проблема при установке убунту?

    @pfg21
    ex-турист
    неправильная разметка носителя под UEFI/GPT - отсутствует раздел необходимый EFI system partition.
    либо доделать uefi/gpt, либо в биосе переключиться на mbr
    Ответ написан
    6 комментариев
  • Как получить Get запрос?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    history.pushState({}, '', '/www?' + $(this).serialize());
    https://developer.mozilla.org/en-US/docs/Web/API/H...
    Ответ написан
    Комментировать
  • Как ускорить поиск по бд MySQL?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Добавить категории и товарам Materialized Path. Тогда вместо IN будет индексируемый LIKE.
    Ответ написан
    7 комментариев
  • Почему мобильная адаптация на ios отличается от android?

    Lynn
    @Lynn
    nginx, js, css
    Использовать
    text-size-adjust: none;

    Но вообще, фиксировать высоту текстовых блоков это плохая идея и плохая вёрстка.
    Ответ написан
    Комментировать
  • Как добиться такого эффекта при наведении?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Интересная задача. В общем весь фокус в том, что поверх видимых карточек, лежит точно такая же сетка с невидимыми карточками у которых есть только синий border. На сетку, которая лежит сверху, наложена маска:
    mask: radial-gradient(320px 320px at var(--x) var(--y), black 1%, transparent 40%);

    То есть у всего блока с синими border остается видимым только радиальный градиент в 320px, а x и y это координаты курсора. Ну и грубо говоря получается такая картина:

    Ответ написан
    4 комментария
  • Шифрование VeraCrypt и BitLocker одновременно, возможно ли такое?

    saboteur_kiev
    @saboteur_kiev Куратор тега Информационная безопасность
    software engineer
    в VeraCrypt в свое время были выявлены критические уязвимости, что говорит о соответствующем уровне разработчиков.

    И какой же?
    Вы как бы должны понимать, что софт непростой, и написать его вообще без уязвимостей, надо быть боженькой, что невозможно.
    Veracrypt - форк от Truecrypt, в котором уже точно были найдены определенные уязвимости, и в веракрипт они были исправлены.

    Соответствующие аудити выявляли возможные уязвимости, которые были исправлены. Последний публичный аудит был еще в 2020 году.
    Хотите провести аудит - исходники открыты, аудитируйте.

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

    То есть найти уязвимость или даже если есть открытые issue, это далеко не тоже самое, что иметь возможность легко расшифровать зашифрованный том. Уязвимость может лежать в других моментах. Например драйвер веракрипт, который как и все драйвера, внедряются на уровень ядра ОС, может позволить выполнить несанкционированные действия. Но к шифрованию это никакого отношения не имеет.
    Например https://www.cvedetails.com/cve/CVE-2015-7358/
    Ответ написан
    1 комментарий
  • Как сверстать данный блок с последующим адаптивом?

    vhood
    @vhood
    Не забывайте отмечать решения
    Примерно так


    Для адаптива можно сделать несколько вариантов расположения стрелок и переключать их по media запросу
    Ответ написан
    Комментировать
  • Как записать результаты работы цикла Thymeleaf в переменную JavaScript?

    @Dementor
    программист, архитектор, аналитик
    Или экранируйте внутренние кавычки, или используйте одинарные как внешние, или задавайте значение value без кавычек. Сейчас у вас невалидный JS
    Ответ написан
    1 комментарий
  • Почему мой тайпскрипт сбоит и как это пофиксить?

    Alexandroppolus
    @Alexandroppolus
    кодир
    const TextEditor: React.FC<{
      value: string;
      setValue: (value: string) => void;
    }> = ...
    Ответ написан
    4 комментария
  • Какие есть оптимальные способы хранения и передачи изображений из MongoDB?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, есть: хранить сами изображения не БД, а в отдельном файловом хранилище с внешним доступом по ссылке-идентификатору. В самой же БД хранить только идентификаторы изображений в хранилище. Это стандартная практика работы с файлами и БД.
    Ответ написан
    Комментировать
  • На что обратить внимание при проектировании крупного ресурса?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    для форума, думаю реляционная БД в любом случае удобнее.
    В теории, если он достигнет размеров Хабра, можно будет вообще переписать продукт, к тому времени накопятся хотелки, накопится опыт что и как работает, что востребовано и что нет.
    База данных же скорее всего просот масштабируется, Индексируется, кластеризируется.
    Посмотрите как спроектированы базы популярных форумов (xenForo, IBP, vbulletin)- ничего особенного нет, хотя рассчитаны на огромное количество юзеров, но это решается больше железом. И все на реляционных базах.
    Ответ написан
    7 комментариев
  • Почему кнопка постоянно disabled?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Отвечать прямо не буду, предложу ряд встречных вопросов, разберётесь с ними - разберётесь со своим:

    Сколько у вас чекбоксов?
    Что выдаёт метод every для пустого массива?
    Как работает оператор ||?
    Ответ написан
    2 комментария