Задать вопрос
  • Как в PostgreSQL организовать синхронизацию данных между геораспределенными копиями?

    opium
    @opium
    Просто люблю качественно работать
    Если пишешь только в одну точку, а Сингапур readonly — async streaming replication, самый простой вариант. Multi-master в постгресе из коробки нет нормального: logical replication конфликты не резолвит автоматом и может встать. Из реального есть EDB PGD (бывший BDR), но платное. Для игрового бекенда имхо проще шардить по регионам на уровне приложения, а общие данные типа лидербордов гонять через очередь.
    Ответ написан
    7 комментариев
  • Как определить, что фронтенд-приложение открыто внутри Telegram Mini App?

    opium
    @opium
    Просто люблю качественно работать
    initData пустой потому, что бот открывает ссылку через обычную кнопку с типом url, а не web_app. Переключи на web_app (или MenuButtonWebApp, или deep link с startapp) — тогда и initData, и platform начнут приходить корректно. Для детекта среды без initData проверяй launch-параметры в location.hash — при запуске как Mini App туда попадают tgWebAppVersion и tgWebAppPlatform.
    Ответ написан
    1 комментарий
  • Что за артефакты в гипервизоре?

    Проблема видимо связана с установкой не поддерживаемого корректно видеорежима загрузчиком GRUB. Нужно добавить или модифицировать существущие директивы в файле /etc/default/grub, приведя их к виду
    GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nomodeset"
    GRUB_TERMINAL=console

    После чего выполнить команду update-grub и перезагрузиться.
    Ответ написан
    1 комментарий
  • Что лучше зоопарк или VLM для извлечения данных из ЖД накладных (грязные сканы, печати, рукопись)?

    @Drno
    Заставить контрАгентов присылать нормальные документы.
    Либо нанять человека который будет вручную это разгребать. судя по тому что даже вручную это сложно, никакая ИИ Вам не поможет
    Ответ написан
    Комментировать
  • Как задать цвет рамки типовой кнопки?

    @alexalexes
    Почитайте про специфичность селекторов css. Вы же в курсе, что каждый селектор имеет очки специфичности?
    Если селекторы описаны одинаково, то они будут иметь одинаковые очки специфичности, и перекрытие свойств будет происходить по порядку следования селекторов в файле css (или в порядке подключения css в html). Вероятно, у вас такая ситуация:
    .button-a
    {
      border-color: #0000ff;
    }
    .button-b
    {
      border-color: #00ff00;
    }
    /*Свойства этого селектора переопределяют вышестоящие селекторы, так как они все имеют одни и те же веса специфичности */
    .buttons
    {
      border-color: #00ffff;
    }

    Чтобы решить вашу проблему, нужно либо строго соблюдать порядок описания селекторов:
    .buttons
    {
      border-color: #00ffff;
    }
    .button-a
    {
      border-color: #0000ff;
    }
    .button-b
    {
      border-color: #00ff00;
    }

    Такой подход обойдется малыми усилиями и не нужно отходить от какой-нибудь принятой методологии именования классов, например, БЭМ, которая не позволяет усложнять селекторы.
    Но если вы не следуете методологии, то можно наращивать специфичность селекторам, например, так:
    .buttons.button-a
    {
      border-color: #0000ff;
    }
    .buttons.button-b
    {
      border-color: #00ff00;
    }
    /* Этот селектор не может перебить свойства вышестоящих селекторов, так как у него ниже вес специфичности */
    .buttons
    {
      border-color: #00ffff;
    }

    В таком виде определения элементов, содержащих button-a и button-b можно писать в любом порядке, так как у них выше специфичность по сравнению с селектором, который содержит только класс buttons.
    Ответ написан
    1 комментарий
  • Ошибка в коде, что говорит система не понимаю?

    @Dementor
    программист, архитектор, аналитик
    Или в менеджере справочника "Машины" не реализована функция "ЦенаМашин", или эта функция не помечена как экспортная.
    Ответ написан
    1 комментарий
  • Что установило приложение на планшет? Как выяснить?

    Serax
    @Serax
    Бессистемный администратор
    Скорее всего, это делает самсунговское приложение "Закон".
    https://habr.com/ru/news/938612/
    Ответ написан
    Комментировать
  • Как найти значение в XML?

    @rPman
    Используешь xpath, это мощнейший инструмент работы с xml, считай regexp но в мире xml, так и пиши сразу
    $t=$xml->xpath("//prices/default/price[currency='{$currency}']/price");
    $price=(string)$t[0]; // обработать ошибку если count($t) будет 0


    {$currency} это наименование валюты в currency, можно прямо константой написать или в моем примере брать из переменной
    Ответ написан
    5 комментариев
  • Что это может быть за устройство?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Это транспондер, для безостановочного проезда через пункты взимания платы на платных дорогах. Вот тут разобрали аналогичное устройство https://www.drive2.ru/b/708322983873087589/
    Ответ написан
    Комментировать
  • Что входит в отладку скрипта на PHP?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    В отладку входит два основных механизма:
    1. Включение полного отображения ошибок (или логирования, если на боевом сервере)
    2. Пошаговая трассировка с контролем состояния переменных (с использованием IDE или вручную через var_dump/die).

    В вашем случае, очевидно что не был выполнен пункт №1. Какой бы ни была причина проблем, РНР всегда выдаст ошибку. Так что в вашем случае надо было просто убедиться, что error_reporting=E_ALL, а display_errpos=1

    А вот нижеследующее утверждение не имеет смысла
    PHP данную ошибку не показывал, т.к. не использовалась функция проверки записи в директорию is_writable().

    РНР не нужны никакие функции, чтобы сообщить об ошибке. А is_writable() обычно используется как раз наоборот, чтобы подавить ошибку и дальше работать как ни в чём не бывало. Ну или в лучшем случае выбросить какую-нибудь бессмысленную ошибку типа "Не могу записать в файл", не говорящую ничего о реальной причине проблемы.
    Ответ написан
    4 комментария
  • Будут ли вызваны в PHP 8.4 хуки свойств при создании объекта через PDO fetchObject?

    Vamp
    @Vamp
    1. Создаётся объект без вызова конструктора.
    2. В объекте ищется поле с именем, совпадающим с именем колонки.
      1. Если поле найдено, вызывается хук set. Даже если у поля область видимости private.
      2. Если поле найдено, а хука нет, в поле просто сетается значение. Даже если у поля область видимости private.
      3. Если не найдено, вызывается магический метод __set
      4. Если __set отсутствует, создаётся динамическое поле с именем колонки.

    3. Вызывается конструктор.


    PDO::FETCH_PROPS_LATE не работает совместно с методом fetchObject. Конструктор по-прежнему вызывается только в конце. Чтобы переставить вызов конструктора наверх, нужно вызывать методы setFetchMode и fetch:
    $stmt = $pdo->query('SELECT * FROM tbl_name');
    $stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, $class, $constructorArgs);
    $obj = $stmt->fetch();
    Ответ написан
    Комментировать
  • Будут ли вызваны в PHP 8.4 хуки свойств при создании объекта через PDO fetchObject?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Проверка показала, что будут:
    class Tmp
    {
        public string $name
        {
            set (string $name) {
                $this->name = strtoupper($name);
            }
        }
    }
    
    var_dump($pdo->query("SELECT 'lowercase' as name")->fetchObject(Tmp::class));
    
    object(Tmp)#550 (1) { ["name"]=> string(9) "LOWERCASE" }
    Ответ написан
    2 комментария
  • MySQL JSON_OBJECT Приводит значение к строковому типу, возможно ли это как то обойти?

    @SanekIrk Автор вопроса
    Смог добиться нужного результата путём оборачивания строки (или любой другой не json тип) в кавычки, а потом конвертируя результат в json. Теперь весь `CASE WHEN` стал возвращать json:
    SELECT
        JSON_OBJECT(
            1,
            (
                CASE 'one'
                    WHEN 'one' THEN JSON_ARRAY(1, 2)
                    WHEN 'two' THEN CONVERT(JSON_QUOTE('1'), JSON)
                END
            )
        );

    По скорости выполнения запроса сильных просадок не заметил.
    Ответ написан
    Комментировать
  • Не удается подключить сервер к консоли администрирования 1С. В чем может быть проблема?

    hint000
    @hint000
    у админа три руки
    1С и консоль администрирования 1С на данном сервере не установлены.
    А вы пытаетесь подключиться именно к серверу 1С, который и не установлен.
    Потребовалось подключить базы, расположенные на другом сервере под управлением Win 2019 с SQL 2019 (№2).
    У вас два варианта.
    (1) Таки установить 1С сервер на Win 2019. Но он потребует лицензию (именно для сервера 1С). Но работать будет быстро.
    (2) Добавить информационную базу 1С на Win 2008 R2, указав в параметрах имя или адрес Win 2019 и имя БД. Поскольку сервер 1С и сервер SQL разнесены на разные хосты, то работать будет несколько медленнее. Зато не потребуется дополнительной лицензии на сервер 1С.

    Клиент подключается именно к серверу 1С, т.е. в первом случае к Win 2019, а во втором к Win 2008 R2, и клиенту не важно (он не знает) где на самом деле находится БД в SQL.

    P.S. При любом из двух вариантов вам не требуется явно (руками) указывать порт, ПО само знает, какие порты используются по умолчанию. Такое прописывание руками только ещё больше запутывает вас насчёт того, к чему же на самом деле вы пытаетесь подключиться.
    Ответ написан
    1 комментарий
  • Не получается сделать REDIRECT порта для всех IP кроме определнных. Что я не понимаю?

    @dronmaxman
    VoIP Administrator
    # Разрешаем "исключения" без редиректа
    iptables -t nat -A PREROUTING -p tcp -s 109.194.11.11 --dport 443 -j ACCEPT
    iptables -t nat -A PREROUTING -p tcp -s 178.218.22.22 --dport 443 -j ACCEPT
    
    # Всё остальное перенаправляем на 4433
    iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 4433
    Ответ написан
    Комментировать
  • Как сделать экранирование символов в Python для SQL запроса?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Не нужно ничего экранировать. Нужно использовать параметризованные запросы с плейсхолдерами.
    Ответ написан
    6 комментариев
  • После переезда на новый хостинг перестал работать сайт?

    Adamos
    @Adamos
    Старый сайт вдруг сломался при переезде с хостинга на свой сервер?
    Скорее всего - настроенный по дефолту php.ini с выключенным short_open_tag.
    Ответ написан
    3 комментария
  • Как реализовать библиотеку классов на JavaScript?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Правильнее так:

    Type.js
    class Type
    {
        isArray() {}
    }
    
    export default Type

    Dialog.js
    class Dialog 
    {
        show() {}
    }
    
    export default Dialog

    CRM.js
    import Type from './Type.js'
    import Dialog from './Dialog.js'
    
    export { Type, Dialog }

    И далее исходный код скармливается сборщикам типа babel, gulp, rollup и прочим. И вот то, что вы привели - результат работы с кодом этих сборщиков для совместимости со старыми браузерами. Для ноды само собой сборщики не используются - там они не нужны. Простой пример реализации библиотеки для ноды/браузера с использованием сборщиков rollup и babel: @voidvolker/enum.
    Ответ написан
    1 комментарий
  • Как открыть скомпилированный Vue проект локально?

    dlnsk
    @dlnsk Автор вопроса
    ПК Партнер 01.01 -> ПК Поиск -> IBM PC
    Решил внедрением всего и вся в итоговый html с помощью:
    https://www.npmjs.com/package/vite-plugin-singlefile
    Ответ написан
    Комментировать
  • Почему нет доступа к exposed параметру из скрипта?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Компонент VImg после монтирования запускает свой асинхронный процесс подгрузки изображения (событие loadstart). По завершению загрузки выдаётся событие load, при ошибке событие error. После load становятся доступными параметры изображения (naturalWidth, naturalHeight, currentSrc).
    Привязывайтесь к этим событиям, чтобы точно получить нужные данные.
    Ответ написан
    1 комментарий