Задать вопрос
  • Как получить 3 массива из одного запроса?

    @Akina
    Сетевой и системный админ, SQL-программист.
    На стороне MySQL (при необходимости - скорректировать @@group_concat_max_len):
    SELECT status, GROUP_CONCAT(user) userlist
    FROM user_status
    GROUP BY status

    На стороне PHP (синтаксиса не знаю, схематично):
    if $row['status'] = 1 then $user_status_1_array=split_to_array($row['userlist'])
    Ответ написан
  • Почему не работает trunk / vlan?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Как по мне, существование native VLAN само по себе нонсенс. А делать его случайным - нонсенс вдвойне. Я лично убеждён, что при наличии в возможностях устройства такой фичи как native VLAN он должен быть 1) настроен статически 2) настроен Forbidden на всех портах.

    Почему без установки управляющего влана в режиме native связи нет?

    Ну как раз потому, что он и выбран случайно. И что это "случайно" вдруг попадёт точно в значение 50, шанс невелик.
    Ответ написан
    7 комментариев
  • Правильно ли объяснил, что такое "маршрутизатор" и что такое "Wi-Fi-роутер"?

    @Akina
    Сетевой и системный админ, SQL-программист.
    При использовании в качестве технических терминов слова "маршрутизатор" и "роутер" - это абсолютные синонимы. Безальтернативно.

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

    Разница между "маршрутизатором" и "WiFi-роутером" только одна - второй имеет как минимум один беспроводной WiFi интерфейс (может, и больше, но один обязательно), в то время как первый может иметь или не иметь таковых. Ну то есть WiFi-роутер - это роутер (маршрутизатор) с WiFi (как минимум одним WiFi интерфейсом).

    Всё, что написано про "выбор наименее загруженного маршрута" - это какой-то бред. Всё определяется тем, какие именно возможности заложены в программное обеспечение либо прошивку маршрутизатора, какие протоколы поддерживаются.

    Термин "шлюз" применительно к сетям имеет два значения. Программно - это адрес, через который отправляются пакеты информации для достижения узлов, которые не достижимы непосредственно. Аппаратно - это пограничное устройство между двумя сегментами сети, которое как минимум маршрутизирует, но как правило ещё и дополнительно обрабатывает (чаще всего - фильтрует и/или шифрует) передаваемый трафик. Ну то есть это по сути маршрутизатор, как правило обременённый дополнительными (чаще всего - защитными) функциями.
    Ответ написан
    7 комментариев
  • Как проверить исправность сетевого свитча/коммутатора?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Раньше не проверял скорость Upload, не обращал внимания, не запомнил, а тут скорость Upload ниже 100 Мбит, да ещё и очень разные результаты в разных местах

    Это норма?

    Как правило да. Даже если тестируешь линк с провайдерским сервером, что на третьем хопе.

    Как ещё убедиться, что эффект НЕ из-за свитча или не из-за кабеля?

    Если свитч управляемый - смотреть показатели мониторинга и логи.
    Если неуправляемый - ну разве только гонять р2р трафик меж двух и более компов на заведомо исправных патчах для каждой пары портов. До перегрузки коммутирующей матрицы, если получится. Но всё это вообще без гарантии.

    обжал сетевые кабели повторно, отвалы ВРОДЕ исчезли

    Если ещё не выбросил отрубленные джеки, осмотри их очень внимательно (с лупой) на предмет окисления. Также осмотри ламели коммутатора на окисление и изменение геометрии.
    А ещё неплохо бы вскрыть и прочистить коммутатор от пыли. В идеале - отпоить спиртом.
    Ответ написан
    1 комментарий
  • Выбор коммутатора для небольшой организации - L2 или L3?

    @Akina
    Сетевой и системный админ, SQL-программист.
    По-моему, достаточно установить одно приличное L3-устройство, основной задаче которого будет
    По двум входящим каналам интернета - сделать либо резервирование, либо агрегацию/балансировку
    Располагаясь в центре, оно без проблем обеспечит и другие потребности - тот же доступ к файлопомойке, например.

    Всё остальное вообще не требует интеллектуального управления, обычные L2-коммутаторы (даже плюс не требуется) сделают всё необходимое.
    Ответ написан
    1 комментарий
  • Почему время в mysql опережает на пару секунд?

    @Akina
    Сетевой и системный админ, SQL-программист.
    MySQL не имеет источников точного времени иных, нежели операционная система.

    Начните с простого - перезапустите MySQL, а затем сверьте время в OS и в MySQL. Убеждён, что они совпадут. Затем - мониторьте разницу времени по мнению OS и MySQL в течение достаточно длительного периода времени. Если MySQL не обращается к OS за текущим временем, а считает время самостоятельно, то при достаточно длительном мониторинге это станет заметно. Но всё это обязательно в рамках одного инстанса OS и напрямую, а не издалека, по сети, да через прокладки в виде каких-нибудь веб- или скриптовых серверов.

    Конечно, это можно узнать и просто анализом исходного кода, но это неспортивно...

    К слову - SYSDATE() гарантированно получает аппаратное время системы.

    смотрел в открую консоль одновременно и на секунды на этом сайте, и как только секунда изменилась ( получается в самом начале ) я нажал на enter что бы выполнить команду, и разница была в 2 секунды

    Ага... а то, что от изменения времени в системе и до отображения его на экране могло и больше, чем 2 секунды, пройти - вы не учитываете, да?

    Вообще MySQL не имеет средств прямого обращения к функциям OS или запуску внешних программ. Но если очень хочется - есть готовые библиотеки с такими возможностями, или можно свою состряпать. И тогда увидеть, есть ли разница на самом деле, и если да, то какова она.

    В самом крайнем случае - сбрось результат функции в файл, и сравни значение в файле и время создания файла. Правда, емнип, точность времен операций с файлами в ФС - как раз 2 секунды и есть.
    Ответ написан
    2 комментария
  • Способ создания отдельной сети управления для всех устройств. Сервера, виртуальные машины, маршрутизаторы, коммутаторы. Как это можно сделать?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Наверное, надо всё же начинать с целей и объективки. И уже под конкретные задачи верстать решение.

    Принципиально сперва надо будет решить, требуется ли для решения выделенная физика. Например, если речь идёт чисто об изоляции управления, то она скорее всего не нужна, хотя всё зависит от требуемого уровня защиты, разделения доступа, категорирования и требований по/для сертификации. А вот если речь об изоляции сети для резервного копирования, миграции, репликации - тут выделенная физика, скорее всего, будет жизненной необходимостью.

    И уже после надо думать о том, что именно делить на L2, что на L3, а что на L3+L2.
    Ответ написан
    Комментировать
  • Postgres выдаёт unknown для типа char - в чём ошибка?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Литерал '2' необязательно имеет тип CHAR. Он ведь имеет полное право быть, к примеру, BYTEA, верно?

    Используйте явное указание типа в вызове:
    select testboris3(2, now(), B'0', 789, '2'::CHAR, 2);


    Если ставлю предпоследний параметр как просто 2, без кавычек, то он уже определяет тип корректно.

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

    @Akina
    Сетевой и системный админ, SQL-программист.
    И есть windows server (IP 192.168.211.81 маска 255.255.248.0).
    Есть еще в сети windows server 2019 (IP 192.168.211.1 маска 255.255.0.0)

    Вот та проблема, которой нужно уделять всё своё внимание. В самую первую очередь.

    Можно ли как-то настроить что бы расшареный каталог был виден без смены маски подсети ?

    Настроить кого? Первый сервер? второй? любой узел сети (какой, кстати?)...

    Самое простое - добавить ещё один адрес на интерфейс, из подсети компа с шарой, и не городить огород.
    Ответ написан
    3 комментария
  • Как максимально обезопасить коммутатор?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Всё описанное вполне себе выполняется на уровне L2 - так что коммутатор должен быть управляемым. MAC-based filtering поддерживают практически все управляемые коммутаторы (правда, некоторые - только в форме MAC-based VLAN), а traffic segmentation - ну подавляющее большинство. Ну и ещё не забыть побороться с MAC flood, что тоже умеют практически все управляемые коммутаторы,

    PS. И да - если у злоумышленника есть физический доступ к устройству, никакие технологии вам не помогут.
    Ответ написан
    4 комментария
  • Работает ли точка доступа как коммутатор?

    @Akina
    Сетевой и системный админ, SQL-программист.
    можно ли сделать так, чтобы он раздавал интернет от маршрутизатора, а доступа к локальной сети не давал?

    Только в случае, если роутер поддерживает режим изоляции клиентских портов.

    Обычно для роутеров с выделенным WAN в беспроводном сегменте этот режим не только присутствует, но и включен по умолчанию. А вот его наличие в проводном сегменте и между проводным и беспроводным сегментами - надо проверять.

    Что же до роутеров, не имеющих выделенного WAN, то такие, как правило, имеют продвинутые средства настройки, и форвардинг между клиентскими портами запрещается соответствующим правилом в файрволе.
    Ответ написан
    Комментировать
  • Как в Excel 2016 быстро, по всем ячейкам дописать нужные строки?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Выделить нужный диапазон.
    <Alt-F11>
    <Ctrl-G>
    for each onecell in selection : onecell.value = "http://0.0.0.0/Estimation/Ticket?ticket=" & onecell.value & "&branch=it" : next<Enter>
    Ответ написан
    1 комментарий
  • Как сделать поиск определенного значение в строке отобранной SELECT * FROM?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Что-нибудь типа
    SELECT *
    FROM archiv,
         json_each(row_to_json(archiv))
    WHERE json_each.value :: text LIKE '%10%'
      AND json_each.key <> 'id'
      /* AND условия по таблице archiv */;

    fiddle
    Ответ написан
  • Как получить данные и обновить записи в таблицах-источниках?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Насколько плохо будет запихнуть апдейты и инсерты в cte?

    Это совершенно нормальная практика в Постгрессе. Более того, она предпочтительнее любой другой техники с кучей запросов и транзакцией, потому как гарантирует полную согласованность всех изменений и минимизирует количество интерференций и блокировок. Ну и не злоупотребляйте отложенными (DEFERRED) проверками - они, конечно, ускоряют, но будет обидно сделать всё, и лишь при финальном контроле свалиться по ошибке проверки.

    Хотя именно для показанного шаблона (один UPDATE, и нужно получить обновлённые записи) я не понимаю, почему просто не сделать финальный апдейт внешним запросом с использованием кляузы RETURNING. Ваш финальный select * from result смотрится совершенно бессмысленной нашлёпкой.
    Ответ написан
  • Почему INSERT присваивает только один символ вместо полного значения?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Ну, наверное, потому, что тип поля CHAR(1) - то есть более одного символа в поле тупо не помещается.
    Ответ написан
    Комментировать
  • Как сделать уменьшение склада в СУБД безопасными правильным?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Скорее этот вопрос задан с целю, понять как правильно делать подобные простые счетчики.

    Правильно - это выполнение операции в одном запросе. В вашем случае это будет

    UPDATE warehouse 
    SET balance = balance - 1 
    WHERE product_id = 5
      AND balance > 0;

    Такая одиночная форма запроса, во-первых, гарантирует, что при обновлении будет использовано строго то значение, которое прочитано (т.е. никто не влезет между чтением старого значения и записью нового), во-вторых, не даст "уйти в минус".

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

    Можно (хоть и нежелательно) это делать и "на ручной тяге". Например, если вы хотите всё же использовать трёхзапросную форму, как в вопросе, то (схематично) будет что-то вроде

    SET @balance = (SELECT balance FROM warehouse WHERE product_id = 5);
    SET @new_balance = @balance - 1;
    UPDATE warehouse 
        SET balance = @new_balance  
        WHERE product_id = 5
          AND balance = @balance;

    Обратите внимание на дополнительное условие в последнем запросе. Оно проверяет, что с момента запроса старого значения и до попытки записать новое никто не внёс изменений в данные. Если же кто-то подсуетился и успел, то последний запрос обновит ноль записей, что и будет маркером, что операция корректировки баланса неудачна и надо повторить попытку (впрочем, ноль получится и в случае, если кто-то удалит запись для этого продукта - тогда никакие повторения не помогут).
    Ответ написан
    1 комментарий
  • Как организовать доступ к рабочему компьютеру удалённо?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Время от времени требуется работать из дома

    Настоятельно рекомендую решать эту проблему административным путём. Потому как случись что со взломом - ни в жисть не докажешь, что это не через созданную тобой дырку. И ответить, причём даже без вины, можно на годы и миллионы. Особенно будет обидно, если кто-то твоим косяком сможет прикрыть свою задницу, а ты потом будешь "нутром чую, а доказать не могу ©".

    Докажи/обоснуй руководству, что такая удалённая работа НЕОБХОДИМА. Не тебе - организации. Если сможешь - то админы сами тебе всё сделают. А если не сможешь - то оно никому не нужно. И тебе в том числе. В том числе по причинам (см. выше).
    Ответ написан
    Комментировать
  • Как выбирается маршрут в сети?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Алгоритм простой. Сначала из всех имеющихся маршрутов, подсеть которых включает узел назначения, выбирается самый "узкий". Если таковых несколько, выбирается тот, у которого минимальна метрика. Именно в шлюз этого маршрута и отправляется пакет.
    Тип интерфейса при этом не имеет вовсе никакого значения.
    Ответ написан
    2 комментария
  • Как работает белый список интернета?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Под отключением мобильного интернета понимается не то, что перестанет работать канал цифровой связи, а то, что любые попытки соединиться с адресом, не входящем в белый список, будут безусловно дропаться.
    Обойти их, в т.ч. через VPN, не получится. По той простой причине, что твой VPN-сервер не входит в белый список, и ты не сможешь соединиться с ним и установить канал.
    Ответ написан
    7 комментариев
  • Как перенести Windows Server на другое железо?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Во-первых, начните с ПОЛНОГО бэкапа сервера на старой машине, причём при загрузке с ДРУГОЙ операционной системы. Оптимальный вариант - вообще сделать зеркальную копию накопителя. Или накопителей, если их для загрузки используется несколько.

    Затем запустите сервер и выполните принудительную установку драйверов поддержки платформы и дисковых адаптеров для нового железа. Неважно, что железа нет - драйверы в системе должны быть.

    Далее - отключите всё, что стартует НЕ с этого накопителя. Службы, приложения автозагрузки, файлы подкачки и прочее. На всех сетевых интерфейсах уберите статическое назначение адресов, ещё лучше - дополнительно отключите их в центре управления сетями. После отключения проверьте, что сервер нормально стартует при физически отключенных всех остальных накопителях и сетевых интерфейсах.

    Теперь перенесите накопитель на новое железо и запустите там. Сперва в безопасном режиме. Если обнаружится недостаток каких-то базовых драйверов, из тех, что грузятся в safe mode - доустановить. После этого грузиться в обычном режиме и убирать все проблемы из диспетчера оборудования.

    Финально настройте все новые сетевые интерфейсы, подключите остальные накопители, раздайте соответствующие буквы и включите всё ранее отключенное из программного. Убедитесь, что сервер стартует нормально и его функционал работает в полном объёме.

    Конечно, бывают случаи, когда задача вообще не решается. Скажем, жёсткая привязка к оборудованию (привет, один-эс). Или радикальная смена платформы - тут иногда помогает переустановка сервера поверх с сохранением. Но обычно если начались проблемы, то их видимое решение на самом деле просто загоняет их вглубь, а когда и чем аукнется, неизвестно.
    Ответ написан
    1 комментарий