• Как реализовать домашний ПК для веб сервера и pet проектов?

    @ZardoZAntony
    программист, сис. админ
    Можно вообще на минималках, если комп не выключаете (как я) или не надо, чтобы проекты круглые сутки в интернет торчали.
    Просто Windows 10/11 + WSL2 + Docker Desktop (либо тот же Ubuntu). Каждый проект в свой docker-compose оборачивайте и свои порты давайте. Порты пробросить наружу с компа без проблем, если ip белый.
    Это будет максимально близко к тому с чем вы будите работать в реальных проектах.
    Ответ написан
    Комментировать
  • Как установить Windows 10 на ноутбук Asus, если SSD NVMe не видно при установке?

    @ZardoZAntony
    программист, сис. админ
    Я скачал дрова Intel IRST для своей модели ноута с сайта Asus. Запустил на компе, где качал, установку дров и выбрал "Извлечь", указал на флешку с виндой. При установке выбрал эти дрова, SSD увиделся, но не давал установить. Тогда я в BIOS включил защищенную загрузку. Тогда при выборе драйверов список сократился и винда уже встала без проблем.
    Ответ написан
    Комментировать
  • Как зарегистрировать дополнительные функции для ExpressionLanguage в Symfony?

    @ZardoZAntony Автор вопроса
    программист, сис. админ
    Сам разобрался.
    Тут надо массив вернуть.
    class ArrayCountExpressionLanguageProvider implements ExpressionFunctionProviderInterface
    {
        public function getFunctions()
        {
            return [
                     ExpressionFunction::fromPhp('count'),
           ];
        }
    }


    А перекрывать получается так:
    services:
        validator.expression_language:
            alias: App\Infrastructure\ExpressionLanguage\ExpressionLanguage
    Ответ написан
    Комментировать
  • Почему CSalePaySystemAction::GetParamValue не работает в helper.php?

    @ZardoZAntony
    программист, сис. админ
    Что интересно CSalePaySystemAction::GetParamValue у меня и в payment.php пустоту возвращал. Но зато там был $arResult, откуда я всё нужное и достал.
    А на другом сайте нет $arResult, но зато работает CSalePaySystemAction::GetParamValue. Чудны дела твои битрикс ))
    Ответ написан
    Комментировать
  • Как установить каноническую ссылку на страницах пагинации Битрикс?

    @ZardoZAntony
    программист, сис. админ
    Главная ошибка использования для подобного AddHeadString в том, что возможны ситуации, когда на одной странице в нескольких местах будет разный canonical. А в части решений забыли использовать второй параметр true, так будут выводиться дубли одного и того же, в случае если такой подход используется в разных компонентах. А так же вы получите дубляж при уже добавленном canonical от стандартных компонентов, которые такой подход не используют.

    Правильно использовать свойства страницы, как это делают стандартные компоненты битрикса
    Например catalog.element это делает так:
    $APPLICATION->SetPageProperty('canonical', $arResult["CANONICAL_PAGE_URL"]);


    Для страниц навигации правильно устанавливать canonical так:
    для шалонов используемого system.pagenavigation создаете файл component_epilog.php

    use Bitrix\Main\Web\Uri;
    $context = \Bitrix\Main\Application::getInstance()->getContext();
    $uri = new Uri($context->getRequest()->getRequestUri());
    $uri->deleteParams(['PAGEN_' . $arResult['NavNum']]);
    
    $protocol = $context->getRequest()->isHttps() ? 'https://' : 'http://';
    $href = $protocol . $context->getServer()->getHttpHost() . $uri->getUri();
    
    $APPLICATION->SetPageProperty('canonical', $href);


    В последних версиях ничего делать больше не нужно, если в header.php есть вызов
    <?php $APPLICATION->ShowHead()?>
    В других случаях надо явно указывать
    <?php $APPLICATION->ShowLink("canonical")?>

    В админке проверьте, что в "управлении структурой" добавлено данное свойство.
    Данный метод можно использовать в любых ситуация, даже без ЧПУ, т.к. остальные параметры из строки не удаляются.

    Задача, которую опционально требуется решать - проверить, а не установлен ли canonical до вас. В таком случае вы его перетрёте, а это часто не то что нужно. Оставлю её на домашнее задание.
    Ответ написан
    1 комментарий
  • Manjaro на Hyper-V Faliled to start Light Display Manager?

    @ZardoZAntony
    программист, сис. админ
    sudo pacman -Sy
    sudo pacman -S xf86-video-fbdev
    Ответ написан
  • Как включить отображение неактивных элементов в Bitrix?

    @ZardoZAntony
    программист, сис. админ
    В этом файле жестко прописаны
    \bitrix\components\bitrix\catalog.smart.filter\component.php

    $arElementFilter = array(
    				"IBLOCK_ID" => $this->IBLOCK_ID,
    				"SUBSECTION" => $this->SECTION_ID,
    				"SECTION_SCOPE" => "IBLOCK",
    				"ACTIVE_DATE" => "Y",
    				"ACTIVE" => "Y",
    				"CHECK_PERMISSIONS" => "Y",
    			);
    Ответ написан
    Комментировать
  • Bitbucket. Что с кодировкой описания коммитов?

    @ZardoZAntony
    программист, сис. админ
    Никак, Bitbucker поддерживает только UTF-8. Его много лет просят об этом, но воз и ныне там.
    Ответ написан
    Комментировать
  • Одно лицо покупатель и создатель заказа, кто то делал?

    @ZardoZAntony
    программист, сис. админ
    Не используйте профили покупателей, если это вам не нужно. Эти данные обычно берутся от туда, либо вводятся вами в форме заказа (не видя шаблона не сказать).

    Если я не пользуюсь профилями покупателей, то я подставляю данные при оформлении заказа из профиля пользователя.
    Ответ написан
  • Bitrix как же на нем правильно разрабатывать?

    @ZardoZAntony
    программист, сис. админ
    Делают везде как бог на душу положит. Тоже много где работал по битриксу.

    Стиль разработки, который задуман битрикс - это лучший варинат для разработчиков фулстеков или фронтендеров, которые хотя бы сдали экзамен по внедрению верстки. Он не грузит лишний js и css там где он не нужен. И чем больше проект, тем большее это благо.

    Вообще все проблемы людей, которые любят собирать всё в один js и один css файл - незнание архитектуры той CMS, с которой он работает. Тем более почти всегда это тупо верстальщик, который не знает куда пойдет его верстка, да и знать не хочет. Использовать BX он так же не умеет, что в итоге приводит к тому, что куча его скриптов и форм являются неудобными в применнии, т.к. есть гораздо более удобные нативные вещи. Это особо касается корзины и чекаута.

    Но скажу по секрету - webpack так же можно настроить, что он будет генерить шаблоны компонентов в нужных папках с стилями и js, а общие стили генерить в общие css и js. А фронтендер может по прежнему работать со своим postcss и ejs. Но да, чтобы настроить скрипты нужен спец по битриксу.

    У меня был большой проект на оптимизации, где я избавлялся от такой сборки и раскидывал все по компонентам. Почему? А как вам css+js - 27 мегабайт? Потом он со временем слез с битрикса, т.к. уже достаточно разросся.

    Какой вывод? За работу со сложной CMS берутся люди, которые не имею необходимых знаний по работе с ней, вот и начинают ругать битрикс. Нечего на зеркало пенять...
    Ответ написан
    5 комментариев
  • Что нужно добавить в SMTP, чтобы пройти антиспам?

    @ZardoZAntony
    программист, сис. админ
    Я тут проверяю
    spamtest.smtp.bz

    у https://www.mail-tester.com/ всё шикарно, а по факту spamtest.smtp.bz показал, что IP timeweb в бане. Смена хостинга решила проблему.

    Без DKIM очень часто в спам попадает.
    DKIM, SPF, DMARC - это то, что нужно настраивать сразу.
    Ответ написан
  • Где и как хранить языковые фразы для javascript в Битрикс?

    @ZardoZAntony
    программист, сис. админ
    Я так делаю в шаблоне:
    <script>
      BX.message({
        'BTN_MESSAGE_BASKET_REDIRECT': '<?=GetMessageJS("BTN_MESSAGE_BASKET_REDIRECT")?>',
        'BTN_MESSAGE_CLOSE_POPUP': '<?=GetMessageJS("BTN_MESSAGE_CLOSE_POPUP")?>',
        'CART_CAPTION_ADD': '<?=GetMessageJS("CART_CAPTION_ADD")?>',
        'CART_ADDED_TEMPLATE': '<?=GetMessageJS("CART_ADDED_TEMPLATE")?>'
      });
    
      console.log(BX.message("CART_CAPTION_ADD"));
    </script>
    Ответ написан
    Комментировать
  • Что значит BX.debug в консоли при добавлении товара в корзину?

    @ZardoZAntony
    программист, сис. админ
    В шаблоне template.php После BX.Sale.BasketComponent.init({....});
    надо добавить

    var basketJSParams = <?=CUtil::PhpToJSObject($arParams)?>
    Ответ написан
    Комментировать
  • Как очистить кэш vue?

    @ZardoZAntony
    программист, сис. админ
    Генерируйте имена js файлов с уникальным параметром.
    Например добавляйте time() /asset/js/main.js?1614661999
    Это наиболее часто используемый подход
    Ответ написан
    Комментировать
  • Можно ли добавить сразу все доступные по сетке принтеры через cmd?

    @ZardoZAntony
    программист, сис. админ
    Нет нельзя этой командой.

    Надо писать свой скрипт на PowerShell, который просканирует всю сеть, найдет все принтеры, а по мере нахождения будет вызывать эту команду.
    Ответ написан
  • Слетает принтер по умолчанию при отключении RDP-сеанса Win Server 2019. Как исправить?

    @ZardoZAntony
    программист, сис. админ
    Такая же проблема.
    Похоже Win Server 2019 не умеет запоминать поставленными по умолчнию расшаренные удаленные принтеры. Хотя с сетевыми у него проблем нет, т.к. он их видит как локальные.

    Думал поможет старое доброе подключение через создание LocalPort. Но у меня принтер так не печатает, выдает ошибку при печати. "Ошибка 87. Неверный параметр."

    В общем костылями сделал то, что нужно:

    1. В планировщике делаем задачу на экспорт ключа реестра с настройками принтера по умолчанию. Сделано так, чтобы не дергались тригеры смены принтера по умолчнию.
    reg export "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" %USERPROFILE%\defprinter.reg /y


    Фильтр событий ручной. Тут я цепляюсь к событию журнала смены принтера по умолчанию. Смена принтера при отключении от сеанса происходит так, как будто ранее ны было выбрано принтеров по умолчанию. За это я и зацепился. OldDefaultPrinter становится равным прочерку, поэтому его исключим, а остальные смены принтеров будем ловить.
    <QueryList>
      <Query Id="0" Path="Microsoft-Windows-PrintService/Admin">
        <Select Path="Microsoft-Windows-PrintService/Admin">*[System[(Level=4 or Level=0) and (EventID=823)] ]
    </Select>
        <Suppress Path="Microsoft-Windows-PrintService/Admin">
    *[UserData[ChangingDefaultPrinter[(OldDefaultPrinter='-')]]]
    </Suppress>
      </Query>
    </QueryList>


    Теперь при смене принтера в домашней папке пользователя лежит reg файл с текущим принтером по умолчанию.

    2. Создаем второю задачу в планировщике для импорта этого файла в реестр при подключении и переподключении пользователя
    reg import %USERPROFILE%\defprinter.reg
    Тригеры 2 штуки. Это событие логина пользователя и событие переподключения к сеансу.
    Журнал
    Microsoft-Windows-TerminalServices-LocalSessionManager/Operational
    События 21 и 25

    Задачи в планировщике от имени группы Пользователи
    Ответ написан
    Комментировать
  • Почему new Date() возвращает неверное время в JavaScript?

    @ZardoZAntony
    программист, сис. админ
    Такая же проблема была в Google Chrome, всю голову сломал. Оказалось разработчики браузера напортачили, т.к. в других браузерах все нормально. В следующем обновлении исправили.
    Ответ написан
    Комментировать
  • Как вручную очистить кэш Laravel?

    @ZardoZAntony
    программист, сис. админ
    Просто через файловый менеджер хостинга удалить все в каталоге storage/framework/cache
    При условии что кеш дефолтовый - файловый
    Ответ написан
    Комментировать
  • Как настроить функционал изменения пароля пользователя в Bitrix?

    @ZardoZAntony
    программист, сис. админ
    define("AUTH", true) первой строкой вызывает дефолтные системные компоненты. Их можно переопределить, если скопировать шаблоны с нужным именем и изменить настройки в главном модуле. У меня правда не вышло их переопределить, поэтому я отказался от использования define("AUTH", true).

    Результаты обработки форм находятся в
    $APPLICATION->arAuthResult

    Эти результаты я и использовал в своих шаблонах компонентов для обработки логики.
    Ответ написан
    Комментировать
  • Bitrix. system.auth.forgotpasswd не выводит никаких сообщений. Как исправить?

    @ZardoZAntony
    программист, сис. админ
    Результаты работы форм лежат здесь.
    $APPLICATION->arAuthResult

    В битриксе через жопу сделана кастомизация дефолтно вызываемых форм авторизации\регистрации\смены пароля.
    Ответ написан
    1 комментарий