Задать вопрос
  • Почему один из компьютеров не пингует другой?

    @Akina
    Есть 2 ПК подключенных к 2 роутерам, каждый к своему. Роутеры соединены между собой.

    Нарисуйте схему - все устройства, все их интерфейсы и соединения, настройки каждого устройства и настройки каждого интерфейса (маршрутизация, NAT и т.п.). Так станет понятнее, где и что должно быть.
    Написано
  • Как в mysql сделать regexp_replace?

    @Akina
    Vitsliputsli, ну закиньте на багтрак...
    Написано
  • Как в mysql сделать regexp_replace?

    @Akina
    Vitsliputsli, Начало и конец строки - это не подстроки, а маркеры. Неудивительно, что LIKE их находит. Для любого пустого объекта BOF=EOF. Но вот заменять можно только подобъект, возможно, привязанный к маркеру, но никак не сам маркер.
    Написано
  • Объединение множества подсетей в одну сеть?

    @Akina
    Коммуникационное оборудование, надеюсь, управляемое? Тогда раскидать всё - компы+серверы, телефония, видеонаблюдение, админка,- по отдельным виланам.
    Написано
  • Как в mysql сделать regexp_replace?

    @Akina
    Мне сдается в mysql виноват 4 параметр pos, он как бы указывает заменять с первого символа, а строка пустая.

    Нет. Просто у пустой строки нет ни начала, ни конца - с точки зрения MySQL.

    https://dbfiddle.uk/UBlE6VhT
    Написано
  • Как вставить дату ячейку с помощью ПСТР()?

    @Akina
    Ячейка В - это дата, но когда получаю результат в ячейке, то туда вставляется число, а не дата.

    Не-а. В ячейке - число. Которое при выводе ФОРМАТИРУЕТСЯ как дата.

    Так что и в формуле форматируйте: ТЕКСТ(A1;"ДД.ММ.ГГГГ")
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Vitsliputsli,
    Если мы не подразумеваем получение рутового доступа взломщиком, зачем вообще шифрование?

    Я понятия не имею, это к автору вопрос. Да и, признаться, лень мне за кого-то думать. Ну вот придумал он так - пусть его. Потом переделает, если что...
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Vitsliputsli,
    Если пользователь это машина деплоя, которая накатывает миграции, то нужно

    Машина деплоя - это хоть и не рут, но всё же администратор, а не конечный пользователь.

    Да, стандартная защита для ключа, это спасет если ключ дискредитирован. Но так как он по прежнему присутствует гдето в БД, то дискредитация СУБД приводит к доступу ко всем данным системы.
    Т.е. привилегированный доступ к любой из 2х машин (СУБД или к клиенту) даст доступ ко всем данным, в отличие от системы где шифрование в сервисе клиенте СУБД, там доступ к СУБД ничего не даст.
    Я просто не вижу ситуации когда следует предпочесть эту схему вместо схемы с шифрованием вне СУБД.

    Ключ, даже дискредитированный, нигде в БД не присутствует. А доступ к данным системы при дискредитации ключа возможен только в рамках прав, которые предоставляются по этому ключу. А раз это пользовательский ключ, то права эти явно не должны быть достаточны для получения доступа ко всем данным. тем более для выгрузки в пакетном режиме...

    А так-то обсуждать-то можно любые ситуации, вплоть до получения полного физического доступа.
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Stalk007, не, положить в NEW сразу всю запись - не получится. Придётся получить массив ключей из полученного JSON, потом для каждого отдельного ключа в цикле формировать соответствующую строку SET-запроса и получать/модифицировать одно поле в NEW динамическим SQL.

    Пробывал jsonb_to_record но new после нее остается пустым

    Не надо голых слов, выкладывайте ссылку на соотв. fiddle с неудачной попыткой.
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Vitsliputsli,
    В текущей схеме, деплой машина (вернее ее роль) не сможет записать такой триггер (вернее ее процедуру), т.е. создание всех таких секретных объектов будет осуществляться суперпользователем вручную? Или нет?

    Всё верно. Пользователю не предоставляется право создания функций и просмотра из кода - да вообще пользователю право на DDL незачем. Код функции создаётся от имени супера или иного привилегированного пользователя, при необходимости даже с опцией SECURITY DEFINER, что может обеспечить коду функции доступ к данным, которые напрямую недоступны пользователю (например, запись в таблицу аудита или доступ к персональным данным).

    но все это надо ведь както расшифровывать. Значит клиент будет запрашивать расшифровку и передавать ключ? А если клиент знает ключ, значит то, что мы усиленно оберегали выше бессмысленно и ключ все равно будет лежать гдето на 3ей машине. А раз так, то шифрование на клиенте БД выгоднее, т.к. даже дискредитация данных суперпользователя БД не даст доступа к данным, нет проблем с деплоем любых изменений и шифрование будет проходить в приложении, которое скорее всего проще масштабировать.

    Это не так. Даже если присутствует ключ шифрования и расшифровки, доступный пользователю, всё равно существует компонента, неизвестная и недоступная пользователю и хранимая на сервере, которая используется в процессе шифрования/дешифровки данных (модификация переданного ключа, соль и пр.). Соответственно даже знание пароля и получение зашифрованных данных - недостаточны для дешифрования.
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Vitsliputsli, чтобы получить код триггера, надо немножко больше прав, чем доступ к данным.
    Написано
  • Устанавливать ли в php таймзону пользователя?

    @Akina
    Михаил,
    А DEFAULT UTC_TIMESTAMP не работает.

    Да всё прекрасно работает! Просто надо помнить, что CURRENT_TIMESTAMP - это алиас функции NOW(), и соответственно обрабатываемый, тогда как алиаса UTC_TIMESTAMP не существует, а существует функция UTC_TIMESTAMP(), которую следует использовать правильным образом (поищите в RM, там синтаксис выражений в значении по умолчанию описывается явно и подробно).

    CREATE TABLE test (
      id INT,
      dt DATETIME DEFAULT CURRENT_TIMESTAMP,
      udt DATETIME DEFAULT (UTC_TIMESTAMP())
    );
    SET SESSION time_zone = '+00:00';
    INSERT INTO test (id) VALUES (1);
    SET SESSION time_zone = '+06:00';
    INSERT INTO test (id) VALUES (2);
    SELECT * FROM test;

    id	dt			udt
    1	2025-02-03 08:23:55	2025-02-03 08:23:55
    2	2025-02-03 14:23:55	2025-02-03 08:23:55

    https://dbfiddle.uk/CQpSURRT
    Написано
  • Устанавливать ли в php таймзону пользователя?

    @Akina
    Михаил, а зачем весь сервер-то перестраивать? когда достаточно простого
    set session time_zone = '+00:00';
    Написано
  • Устанавливать ли в php таймзону пользователя?

    @Akina
    szQocks,
    а неделя же это просто 7 * 24 * 60 * 60 * 1000

    Понятно, что я говорю не о тривиальных случаях... скажем, нужно среднесуточное значение, и считать за полнедели в конце месяца отдельно и вторую половину этой недели в начале следующего месяца тоже отдельно? Уже всё не так шоколадно.
    Написано
  • Устанавливать ли в php таймзону пользователя?

    @Akina
    Я работаю с MySQL и использую исключительно DATETIME, записывая туда значения, приведённые к UTC. Только клиент знает, какая у него на самом деле зона и текущее смещение, и может правильно преобразовывать UTC в локальное время и обратно. К сожалению, иногда при этом на клиенте приходится преобразовывать значение в строковый параметр запроса, ибо всякие фреймворки да коннекторы запросто могут взять и влезть со своим преобразованием...

    если использовать не datetime / timestamp а просто big int, то смещения уже не будет существовать

    Ага... но опять же - в BIGINT текущее локальное время и обратно преобразует кто? клиент... тот, кто чётко знает свою зону.

    Но вот с BIGINT есть проблемы... попробуй прибавить к записанному значению месяц - ой, какой тебя ждёт геморрой! А с DATETIME проблема решается одним вызовом встроенной функции. Или сгруппировать и подсчитать итоги понедельно...
    Написано
  • Устанавливать ли в php таймзону пользователя?

    @Akina
    А когда хранят в базе что-то подобное 2025-01-31t12:55:43, то это какой-то мрак.

    Если в БД дата-время хранится именно в показанной форме, т.е. в поле строкового типа, то и в самом деле создателя такого бреда есть смысл подозревать в наличии альтернативного мышления.

    Но если в БД дата-время хранится в поле типа DATETIME / TIMESTAMP, то написанное вами - это строковое представление значения, сделанное вашим кодом (или используемым клиентом), и вам необходимо уделить время понимаю разницы между хранением и отображением.

    Я время, в базе, хранил как метку в секундах, да и до сих пор так делаю. А если надо в человеко-понятный уровень превратить, так в PHP есть date(), и в js new Date()

    Однако зоны времени, как ни крути, существуют... для какой зоны вы сохраняли значение? где и когда приводили его к локальному времени клиента и наоборот?

    Я уж не говорю о том, что вы при таком хранении однозначно теряете встроенные средства СУБД для обработки временнЫх данных, и, как следствие, производительность.
    Написано
  • Почему при установлении явного разрешенного ip в postgresql.conf перестает работать подключение?

    @Akina
    f0kusn1k,
    По дефолту локалхост - значит он слушает с локалхоста? Что-то какая-то странная опция получается.

    Что тут странного? Просто сервер слушает только локальные обращения, от запущенных в том же инстансе ОС приложений, и игнорирует обращения по сети с других компов.
    Написано
  • Подружится ли Power Line Converter Zyxel PLA400 EE и TPLink AV 200?

    @Akina
    ну я пойду от обратного: первым подрублю зухель, а у туплинков есть кнопка согласования. Может и заведется

    Попробуете - отпишитесь о результате.
    Написано
  • Подружится ли Power Line Converter Zyxel PLA400 EE и TPLink AV 200?

    @Akina
    ТПЛинки по идее должны завестись, если розетки обеих точек сидят на одной фазе. А вот что зюхель с ними сможет договориться, далеко не факт.
    Написано
  • Как подключить одно рабочее место в сеть?

    @Akina
    Ну так затолкай ему в стартап-скрипт доменной учётки внесение соотв. корректировок в таблицу маршрутизации, и всё.
    Написано