• Как решить олимпиадную задачу python?

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

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

    @Akina
    Сетевой и системный админ, SQL-программист.
    CREATE TRIGGER tr
    ON routes
    AFTER INSERT 
    AS 
    UPDATE [user]
    SET [update] = 1
    FROM INSERTED
    WHERE id = INSERTED.user_id;

    fiddle
    Ответ написан
    2 комментария
  • Как выполнить backup базы данных mysql запросом?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Очень теоретически можно организовать бэкап БД "одним запросом". И это будет запрос
    CALL stored_procedure(@datatbase_name);
    А вот в хранимой процедуре будет дофига запросов. Нужно будет из INFORMATION_SCHEMA получить список всех имеющихся в БД объектов и организовать копирование информации во внешний файл (причём для каждой таблицы придётся делать два файла - один со структурой, второй с данными). А ещё надо не забыть про процедуры, функции, триггеры... в общем, задачка весьма нетривиальная. Лучше даже не начинать.
    Ответ написан
    Комментировать
  • Как получить по лимиту данные из одной таблицы по разным критериям?

    @Akina
    Сетевой и системный админ, SQL-программист.
    WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY RAND()) rn
                  FROM ...
                  WHERE ID IN (1, 2, ..100) )
    SELECT *
    FROM cte
    WHERE rn <= 5
    Ответ написан
    2 комментария
  • Как исправить сортировку в MySql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    У SUBSTRING_INDEX накладные расходы великоваты. Я бы использовал
    SELECT *
    FROM table_name
    ORDER BY 0 + SUBSTRING(column_name FROM 2)

    А для совсем ускорения, если такая сортировка используется часто, можно создать индекс по соотв. выражению, а то и generated column с соответствующим индексом.
    Ответ написан
    3 комментария
  • Как обнулить IP адрес?

    @Akina
    Сетевой и системный админ, SQL-программист.
    По договору с провайдером у меня динамический IP. Услугу статического IP я не подключал. Однако мой IP не меняется уже месяц.
    [skipped]
    Что делать и каким способом обнулить время аренды DHCP IP-адреса? Как вернуть динамический IP?
    Для начала - не путайте тёплое с мягким. Да, с цветным тоже не путайте.

    Динамический IP означает, что Вам не нужно прописывать настройки, что все настройки Вы получите от оборудования провайдера по DHCP. Это всё.

    Повторяю - ЭТО ВСЁ! Больше ничего эта фраза в договоре не означает. Она не устанавливает, публичный адрес у Вас будет или приватный (белый или серый), не устанавливает, будет ли адрес всё время один и тот же, или будет периодически либо регулярно изменяться...

    Далее. Время аренды адреса - это параметр, которым оперирует DHCP-сервер провайдера. Он напрямую связан с МАС-адресом Вашего оборудования (сетевая карта, роутер), подключенного к провайдеру, и выделенным для этого МАС IP-адресом. Соответственно "обнулить время аренды" можно двумя способами:

    1) Выключить своё оборудования на время более текущего времени аренды. Ненадёжно - на DHCP соответствие будет сохраняться, пока этот IP не будет выдан кому-то ещё (что в случае проводных провайдеров событие маловероятное).

    2) Сменить МАС-адрес на своём оборудовании. Не будет работать, если у провайдера имеется привязка по порту (причём может быть как привязка клиентского МАС, так и выделяемого IP).

    Многие сайты считают меня ботом и не пускают. Иногда дело доходит до апсурда, и меня в гугле банят. Что искать в Google надо проходить проверку "я не робот", а это очень тяжело, особенно когда приходится две или три попытки делать.


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

    Если отсутствие интерференции с другими клиентами действительно важно - следует приобрести у провайдера услугу выделенного реального IP-адреса. В данном случае:

    "выделенный" - присвоенный только тебе, одновременно с тобой с этого адреса никто работать не может.

    "реальный" - он же белый, адрес, маршрутизируемый в Инете.

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

    @Akina
    Сетевой и системный админ, SQL-программист.
    Используйте условное агрегирование.
    SELECT `id_user`, 
           SUM(`sum`) `sum_month`, 
           SUM(`sum` * (`date` >= NOW() - INTERVAL 1 WEEK)) `sum_week`, 
           SUM(`sum` * (`date` >= NOW() - INTERVAL 1 DAY)) `sum_day`, 
           users.name 
    FROM `balance_history` 
    INNER JOIN `users` ON `id_user` = users.id 
    WHERE `date` >= NOW() - INTERVAL 1 MONTH
      AND `type` = 'plus' 
    GROUP BY `id_user`, users.name 
    ORDER BY `sum` DESC


    Выражения-аргументы SUM() - это упрощённое выражение типа

    SUM(CASE WHEN {some condition}
             THEN {some value}
             ELSE 0
             END)


    Ну а WHERE ещё и позволяет не трясти более древние записи, которые заведомо не учитываются ни в одной из сумм. Поэтому оно отбирает самый длительный из периодов суммирования, а заодно избавляет от условия агрегирования одно из выражений.
    Ответ написан
    Комментировать
  • Как удалить в базе данных MYSQL все между двумя тегами?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT html, REGEXP_REPLACE(html, '<nav>[^<]*</nav>', '')
    FROM test;

    fiddle
    Ну и соответственно
    UPDATE test
    SET html = REGEXP_REPLACE(html, '<nav>[^<]*</nav>', '');
    Ответ написан
    5 комментариев
  • Как написать запрос для вывода классов в которых только отличники?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT DISTINCT class
    FROM tablename t1
    WHERE NOT EXISTS ( SELECT NULL
                       FROM tablename t2
                       WHERE t1.class = t2.class
                         AND t2.mark != 5 )

    Запрос предполагает, что нет записей, где оценка отсутствует (mark IS NULL).
    Ответ написан
    Комментировать
  • Кто удалил файл?

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

    Из практики - в 90% случаев файл или каталог не удалён. Просто какое-то нерадивое чмо неловким движением мыша переместило его в какой-то каталог. Обычно - даже не заметив этого (оно само, случайно, зацепилось). Опять же из практики - подобное пропадание на Window Server - минимум 2-3 раза в месяц, а на столь же интенсивно использовавшемся Novell Netware, где подобное перемещение было запрещено соотв. атрибутом файловой системы - 2 или 3 раза за более чем 10 лет.

    Настоятельно рекомендую посмотреть в сторону программного обеспечения, которое носит общее название "Сетевая корзина". Суть проста - удалённый по сети файл помещается в корзину так же, как если он удалён в локальном сеансе от имени локальной учётной записи. И восстановить просто, и видно, кто и когда удалил. А если файла в корзине нет - это те самые 90%, см. выше.
    Ответ написан
    Комментировать
  • Не отображается время и дата с видеокамер?

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

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

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


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

    У меня лежит заранее настроенный коммутатор (конкретно DES-3200-52), в котором все 52 порта настроены на 52 разных VLAN, и во всех имеется подключение к интерфейсу управления. И полсотни метровых патч-кордов. Соответственно я просто подключаю все порты патч-панели к коммутатору, а потом иду по розеткам с ноутом (у которого на интерфейсе более широкая сеть, накрывающая все адреса коммутатора). Там подключаюсь к розеткам по одной и скриптом быстро пропинговываю все адреса внутреннего интерфейса коммутатора (1 пинг, 100 мс тайм-аут, всё занимает максимум 11 секунд, а если даже коммутатор стормозит и на первый пинг не ответит - смотрим текущую ARP-таблицу), и по тому, какой адрес ответил, понимаю, к какому порту патч-панели приходит данная розетка.

    И бегать туда-сюда не нужно, и делается всё вполне успешно без напарников. Конечно, при этом не будут определены проблемные розетки (с неисправной линией, или просто подключенные к другой патч-панели).
    Ответ написан
    Комментировать
  • Почему с подключенным статичным IP, на 2ip показывает один адрес, а в роутере wan адрес другой?

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

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

    Специалист представился инженером и сообщил, что мне нужно зайти на 2ip.ru и именно то, что на нём отображается и является моим статичным публичным ip адресом.
    То ли он тебя не понял (не понял, что у тебя подключена услуга "белого адреса"), то ли намеренно ввёл в заблуждение. Услуга "публичный адрес" однозначно предполагает, что этот адрес будет иметь оборудование в твоей зоне ответственности (в данном случае шлюзовое - WAN роутера). Услуга "постоянный публичный адрес" дополнительно предполагает, что этот адрес не будет изменяться во времени.
    Ответ написан
    5 комментариев
  • Как дать доступ пользователю только к одной папке и ее содержимому в сетевой шаре?

    @Akina
    Сетевой и системный админ, SQL-программист.
    мне необходимо чтобы он попадал туда из диска S, папки_А и т.д. и при этом не видел содержимое попутных папок.

    В рамках идеологии назначения прав в NTFS приемлемого решения Вы не найдёте. Чтобы "увидеть" подпапку в папке, но при этом не "видеть" файлы этой папки, Вам необходимо, чтобы и на папку, и на подпапку были прямо назначены права, причём в случае папки - применяемые только к этой папке. Что говорит о том, что Вам придётся использовать прямое назначение прав на папки Департамент_1, папка_А, папка_B и папка_C. Подобный подход - прямой путь к горе прямых назначений и итоговому бардаку.

    Навскидку вижу два решения.

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

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

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

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

    Рекомендую начать с выполнения той же операции из другого инстанса ОС - просто чтобы понять, аппаратная или программная часть шалит.
    Ответ написан
    Комментировать
  • Как оставить работать только 1 приложение на win7?

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

    1. ICQ не имеет режима "всегда на полный экран".
    2. Ничто не мешает через настройки достучаться до окна выбора какого-нибудь файла (там выбор фона или ещё какая ерунда), а там запустить explorer или иное приложение.

    Всё это доступно и в случае, когда приложение запускается как shell.

    Также нерешаемо, если использовать браузерную онлайн-версию ICQ https://web.icq.com/ запуском IE в режиме киоска - мало ли куда можно убрести по ссылкам.
    Ответ написан
    Комментировать
  • В чем разница switch expression и switch statement?

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

    Switch expression (хотя правильнее было бы назвать Switch function) - это фактически функция, которая выбирает одно из альтернативных выражений для вычисления значения в зависимости от условий.
    Ответ написан
  • Можно ли открыть порты с не статическим Ip-адресом?

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

    Другой вопрос, как внешние клиенты будут узнавать нужный в текущий кол времени адрес... хотя для этого существуют сервисы динамического DNS. При условии, что Ваш внешний адрес - маршрутизируемый в Интернете (белый), конечно.
    Ответ написан
  • Может ли провайдер изменить протокол на транспортном уровне и прочитать ваш трафик?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Может ли провайдер изменить ... https на http

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

    и снифером словить ваш трафик?

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

    Во-вторых, даже если провайдер преобразует трафик из HTTPS в HTTP, это вовсе не означает, что он этот трафик каким-то волшебным образом расшифрует. Как была шифрованная нечитаемая лабуда, так и останется. Так что не жадничай - пусть снифит, если ему заняться нечем, твоих секретов это не раскроет.
    Ответ написан
    Комментировать
  • Как указать ttl в утилите ping?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Вы видите TTL ответного пакета. Поставьте не 15, а, скажем, 5 - получите отлуп в связи с преждевременной смертью.
    Ответ написан
    1 комментарий