Задать вопрос
  • Какой установщик MySQL использовать?

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

    Если MySQL должен работать в связке с другим ПО, то следует изучить это другое ПО на предмет того, какая версия MySQL для работы с ним рекомендована/проверена/тестирована, и ставить именно эту версию. Если указан диапазон версий или укрупнённо (скажем, 8.х), то использовать последнюю LTS из входящих в диапазон, а при отсутствии в диапазоне LTS-версии - последнюю из указанных.

    Если ПО требует MariaDB - ставить именно её, а не MySQL. Но если указаны как допустимые обе СУБД - то однозначно ставить MySQL. Исключение - если в зависимости от установленной СУБД различаются предоставляемые возможности, и только MariaDB обеспечивает нужный функционал.
    Ответ написан
    3 комментария
  • Как открыть порт на Windows Server?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Чтобы пришедший из интернета на внешний интерфейс сервера пакет был сервером перенаправлен на компьютер внутри локальной сети, необходимо настроить маппинг этого порта на внешнем интерфейсе. Это делается командой
    netsh interface portproxy [параметры маппинга]

    Но я абсолютно согласен со всеми комментариями к вопросу - выставление Windows Server голой жопой напрямую в Интернет есть абсолютно [censored] идея. Тем более когда эту процедуру выполняет человек, не имеющий даже базовых знаний по теме (сетевой) безопасности.
    Ответ написан
    5 комментариев
  • Возможно ли в UPDATE "видеть" результат обновления предыдущих строк?

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

    1. Создание тестовой таблицы

    CREATE TABLE PDIndicatorsHistory 
    (
    	RecId int PRIMARY KEY IDENTITY(1,1),
    	ItemId int,
    	ReportDate datetime,
    	PD int
    );
      
    INSERT INTO PDIndicatorsHistory (ItemId,ReportDate,PD) VALUES
    (1, '2025-07-06', 2), (1, '2025-07-07', NULL), (1, '2025-07-08', NULL);
    
    SELECT * FROM PDIndicatorsHistory;


    2. Создание функции

    CREATE FUNCTION dbo.GetPD 
    (
        @prev_RecId INT,  -- идентификатор предыдущей записи, её исходное состояние
        @next_RecId int,  -- идентификатор текущей записи, её исходное состояние
        @prev_PD INT      -- значения отдельных полей обновлённой предыдущей записи
    )
    RETURNS int
    AS
    
    BEGIN
    -- требуемая сложная логика, опирающаяся на идентификаторы текущей и предыдущей записей
    -- что позволяет получить значения полей записей ДО запуска SELECT или там UPDATE,
    -- а также на значения полей модифицированного состояния предыдущей записи, переданных по отдельности
        RETURN @prev_PD * 2;
    END;


    3. Обновление

    WITH
    -- первый CTE, просто нумерует записи по возрастанию даты для каждого ItemId отдельно
    cte1 AS (
        SELECT *, ROW_NUMBER() OVER (PARTITION BY ItemId ORDER BY ReportDate ASC) rn
        FROM PDIndicatorsHistory
        ),
    -- рекурсивно обрабатываем записи в порядке возрастания номера
    cte2 AS (
        SELECT RecId, ItemId, ReportDate, PD, rn
        FROM cte1
        WHERE rn = 1 -- начинаем с первой
        UNION ALL
        SELECT cte1.RecId,
               cte1.ItemId,
               cte1.ReportDate,
               dbo.GetPD(cte2.RecId, cte1.RecId, cte2.PD),
               cte1.rn
        FROM cte1
        JOIN cte2 ON cte1.ItemId = cte2.ItemId
                 AND cte1.rn = cte2.rn + 1 -- а потом вторая, третья... пока не кончатся
        )
    -- посчитав значения, которые нужно использовать при обновлении, выполняем само обновление
    UPDATE PDIndicatorsHistory
    SET PD = cte2.PD
    FROM cte2
    WHERE PDIndicatorsHistory.RecID = cte2.RecId;


    fiddle

    PS. Почему так сложно? Такова логика UPDATE (транзакции, роллбэки - по-другому никак). Сначала подготовить новое состояние для ВСЕХ модифицируемых записей, а потом выполнить их фактическое обновление. И соответственно SELECT к таблице внутри функции обращается к исходному состоянию таблицы, ему пофиг, что запись, к которой ты обращаешься, ПОДГОТОВЛЕНА к модификации. Она ещё не модифицирована.
    Ответ написан
    7 комментариев
  • RRPPP принципиально ли направление primary/secondary портов на транзитах?

    @Akina
    Сетевой и системный админ, SQL-программист.
    В RRPP primary/secondary имеют значение только на мастер-коммутаторе, потому что primary только шлёт, а secondary только принимает. На транзитных коммутаторах health-пакеты просто безусловно коммутируются/пропускаются в обоих направлениях, то есть прописанный для порта primary/secondary элементарно игнорируется. А поскольку в каждом кольце только один мастер-коммутатор, то в режиме штатной работы совершенно неважно, как прописаны на портах роли.

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

    @Akina
    Сетевой и системный админ, SQL-программист.
    Я просто вставляю order by date (поле даты) и забираю последнюю строчку.

    Глупо.

    Используй ORDER BY date DESC - и тогда можно, во-первых, брать первую строку, а не мотать вниз до последней, во-вторых, нужная "предыдущая" строка при обратной сортировке будет "следующая" - ну то есть вторая.

    PS. Дата - ненадёжный критерий сортировки. За один день комп могут сдать на склад и выдать другому товарищу - и будешь ты гадать, какая из двух записей актуальная, а какая для неё предыдущая. Я уж не говорю о вводах и корректировках "задним числом".
    Ответ написан
    1 комментарий
  • Как протянуть оптический линк между двумя соседними домами?

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

    Если нужен ОДИН линк - то это предпочтительное решение.

    Коннекторы FC/SC/ST/etc. без проблем протягиваются через 20-ю гофру, а LC - даже через 16-ю. Одиночный разъём, само собой, если патч дуплексный, разберите его и протягивайте по одному волокну. Но, если возможно, лучше используйте не гофру, а 20-мм трубу для электропроводки.

    Берите патч как минимум с 2 метрами запаса. Лучше большое кольцо на одной из сторон, чем натянутый патч.

    какая оптика с какими коннекторами?

    Смотрите коннекторы на сетевых картах или SFP+ модулях. Если есть возможность выбирать - берите с ферулой 2,5 (обычно это FC). Полировка - предпочтительно UPC.

    Модули SFP+ должны соответствовать как типу волокна патча, включая тип полировки, так и быть совместимы со свичами.

    Я бы рекомендовал SM (одномодовое) волокно и WDM-модули (работающие по одному волокну, покупаются строго комплементарной парой). Но тут уж на вкус и цвет...

    какие могут быть неочевидные ламеру нюансы?

    Хренова гора...
    Ответ написан
    Комментировать
  • От чего зависит время пинга?

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

    - время, которое тратится промежуточными узлами на передачу до пингуемого узла и обратно;
    - время, которое пингуемый узел тратит на обработку запроса и формирование/отправку ответа.

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

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

    А на скорость передачи не заморачивайтесь. Пакетики в пинге короткие, частота передачи высокая, так что время передачи пакета от узла к узлу по медному или оптическому кабелю в подавляющем большинстве случаев просто меньше точности измерения времени.
    Ответ написан
    Комментировать
  • Как настроить IP DNS-сервера в локальной сети Windows?

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

    Да. При переключении настройки вообще не следовало трогать. В обоих схемах дефолтный шлюз и DNS должны быть 192.168.0.1.
    Что до DHCP-сервера - на вторичном роутере его следует вообще выключить. Либо настроить на диапазон адресов, который не пересекается со скопом первого роутера, и в качестве шлюза/DNS отдавать адрес не свой, а именно первого роутера.
    Ответ написан
  • Как правильно подключить две сети к интернету, по отдельным IP одной подсети?

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

    Вы фактически хотите объединить две физически изолированные сети? Вы уверены в том, что делаете? Если этот вопрос контролируется соотв. службой, вы сильно рискуете...
    Гораздо разумнее запросить от провайдера второй порт подключения (с изоляцией портов) и поставить отдельную железку.
    Ответ написан
  • Как настроить trunk порты на коммутаторе Eltex MES2424?

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

    Настраивать нужно так, как вам требуется.
    Trunk - транковый (tagged only).
    Access - клиентский (untagged only).
    General - гибридный режим (tagged + untagged).
    Параметр default-vlan устанавливает, в каком режиме работает default VLAN (по умолчанию VLANID = 1).

    Руководство по эксплуатации, страницы 86-88.

    в интернете и на форумах Eltex увидел

    Консультироваться в Инете, не прочитав документацию - одна из самых не очень умных вещей...
    Ответ написан
    6 комментариев
  • Как отработать EXTRACT(epoch FROM MAX(null))?

    @Akina
    Сетевой и системный админ, SQL-программист.
    может есть вариант функции "EXTRACT" способный обрабатывать значение Null

    Вотще! Это забота программиста - обеспечить корректное значения параметра.
    SELECT EXTRACT(epoch FROM COALESCE( MAX(t.date_x), {default datetime literal} )) 
    FROM T

    Если очень надо- можно ещё сверху NULLIF() наслоить.

    Альтернативное решение - явное приведение типа:
    SELECT EXTRACT(epoch FROM CAST( MAX(t.date_x) AS TIMESTAMP)) 
    FROM T
    Ответ написан
  • Как в Excel изменить область действия именованного диапазона?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Имена хранятся в коллекциях по имени Names. Для книги и листа соответственно это Workbook.Names и Worksheet(idx).Names.

    Желаемое действие - изменение области,- на самом деле потребует ПЕРЕМЕЩЕНИЯ объекта из одной коллекции в другую. Т.е. удалить из одной коллекции и добавить в другую. К тому же в ходе этого процесса существует потенция ошибки дублирования имени - ведь в пределах коллекции ключ (т.е. в пределах области имя) должен быть уникальным.

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

    @Akina
    Сетевой и системный админ, SQL-программист.
    На PC-1 установлена 1 сетевая карта Realtek GBe Gaming Family Controller, поддерживающая VLAN (утилитой Realtek Ethernet Diagnostic Utility задали второй IP для компа - из подсети видео 172.16.99.*).

    Сейчас найти карту, которая поддерживает VLAN, проще, чем карту, которая НЕ поддерживает.

    Основной вопрос - поддерживает ли ваша карта multi-VLAN? Или иначе - после установки REDU, её запуска и выбора в левом окне вашей сетевой карты - появляется ли в среднем окне в дереве пункт VLAN?

    Если нет, то всё плохо, и простого решения нет.

    Если пункт есть, то всё элементарно:
    1. Перенастроить порт свича к этой сетевой карте в режим транка, и включить его в оба VLAN в режим tagged.
    2. С помощью REDU создать два указанных VLAN на сетевой карте. Рекомендую каждому VLAN присвоить вручную VMAC из диапазона незарегистрированных, и чтобы последние 4 цифры указывали на VLANID.
    3. В свойствах сетевых подключений для каждого подключения установить требуемый адрес.
    Ответ написан
  • Как настроить автоматическое заполнение планов в таблице по дате из другой таблицы?

    @Akina
    Сетевой и системный админ, SQL-программист.
    C7=HLOOKUP($B$5;'Планы'!$B$6:$I$11;row()-5;false)
    6802b292363d1080348760.png
    Ответ написан
  • Что будет если в сети подключить 2 коммутатора с одинаковыми IP?

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

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

    Всё это проверено практикой. Обычное дело, когда наводишь порядок в сети с кучей ненастроенных коммутаторов. Сперва подключаешься быстренько к кому-нибудь, резко меняешь ему IP, запоминая МАС, и надеешься, что именно в этот момент не произойдёт "смена лидера" (именно поэтому никаких веб-интерфейсов, только телнет). А потом, избавившись от дубляжа, по ARP-таблицам, списку активных портов и прочим признакам (например, модель коммутатора или тип свистка, FC или FX, в комбо-порте) пытаешься понять, кто есть ху.

    Это при условии, что адрес на коммутаторах не используется активно - скажем, как промежуточный узел маршрутизации на L2+ или L3 коммутаторе. А если используется - то обычные проблемы дублирования встанут в полный рост.
    Ответ написан
    3 комментария
  • Какая скорость передачи отдельного пакета по сети?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Как скорость передачи отдельного пакета может быть 100 Гбит/, если этот пакет передается в потоке со скоростью 50 Гбит/с?

    Элементарно. Ограничение скорости отдельного потока в канале - оно внешнее по отношению к скорости передачи данных в канале. За счёт конкуренции, шейпинга, приостановки средствами управления потоком... то есть канал половину времени передаёт данные потока со скоростью 100Гбит, а вторую половину или передаёт что-то другое, или ничего не делает, только держит несущую. А сама скорость в канале постоянна и неизменна.
    Ответ написан
    Комментировать
  • Что делать, если не устанавливается mysql server 9.2?

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

    https://massgrave.dev/genuine-installation-media
    Ответ написан
  • Как включить скрытую кнопку Общий доступ в новых версиях Excel?

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

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

    Зависит от того что понимать под термином "Проектирование БД".

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

    Возможно, в какой-то близкой перспективе до этого дошагают средства ИИ, но мне как-то сомнительно.

    =========================

    Но, поскольку вопрос учебный, то скорее всего имеются в виду средства, которые позволяют нарисовать ERD по выполненному анализу, а потом на основе построенной диаграммы сгенерировать SQL-код создания структуры БД. Если так, то товарищи уже накидали вариантов. Впрочем, следует отметить, что в случаях, когда выполненный анализ и выбранная архитектура/реализация требует существования в БД таких типов объектов, как, например, триггеры, хранимые процедуры, эвенты и пр., ни одно из уже перечисленных средств не справится.

    Но вот хрен знает, что на самом деле в мозгу у вашего препода.
    Ответ написан
    3 комментария
  • Почему на одном и том же хосте лютые потери пакетов?

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

    Провайдер врёт, что он в душе не гребёт, какой это [censored] использует этот адрес. Потому что этот [censored] - именно сам твой провайдер. Это же второй хоп - ну о чём вообще речь? Ну или ты попадаешь на первую линию техподдержки, где сидит нечто не очень грамотное, способное только зачитывать по телефону простейшие инструкции из ЧаВо...

    К слову, это зарезервированный адрес:

    RFC 6598

    IANA has recorded the allocation of an IPv4 /10 for use as Shared Address Space.

    The Shared Address Space address range is 100.64.0.0/10.

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

    И лишь на 4 хопе ты выходишь на Совинтел (87.229.204.182).

    PS. А если бы на месте этого адреса был бы какой-то 10.11.12.1 (или другой богон-адрес, но из широко известных серых подсетей) - тебе бы сильно это помогло? Хотя... тогда было бы проще доказывать провайдеру, что косяк на его стороне.
    Ответ написан