• Как указать высоту для main?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Если высота header фикcированная 60px, то самое просто можно сделать так:

    .main {
    height: calc(100vh - 60px);
    }


    А вообще вот один из примеров более гибкого прижатия без фиксированных значений:

    Ответ написан
    Комментировать
  • Как защитить данные от повреждения при INSERT?

    @alexalexes
    если в Mysql какие-то строки смогут загрузиться, а какие-то - нет,

    Не бывает тут вариативности, даже случайной.
    Можете внести одну или несколько строк запросом insert (или несколькими insert-ами по одной строке, а может еще где-то update-ом или delete-ом пробежитесь). Но фиксация этих действий будет происходить, если после запросов на вставку/изменение/удаление явно будет отправлена команда commit или rollback (а может и не явно, см. что такое autocommit).
    До поступления этих транзакционных команд ваши изменения будут копиться во временном буфере СУБД и будет блокировать объекты СУБД до того момента, пока не поступит транзакционная команда (или не наступит ситуация для autocommit). Для других пользователей СУБД изменения заблокированных объектов будет недоступно, только чтение той версии объекта, которая была до наложения блокировки (не всегда таков принцип, см. что такое уровни изоляции транзакций).
    Ответ написан
    Комментировать
  • Как парсить большое количество сайтов?

    @alexalexes
    Помещаете свой массив с 4000 элементами в таблицу базы данных.
    Добавляете еще несколько атрибутов для записи таблицы:
    1. статус обработки парсинга, значения: 1 - добавлен в очередь на обработку, 2 - в обработке, 3 - обработка завершена.
    2. Дата и время изменения статуса обработки.
    Теперь ваш скрипт должен взять запросом из таблицы базы одну запись (один сайт) со статусом 1 (или со статусами 2 или 3, с разницей времени больше периода повторной обработки парсинга) и перевести в статус 2 и начать обработку. По окончании обработки выставить статус 3. При смене статуса обновлять его время изменения.
    Анализировать статус и переводить его в статус 2 нужно одной транзакцией, а в статус 3 - другой транзакцией.
    Если время выполнения персинга с момента старта скрипта небольшое (определяете предельное время работы одного потока и с ним сравниваете), то можно взять следующую запись в работу.

    Все, теперь вы написали простетский планировщик задач и можете параллельно запустить несколько скриптов через браузер или через cron на сервере. Каждый поток выполнения скрипта запросом в базу будет брать задачи, поставленные в обработку, либо перезапускать давно не запускавшиеся задачи, либо перезапускать зависшие в обработке.
    Ответ написан
    Комментировать
  • Есть ли сейчас необходимость в HTML5Shiv и Modernizr?

    Вы должны отталкиваться от того, кем являются ваши пользователи.

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

    Если же это обычные люди, сидящие в интернете, то, скорей всего они используют Chrome или Microsoft Edge. Эти браузеры постоянно обновляются в фоне, и перед внедрением новых фич вам просто нужно периодически заходить на https://caniuse.com/ и ориентироваться на последние 2 версии этих браузеров. Safari может стать проблемой, если ваши пользователи часто покупают Маки. Safari - это, к большому сожалению, новый IE6, который тормозит индустрию...

    Самый лучший способ - это собрать информацию. Если у вас уже есть какой-то сайт для вашей аудитории, то там и собирайте статистику. Исходя из этой статистики принимайте решение. Охватывать все 100% не стоит, лишняя трата времени, денег, нервов. Оно не окупается. Каким процентом пользователей вы можете пренебречь - это всегда индивидуальное решение, но убедить руководство, что такое решение надо принять, всегда надо, потому что вы потом закопаете проект в этой обратной совместимости и потенциальных багах и уязвимостях, идущих с ней в пакете...
    Ответ написан
    6 комментариев
  • Есть ли сейчас необходимость в HTML5Shiv и Modernizr?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Зависит от требований браузерной поддержки для проекта.
    Ответ написан
    Комментировать
  • Сталкивался кто-нибудь, как переделать из querySelector в querySelectorall?

    @Delta01
    @de1ta01 пиши, помогу с вёрсткой =)
    const sliders = document.querySelectorAll("[data-slider]");
    
    sliders.forEach(slider => {
    	const track = slider.querySelector("[data-slider-track]");
    	const prev = slider.querySelector("[data-slider-prev]");
    	const next = slider.querySelector("[data-slider-next]");
    
    	if (track) {
    
    		prev.addEventListener("click", () => {
    			next.disabled = false;
    			// next.removeAttribute("disabled");
    
    			track.scrollTo({
    				left: track.scrollLeft - track.firstElementChild.offsetWidth,
    				behavior: "smooth"
    			});
    		});
    
    		next.addEventListener("click", () => {
    			prev.disabled = false;
    			// prev.removeAttribute("disabled");
    
    			track.scrollTo({
    				left: track.scrollLeft + track.firstElementChild.offsetWidth,
    				behavior: "smooth"
    			});
    		});
    
    		track.addEventListener("scroll", () => {
    			const trackScrollWidth = track.scrollWidth;
    			const trackOuterWidth = track.clientWidth;
    
    			prev.disabled = false;
    			next.disabled = false;
    			// prev.removeAttribute("disabled");
    			// next.removeAttribute("disabled");
    
    			if (track.scrollLeft <= 0) prev.disabled = true; //prev.setAttribute("disabled", "");
    			if (track.scrollLeft === trackScrollWidth - trackOuterWidth) next.disabled = true; //next.setAttribute("disabled", "");
    		});
    
    	};
    });
    Ответ написан
    2 комментария
  • Как лучше хранить много изображений для веб-приложения?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Хранение файлов в бд - самый хреновый вариант из имеющихся. По многим причинам, но основная - файлы должны лежать в файловой системе. Это их естественное состояние. Это быстро, не затратно, не потребляет лишнюю память/процессор и просто удобно. В зависимости от необходимости давать к ним доступ всем или по авторизации, будет либо работа напрямую с статикой через какой-нить нжинкс, либо программно сформированный поток байт через что-то типа пхпшного readfile...

    В зависимости от возможностей хостинга, файлы хранят либо локально(в случае например собственного выделенного сервера и наличия райд стойки), либо, как уже написали, в облачных хранилищах, что чаще всего достаточно выгодно в плане денег за объем/трафик, плюс расширение хранилища будет просто отражаться на счете за услуги, а не ложиться ответственностью на вас как владельца сгоревших винтов с данными клиента. АПИ у всех весьма несложные, а драйвера для работы с удаленными файлохранилищами есть практически для всех популярных движков в виде готовых пакетов.
    Ответ написан
    3 комментария
  • Как правильно работать с ветками?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Для пет проекта достаточно 2 веток - master и dev:
    - master - работающий код, красивый, причесаный
    - dev - в нем ведется вся работа

    Нет смысла упарываться во всякие git flow, github flow и еже с ними. Над проектом работаешь ТОЛЬКО ТЫ, а значит делать надо как тебе удобнее.
    Думать об этом надо только если над одним проектом работает больше 1 человека.

    P.S. можно и одной веткой обойтись, но так удобнее откатываться и точно знаешь, что рабочий код не затронется
    Ответ написан
    Комментировать
  • Как выбрать строку по определенному числу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище, data quality у тебя ужасное. Такие данные не должны попадать в реляционную БД.
    Лучше их как-то подчистить и нормализовать. И потом и запрос по подчищенным данным пойдет
    быстрее и индекс можно построить.
    Ответ написан
    Комментировать
  • Почему не работают медиа-запросы в хостинге?

    @Asokr
    Хостинг к html, css и javascript не имеет никакого отношения, всё исполняется у вас в браузере.

    Хостинг и локалка в вашем случае, может иметь отношения к путям до файлов. Проверьте, что они на хостинге верны. Откройте консоль браузера, посмотрите, нет ли ошибок.
    Ответ написан
    2 комментария
  • Совместимость сокета для процессоров Intel Core i?

    @asmelnik
    Можно ли вместо Intel Core i5-1135G7 поставить Intel Core i7-920 ?

    Работать не будет, совсем, даже если физически воткнете.
    Но зависит от цели этого мероприятия.

    Чисто физически, доработав напильником, можно. Но вы, надеюсь, ожидаете хоть какой-то работоспособности, а не просто сделать фото "Я воткнул i7-920 вместо i5-1135G7".

    Если ваша цель угробить железо, то можете попробовать.
    Ответ написан
    6 комментариев
  • В какой программе лучше делать верстку сайта?

    miraage
    @miraage
    Старый прогер
    vscode или webstorm, другие варианты выкиньте.

    vscode - как vim, текстовый редактор, простой. Может превратиться в мощную машину через плагины. Кажется идеальным вариантом в Вашем случае.

    webstorm - мощная машина, "громоздкий" инструмент для профессиональных разработчиков. Умеет почти все, если не все, однако для простой верстки это как стрелять с пушки по воробьям.
    Ответ написан
    1 комментарий
  • В какой программе лучше делать верстку сайта?

    @pantsarny
    WebStorm
    Ответ написан
    Комментировать
  • В какой программе лучше делать верстку сайта?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Верстать лучше в VS Code, т.к. вы можете накинуть туда много плагинов, которые очень сильно вам могут помочь в этом

    Для дизайна лучше используйте Figma
    Ответ написан
    Комментировать
  • Как убрать пустое место?

    IvanU7n
    @IvanU7n
    никак, такое поведение не предусмотрено для элементов, в которых из-за overflow произошла разбивка на несколько строк
    Ответ написан
    2 комментария
  • Как в базу записывать конфиг настроек settings сайта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Не сочтите за грубость, но вас из крайности в крайность бросает. То вы не хотели связываться с бд так как это "слишком сложно" и хранили все в файлах, измываясь и над собой и над ребятами которые все это пытались как-то образумить... Сейчас есть большой шаг вперед - вы подружились с бд, но теперь, как в той поговорке - если в руках молоток - все кажется гвоздем... Конфиги из нескольких переменных проще хранить в файле настроек, например в формате JSON. Если уж очень хочется забить шуруп молотком - заведите табличку сеттингс, храните в ней пары ключ-значение, или вообще одну строку с тем же JSON.
    Ответ написан
    2 комментария
  • Как сделать ограничитель поля символов?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Для начала реши как ты будешь отображать числа в которых число разрядов больше чем достуно в калькуляторе для вывода. А потом уже можно заниматься исправлением бага.
    Ответ написан
    Комментировать
  • Допустимо ли двоеточие в значении атрибута data?

    IvanU7n
    @IvanU7n
    можно, data-атрибуты, это просто строка, если что-то перестаёт работать после добавления двоеточия, значит это что-то как-то интерпретирует получаемые значения, но к data-атрибутам это не имеет никакого отношения
    Ответ написан
    1 комментарий
  • Как залить на сервер сайт с бекендом, который написан на php?

    @AndryG
    Я за семь минут сформулировал три разных ответа. Это ж надо так умудриться задать вопрос, что хрен поможешь.

    (я использую MAMP) без него, вместо желаемого результата на странице появляется весь код PHP,
    Ну. конечно будет появляться исходный код, ибо интерпретатора нет и никто исходники не обрабатывает.

    когда подключается PHP код выходит ошибка (не находит страницу)

    Ошибки - это нормально! Нужно найти причину и устранить ее.

    Правильно заданый вопрос - 50% ответа. Тренируйтесь излагать мысли - полезно для кодинга
    Ответ написан
    Комментировать
  • Как можно переводить минут/секунд/часы в число если получаю не в формате числа?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const getSeconds = str =>
      [
        [ 'час', 60 * 60 ],
        [ 'минут', 60 ],
        [ 'секунд', 1 ],
      ].reduce((acc, n) => {
        return acc + (str.match(RegExp(`\\d+(?=\\s+${n[0]})`)) ?? 0) * n[1];
      }, 0);
    
    
    getSeconds('2 часа 22 секунды') // 7222
    getSeconds('99 минут') // 5940
    getSeconds('1 час 1 минута 1 секунда') // 3661
    getSeconds('666 секунд') // 666
    Ответ написан
    2 комментария