Задать вопрос
  • Входит ли текущая дата в интервал, если года разные?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $date = new DateTimeImmutable();
    $isInAcademicYear = (
        $date <= new DateTimeImmutable('31 May') ||
        $date >= new DateTimeImmutable('01 September')
    );
    var_dump($isInAcademicYear); // true
    Ответ написан
    1 комментарий
  • Куда ведут тернистые пути к файлам при попытке его чтения?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Откройте для себя такую штуку, как "CWD", "Current Working Dir" или "рабочий каталог", а так же NodeJS переменные __dirname и __filename.
    Ответ написан
    Комментировать
  • Странное поведение str_replace() при заменах в HTML?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $html = str_replace(' /" ', '/" ' ,$html);Есть ненулевая вероятность попасть в какой-то текст, но в целом ей можно пренебречь.
    Ответ написан
    Комментировать
  • Как восстановить/перенести ТОТР приложение со всеми ключами на новый телефон?

    У Aegis можно сделать бэкап, перенести его на другой телефон и восстановить.
    Ответ написан
    1 комментарий
  • Laravel 10, почему в контроллере параметр модели возвращает данные, а в самой модели тот же параметр возвращает null?

    yesbro
    @yesbro
    Думаю, помогаю думать
    1) Убираешь из модели protected ?int $id = null;

    2) Далее что можно сделать что бы шторм не подсвечивал.

    2.1) Ставишь плагин для шторма Laravel Idea https://laravel-idea.com/ , самый лучший вариант,.

    2.2) Ставишь пакет IDE Helper Generator for Laravel https://github.com/barryvdh/laravel-ide-helper который будет генерировать файл подсказок для шторма

    2.3) Сам руками прописываешь свойства модели в док блок.

    /**
     * @property int|null $id
     */
    Ответ написан
    2 комментария
  • Какой вид должен иметь профиль github?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Всем наплевать на вашу активность на гитхабе.

    С одной стороны не хочу удалять, чтобы бы было видно что "давно" занимаюсь.

    Кому видно?

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

    Не бойтесь, смотреть никто не будет.

    Они проект кусками закидывают по ходу работы или как это происходит?

    Разумеется. если это не проект на пару часов, то минимум раз в день (вечером) сохранять написанный код надо во избежание утери данных.

    Стоит закидывать проект кусками чтобы была высокая активность или в целом стоит на нее забить?

    Да как хотите. Вы для кого это всё затеяли вообще? Перед кем надо выделиться?
    Ответ написан
    3 комментария
  • Корректно ли составлен запрос?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мне необходимо только узнать есть ли такой заказчик с такими данными.

    1) Оформляйте запрос строками, так будет гораздо проще и вам, и другим разработчикам понять что вы пишете и как оно работает:
    SELECT * 
    FROM `orders2022` 
    WHERE LOWER(`surname`) LIKE CONCAT('%', ?, '%') 
    AND LOWER(`name`) LIKE CONCAT('%', ?, '%') 
    AND LOWER(`fathername`) LIKE CONCAT('%', ?, '%')

    2) Синтаксис верный, но если вам важно найти "хоть одно совпадение", лучше использовать LIMIT 1, это остановит базу в поиске всех вхождений, то есть перебора ВСЕЙ таблицы вместо выхода по первому вхождению. Кроме того, CONCAT('%', ?, '%') можно использовать если вместо ? будет SQL выражение (например каой-то селект), в данном случае это просто трата ресурса процессора. Просто добавьте % в начале и конце подставляемой переменной.
    3) Неплохо давать более четкое описание проблемы, чтобы другим не пришлось гадать о чем код, так как никто кроме вас в контекст задачи не погружен.
    Ответ написан
    Комментировать
  • Как настроить Git?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Ответ написан
    Комментировать
  • Как правильно разместить файлы php на хостинге?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Для выкладывания .php файла не нужна база данных.
    Просто копируете файлы на сервер, и если обработка .php там включена - всё заработает.

    Можно просто загрузить на сервер файл test.php с содержимым
    <?php echo("OK!"); ?>
    И если обращение к этой странице http://доменное_имя/test.php покажет текст OK! - значит всё работает нормально.
    Ответ написан
    3 комментария
  • Как не блокировать код после выполнения Artisan::queue?

    Fragster
    @Fragster
    помогло? отметь решением!
    Вообще-то обрабатывальщик задач должен быть запущен отдельным процессом, например через cron, .service, pm2 или какой-нибудь supervisor, а не внутри самого обработчика запроса.
    Ответ написан
    2 комментария
  • Названия в классов: я могу раздавать их рандомно или есть некая традиция, игнорирование которой считается плохим тоном?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега CSS
    В программировании есть традиция давать сущностям понятные имена.

    При этом, что такое "понятное имя", каждая команда договаривается самостоятельно. Кто-то пишет только на грамотном английском, кто-то использует колхозную транслитерацию. Один и тот же элемент на разных проектах может называться по-разному, потому что у них разная предметная область (например, menu/navigation). И так далее.

    Дополнительно, существуют и схемы наименования, самая популярная - БЭМ.

    С точки зрения же механики, браузеру совершенно всё равно, что написано у вас в классах (за исключением небольших технических ограничений, описанных в спецификации).
    Ответ написан
    Комментировать
  • Почему при загрузке сайта на Pages не подключаются стили CSS?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Потому что там, куда вы отправили браузер за стилями их нет.
    Как узнать, что их там нет?
    Открывает девтулз, вкладку Console и смотрим, где браузер их ищет.
    65c234e30ff28923765761.jpeg
    А нет их там, потому что вы сказали начать искать их от корня
    <link rel="stylesheet" href="/css/main.css">
    Но корень это https://antcosm.github.io, а страницу вы открываете https://antcosm.github.io/lofthouse/
    Исправьте путь и будет работать. Уберите слеш.

    А ещё, наверное, почитайте про <base>
    Ответ написан
    Комментировать
  • Как через css сделать такие блики на bk сайта?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Формально можно взять фильтр blur с большим радиусом и размыть абсолютно расположенные на фоне элементы. В SVG есть аналогичный фильтр. Но лучше так не делать. Для таких размытий используется вычислительно сложный алгоритм и можно существенно увеличить нагрузку на устройства пользователей на ровном месте. Это просто сложно рендерить в реальном времени.

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

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

    P.S.: Добавлю еще такой момент, что при использовании картинки может возникнуть такая мысль, что в CSS есть еще градиенты - и это ведь тоже как картинки, может быть их использовать? Но собрать такое из градиентов гораздо сложнее, чем кажется. Сложение полупрозрачных градиентов - это не тот же алгоритм, что размытие. При взаимном наложении клякс друг на друга результат будет отличаться. Чтобы иметь такое же красивое размытие - придется иметь много градиентов, что сведет на нет саму идею снижения нагрузки на железо через них.
    Ответ написан
    Комментировать
  • Как указать высоту для 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 комментария