• Как заблокировать лишний шлюз?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Нужно изменить режим работы Роутера-2. Он должен работать в режиме не роутера, а точки доступа, т.е. просто служить конвертором интерфейса. Ну и, само собой, DHCP на нём отключить.
    Тогда камера будет цепляться за него и через него слать запрос адреса на Роутер-1. Ну вернее слать запрос в проводной интерфейс, а там Роутер-1 единственный DHCP.
    У ТПЛинка на сайте даже видео есть "Как превратить роутер в точку доступа?".
    Ответ написан
    1 комментарий
  • Что такое кластерный индекс в mysql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Кластерный индекс... это на самом деле понятие крайне виртуальное.

    Что такое обычный некластерный индекс? берём выражение индекса, считаем его значение для каждой записи, сортируем и пишем на диск. Получаем отдельную структуру, в которой выражение индекса сортировано. Когда потребуется искать заданное значение этого выражения, мы вместо просмотра от записи к записи сразу половинным делением быстренько найдём нужное значение, возьмём из него уникальный идентификатор записи, и обратимся за записью. Если в таблице 1000 записей, то для поиска заданного значения без индекса нам в среднем пришлось бы просмотреть 500 записей, а с индексом - всего 10.

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

    В MySQL (точнее, в используемом по умолчанию движке InnoDB) первичный индекс, во-первых, существует ВСЕГДА, во-вторых, определяется так (в статье, на которую дали ссылку, имеются неточности в пункте 2):
    1. Если первичный ключ задан явно, то его выражение является также и выражением кластерного индекса. Или иначе - первичный ключ и есть кластерный индекс.
    2. Если первичный ключ явно не задан, но в таблице имеется индекс, отвечающий всем следующим требованиям:
      • является уникальным
      • не является функциональным, в т.ч. не использует в выражении вычисляемые поля
      • не использует в выражении поля, которые определены как допускающие значение NULL

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


    Выглядит так, как будто это просто физическая сортировка данных по индексируемому полю.

    Фактически - именно так.

    Создаётся ли отдельная таблица или просто упорядочивается хранение существующих данных?

    Не создаётся. Но при изменении первичного индекса таблица полностью пересоздаётся с новым физическим порядком записей.

    Если данные упорядочиваются этим индексом, допустим по ID, то почему при select без сортировки данные могут возвращаться в произвольном порядке, а не отсортированные по ID по-умолчанию?

    Если не задан явно ORDER BY, сервер имеет право вернуть записи в любом порядке, как ему удобнее. В большинстве случаев, но не всегда, он будет возвращать записи в порядке чтения с диска...

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

    ===

    PS. Кстати, правило выбора индекса, который будет использоваться в качестве кластерного, имеет неприятный побочный эффект. Если у некоторых полей, входящих в какие-то индексы, изменяется свойство NULLability, то это может привести к изменению того, какой из имеющихся индексов станет использоваться в качестве первичного по пункту 2. В результате мы получим невозможность использования INSTANT / INPLACE методов, и будет использован длинный COPY. Впрочем, ситуация такая крайне редка.
    Ответ написан
    2 комментария
  • Как разделить сеть на несколько подсетей, чтобы в каждой был определенный вид устройства и настроить для каждой сети получение адреса по dhcp?

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

    Вот вообще не вижу проблемы. Резервирование IP-адреса на DHCP-сервере по МАС-адресу - это единственное, что нужно для решения задачи.

    PS. Правда, три DHCP-скопа, торчащие в одном L2-сегменте - это из разряда "странное"...
    Ответ написан
    Комментировать
  • Как оптимизировать запрос через Sqlalchemy?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Если отформатировать запрос, чтобы было видно, что происходит, получим следующее:

    SELECT coalesce(A.id, :coalesce_1) AS card_id, 
           coalesce(A.serial_number, :coalesce_2) AS card_number, 
           coalesce(B.name, :coalesce_3) AS prj_name, 
           coalesce(C.name, :coalesce_4) AS client_name, 
           coalesce(A.user_name, :coalesce_5) AS card_owner_name, 
           coalesce(A.user_phone_number, :coalesce_6) AS card_owner_phone_number, 
           coalesce(A.balance_current, :coalesce_7) AS current_balance, 
           coalesce(A.balance_bonus, :coalesce_8) AS bonus_balance, 
           coalesce(A.active, :coalesce_9) AS card_status, 
           coalesce(D.name, :coalesce_10) AS tariff_plan_name, 
           NULL AS anon_1 
    FROM cashless_card 
    JOIN company ON cashless_card.company_id = company.id 
    JOIN voc ON cashless_card.voc_id = voc.id 
    LEFT OUTER JOIN tariff_plan ON cashless_card.tariff_plan = tariff_plan.id 
    WHERE cashless_card.company_id IN (__[POSTCOMPILE_company_id_1])

    Почти очевидно, что в таблицах company, voc и tariff_plan поле по имени id - это первичный ключ... но хотелось бы подтверждения.

    Впрочем, видно, что для оптимизации запроса в таблице cashless_card крайне желательно наличие индекса (company_id). Следует также проверить эффективность индекса (company_id, voc_id, tariff_plan), и аналогичного с переставленными местами последними 2 полями (первым ставить то, которое более селективно).

    Кроме того, эффективность запроса сильно зависит от количества идентификаторов в списке, который передаётся в условие WHERE cashless_card.company_id IN (__[POSTCOMPILE_company_id_1]). Если их более десятка, есть смысл преобразовать этот список в набор данных (синтетическая UNION-таблица) и использовать как ещё один источник данных запроса.

    Ну и надо понимать, что наличие LIMIT/OFFSET только замедляет выполнение запроса. Причём чем больше OFFSET, тем сильнее это замедление.
    Ответ написан
    6 комментариев
  • Как настроить удалённую печать на МФУ Pantum M6550NW без присоединения принтера к сети?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Если комп с Windows рядом - киньте патч-корд напрямую.
    Если не очень далеко - подключитесь по WiFi.
    Ответ написан
    Комментировать
  • Есть ли ошибки в данной топологии сети?

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

    PS. Как по мне, вся схема - одна большая ошибка.
    PPS. И что вообще делают роутеры и брэндмауэр в L2-схеме?
    Ответ написан
    Комментировать
  • Как найти начальную точку для определения маршрутов в двумерном массиве?

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

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

    Применительно к показанному массиву - только значение USA соответствует описанному условию.

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

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

    Задача не решается вычисляемым полем - в его выражении не допускается недетерминированных конструкций.

    Для решения задачи потребуется:
    1) trigger, который обработает начальные условия
    2) event procedure, которая обработает изменение значения по наступлении заданного момента времени

    Однако условия на формирование значения поля:

    1) написаны так, что хрен поймёшь (даже непонятно, с какого языка это переводили)
    2) не описывают ВСЕ возможные вариации факторов (например, непонятно, какое должно быть значение, если ни одно из трёх условий не выполняется)

    Ну и, как правильно предлагает Константин Цветков, разумнее не изменять данные в таблице, а рассчитывать актуальный статус в момент, когда он требуется.
    Ответ написан
  • Как составить запрос на экспорт таблицы БД?

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

    Возможное решение - UNION ALL двух запросов. Первый - получающий список полей таблицы из INFORMATION_SCHEMA.COLUMNS в виде CSV, второй - собственно показанный запрос. Поскольку UNION ALL не перемешивает выходные записи, получится вроде бы то, что нужно.

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

    См. fiddle
    Ответ написан
    Комментировать
  • Что нужно знать и куда смотреть чтобы заменить домашний оптический роутер на другой?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Читайте договор.

    Если точка предоставления услуг провайдером - выход роутера, то вы в принципе не имеете права что-то делать с роутером. В том числе и заменять его.
    Если точка предоставления услуг провайдером - вход роутера, то вы имеете полное право заменить роутер на свой, и потребовать от провайдера полный перечень настроек, необходимых для подключения своего оборудования.
    Ответ написан
  • Можно ли корректно заполнить создаваемое поле таблицы данными из другой таблицы?

    @Akina
    Сетевой и системный админ, SQL-программист.
    UPDATE TableA 
    SET tableB_Id = TableB.Id
    FROM TableB
    WHERE TableA.Name = TableB.Name;


    fiddle
    Ответ написан
    Комментировать
  • Зависит ли скорость записи в БД от количества в ней записей?

    @Akina
    Сетевой и системный админ, SQL-программист.
    1. Меняется/Зависит ли как-то скорость записи в таблицу БД от количества записей в таблице?

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

    2. Меняется/Зависит ли как-то скорость записи в таблицу БД от количества таблиц в БД?

    В MySQL - нет.

    3. Меняется/Зависит ли как-то скорость записи в таблицу БД от количества записей в соседних таблицах БД?

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

    Да и разница в значении параметра "количество записей" должна быть на несколько порядков, чтобы разница по скорости записи была хотя бы не меньше точности измерения.
    Ответ написан
    Комментировать
  • Как составить сложную выборку из двух таблиц?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT address, 
           office, 
           t1.fio, 
           t2.counter, 
           CASE t2.counter
               WHEN 'counter1' THEN t1.counter1
               WHEN 'counter2' THEN t1.counter2
               WHEN 'counter3' THEN t1.counter3
               END value,
           t2.num,
           t1.date       
    FROM table1 t1
    JOIN table2 t2 USING (address, office)
    Ответ написан
    2 комментария
  • Как узнать с каких интерфейсов в cisco куда идут кабеля?

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

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

    Берём ноут либо планшет с сетевухой (USB). Втыкаемся в розетку или коммутатор. Смотрим в ARP в интерфейсе сиськи, на каком порте находится МАС сетевухи.

    А ещё есть генераторы, которые "свистят" в кабель. И к ним щуп, который определяет наличие этого "свиста" в кабеле либо розетке. Но это либо вдвоём, либо много бегать.
    Ответ написан
    2 комментария
  • Почему не работает функция CURRENT_DATE() в триггере?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Почему не работает функция CURRENT_DATE() в триггере?

    Где-то что-то криво делаешь. У меня - работает.

    Хотя с моей точки зрения - у тебя кривая таблица. Нафига нужен триггер, если существует такая штука как "значение по умолчанию"?

    CREATE TABLE Sotrudnik (
      .....
      Date_Prinyatiya DATE DEFAULT (CURRENT_TIMESTAMP),
      .....
    );

    FIDDLE

    PS. Обращаю внимание - скобки в выражении значения по умолчанию обязательны!
    Ответ написан
    Комментировать
  • Как удалить данные о профиле при сетевом подключении?

    @Akina
    Сетевой и системный админ, SQL-программист.
    rundll32.exe keymgr.dll, KRShowKeyMgr
    Ответ написан
  • Как присвоить одному сайту разный IP?

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

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

    Как сделать так что бы при вводе другого IP адреса с другой подсети пользователь попадал на сайт 10.2.2.10?

    Если вопрос ставить ИМЕННО ТАК - то либо использовать destination NAT в варианте DMZ, либо socks proxy.

    Любые остальные решения подходят только в случае, когда будут чётко определены конкретные протоколы и, для TCP/UDP - порты. И когда будет чётко и однозначно определено, что скрывается под загадочным термином "попадать".
    Ответ написан
    Комментировать
  • Почему при выборке первых трех строк, MySQL просматривает все записи таблицы?

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


    Таков принцип работы у этой СУБД. MySQL сначала выбирает все соответствующие условиям отбора записи, и только потом применяет к ним ограничение количества. Правда, обычно в запросе ещё присутствует и сортировка.

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

    Мне возвращается первые 3 строки.

    Хочу огорчить. Не три первые, а три случайным образом полученные. Но, поскольку в запросе отсутствуют выражения отбора и сортировки, то записи обычно выдаются в том порядке, в каком они располагаются в кластерном (первичном) индексе. Впрочем, кэширование данных и вымывание их из кэша данными конкурентных процессов могут это изменить.

    Вот, полюбопытствуйте: FIDDLE. Кстати, забавно, что без хинта оптимизатор выбирает вовсе даже не первичный индекс... Более того, в данном конкретном случае этому есть совершенно точное и строгое объяснение - попробуйте его найти.
    Ответ написан
    Комментировать
  • Какой тип файла выбрать для проекта?

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

    Такое однозначно требует plain text.

    Во-первых, всё должно быть максимально просто. Соответственно про бинарные, а тем более проприетарные, форматы - забудь.
    Во-вторых, уж редактор, а тем более вьювер, для текстовых файлов сейчас можно найти даже в утюге. Лишь бы он после импорта и редактирования текста не стремился сохранить результат в своём хитровыделанном формате.
    В третьих, чтобы при редактировании не соблюсти простейший текстовый формат, надо быть полным [censored].

    Соответственно первый кандидат на формат - это CSV/TSV. Я за CSV с горизонтальным выравниванием при выводе (но игнорированием его при обратной загрузке), при обязательном требовании обрамления значений символом двойной кавычки. С соблюдением такого формата при редактировании справится и обезьяна.
    Второй кандидат - это текстовые форматы сериализации (JSON, XML и т.п.). Но там сложнее соблюдать формат при редактировании.
    Ответ написан
    4 комментария
  • Что и как присваивает номера vlan для подсетей?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Есть устоявшаяся практика: присваивать номер vlan номеру подсети

    Вот честно - слышал, но никогда не мог понять. Как по мне - хрень голимая. Качественное документирование куда как полезнее.

    Более того, никогда не понимал и горячее желание иметь одну подсеть на вилан. Но тут хотя бы понять можно, почему.

    понятно ограничение на количество vlan на разном оборудовании

    Если оборудование не поддерживает стандарт, который определяет 4к различных VLAN, то разумнее его не использовать - кто знает, что оно ещё делает не по стандарту...
    Ответ написан
    8 комментариев