• Как запускать Wireguard GUI у всех юзеров Windows?

    @AVSomov
    Для запуска GUI в режиме ограниченных возможностей (без требования прав администратора): нужно добавить ключ HKLM\Software\WireGuard\LimitedOperatorUI типа DWORD и значением "1". Так же пользователей нужно добавить в группу безопасности "Операторов конфигурации сети"
    Ответ написан
    2 комментария
  • Одна -a запись для static ip и DDNS?

    @AVSomov
    Если клиенты не знают выделенное имя для failover-адреса (его можно объявить в своём же домене через CNAME), то вариантов не особо, т.к. замена A записи может занимать до 72 часов, а делать 2 записи не рекомендую, т.к. в зависимости от клиента он может брать не первый IP из DNS-выдачи.
    Может проще арендовать небольшой реверс-прокси сервер, который будет переключать клиентов между площадками?
    Ответ написан
    Комментировать
  • Какие самые большие пакеты пропускает ping в windows и как задать минимальную задержку между отправкой?

    @AVSomov
    1. Какие самые большие пакеты пропускает ping?
    Для параметра -l ("Размер буфера отправки") допустимый диапазон значения с 0 по 65500.
    2. Как задать минимальную задержку между отправкой?
    Задержка фиксирована и составляет 1 сек, можно уменьшить Timeout ответа (по умолчанию: 3 сек = 3000 мс) с помощью ключа -w (задаётся в мс).

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

    Для диагностики можете проверить доступность вашего шлюза (роутера), шлюза провайдера и внешнего ресурса.
    Для простоты выполните:
    tracert -d 8.8.8.8
    в таблице 1й IP - ваш шлюз, 2й - вашего провайдера, а последний 8.8.8.8 - этот можно использовать как внешний.
    Поставьте все 3 адреса на непрерывный ping (флаг -t) и понаблюдайте на изменение (или нет) значений во время, когда "сайты открываются через раз". Если аномалий в показателях при этом не выявляются, значит проблема не в связности, а, например, с DNS.

    PS: Для проверки на DDoS можно использовать PingFlood - он как раз генерирует множество icmp-запросов, но делать это с внешними узлами не стоит, т.к. вас и провайдер может заблокировать за проведение DDoS.

    PPS: "1472" -указанное значение похоже на MTU и отношения к вашей проблеме вряд ли имеет.
    Ответ написан
    Комментировать
  • Есть ли способ вставить iframe на xml страницу?

    @AVSomov
    XML - это не HTML страница. Но из XML используя XSL уже можно получить HTML, практически любой, если вы определяете содержимое преобразования XSL, т.к. если XSL - внешний, то чтобы отобразить что-либо в результате его применения к XML нужно анализировать содержимое конкретного XSL (и далеко не факт, что это позволит вставить iframe).

    PS: Проверьте, что в начале XML-файла есть подобная строка:
    <?xml-stylesheet type="text/xsl" href="....xsl"?>
    Ответ написан
    Комментировать
  • Как в Notepad++ заменить одно значение на ряд других поочередно?

    @AVSomov
    Не совсем ясно наличие ограничений на список "B, C, D, ..." - он бесконечный? Есть какие-то правила получения очередного значения?
    В случае, когда список замен ограничен, то могу предложить 2 способа:
    1. Через регулярные выражения - вариант сложный, т.к. не все понимают как с ними работать (собственно комментарий про этот способ).
    2. Макросы - включаете запись, находите первое значение (тут лучше явно вызвать окно поиска и вставить значение "A") - заменяете на "B", находите следующее - "C" и так до конца списка замен, останавливаем запись и запускаем через "Многократный запуск".
    Ответ написан
    Комментировать
  • Как написать выражение CheckConstraint класса Meta модели django для проверки не превышения количества строк ключа ForeignKey?

    @AVSomov
    Если говорить именно про уровень БД, даже не про конкретный ЯП, то проблема решается введением для Image поля "порядковый номер" OrderNum (с ограничением значений в 10 шт, например: от 0 до 9) и объявляем уникальный индекс на пару полей Product + OrderNum.
    Ответ написан
    Комментировать
  • Как создать XML-отчет в FastReport по заданной схеме XSD?

    @AVSomov
    FastReport не предназначен для формирования XML по заданной схеме, по сути существующий в нём экспорт в XML - это вариация экспорта в Excel.
    Как указал выше IliaIT, вам требуется импортировать XSD (описание формализованной структуры XML), на основании этого будут созданы классы\интерфейсы (для полного соответствия XSD потребуется "доработка напильником"), написать код наполнения и сохранения XML, далее, если есть XSL (это описание по преобразованию XML в другой формат, обычно речь про HTML), то можно получить "типовую печатную форму документа" (самый простой, если пишите под Windows, то используя MSXML и метод IXMLNode.TransformNode).
    Ответ написан
    Комментировать
  • Почему клиент на Java не может подключиться к серверу (на сокетах)?

    @AVSomov
    При данной постановке вопроса сложно дать прямой ответ, т.к. нет ни кода ни какого-либо анализа и дампов.

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

    Например, могу предположить, что не корректно ожидается проброс порта через NAT на WAN-интерфейсе, при фактической передаче пакета на LAN-интерфейс роутера. Попробуйте запустить любой сниферр, вероятно в нём увидите, пакет к роутеру на создание соединение, но ответа не будет, т.к. роутеру не ясно куда перенаправлять этот пакет. При этом обращение из внешней сети по белому IP, при настроенном пробросе, покажет, что обмен работает.
    Ответ написан
    2 комментария
  • ICMP tunnel на c#?

    @AVSomov
    В описании отсутствует уточнение, но судя по фрагменту кода в комментарии, речь идёт только про передачу через ICMP Echo.

    Клиент:
    using System;
    using System.Net;
    using System.Net.NetworkInformation;
    using System.Text;
    
    namespace icmp_client
    {
        public class IcmpClient
        {
            // args[0] can be an IPaddress or host name.
            // args[1] message for send
            public static void Main (string[] args)
            {
                Ping pingSender = new Ping ();
                PingOptions options = new PingOptions ();
    
                // Use the default Ttl value which is 128,
                // but change the fragmentation behavior.
                options.DontFragment = true;
    
                // Create a buffer of 32 bytes of data to be transmitted.
                string data = args[1];
                byte[] buffer = Encoding.ASCII.GetBytes(data);
    
                int timeout = 120;
                PingReply reply = pingSender.Send(args[0], timeout, buffer, options);
                if (reply.Status == IPStatus.Success)
                {
                    Console.WriteLine("Address: {0}", reply.Address.ToString ());
                    Console.WriteLine("Message: {0}", data);
                    Console.WriteLine("Buffer size: {0}", reply.Buffer.Length);
                }
            }
        }
    }


    Параметры коммандной строки:
    1. IP-адресс или имя получателя сообщения
    2. Текст сообщения

    Например: icmp_client.exe 127.0.0.1 "test msg"

    Сервер:
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    
    namespace icmp_server
    {
        public class IcmpServer
        {
            private const int ICMP_TYPE_OFFSET = 20;
            private const int ICMP_TYPE_ECHO_REQUEST = 8;
            private const int PAYLOAD_OFFSET = 28;
            
            public static void Main(string[] args)
            {            
                IPAddress ipAddr = IPAddress.Parse(args[0]);
                IPEndPoint ipMyEndPoint = new IPEndPoint(ipAddr, 0);
                EndPoint myEndPoint = (ipMyEndPoint);
                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
                socket.Bind(myEndPoint);
                socket.IOControl(IOControlCode.ReceiveAll, BitConverter.GetBytes(1), null); 
                while (true)
                {
                    Byte[] ReceiveBuffer = new Byte[socket.ReceiveBufferSize];
                    var nBytes = socket.ReceiveFrom(ReceiveBuffer, ReceiveBuffer.Length, SocketFlags.None, ref myEndPoint);
                    var icmpType = ReceiveBuffer[ICMP_TYPE_OFFSET];
                    if (icmpType == ICMP_TYPE_ECHO_REQUEST)
                    {
                        Console.WriteLine("Echo Request received");
                        Console.WriteLine("Received: {0} bytes", nBytes);
                        if(nBytes > PAYLOAD_OFFSET)
                        { 
                          var payLoadSize = nBytes - PAYLOAD_OFFSET;
                          byte[] payLoad = new byte[payLoadSize];
                          Array.Copy(ReceiveBuffer, PAYLOAD_OFFSET, payLoad, 0, payLoadSize);
                          string msg = Encoding.ASCII.GetString(payLoad);
                          Console.WriteLine("Data hex: {0}", BitConverter.ToString(payLoad));
                          Console.WriteLine("Data text: {0}", msg);
                        }
                        Console.WriteLine("---------------");
                    }
                }
    
            }
        }
    }


    Параметры коммандной строки:
    1. IP-адресс интерфейса получения сообщений

    Например: icmp_server.exe 127.0.0.1

    Обращаю внимание, что для работы сервера потребуется запуск с правами Администратора, подробнее: https://docs.microsoft.com/en-us/windows/win32/win....

    Для лучшего понимания, рекомендую (как минимум) ознакомиться с:
    Ответ написан
  • Как разделить на микросервисы список контактов?

    @AVSomov
    Можно выделить несколько вариантов, у каждого есть плюсы\минусы, потому выбор оптимального зависит от конкретной задачи. Первые 2 варианта согласуются с озвученными в вопросе, но не исключаю и 4 вариант.
    1. Модуль списка контактов на клиенте зависит от 3-х сервисов (список контактов, сообщения, анкеты) - проблема в появлении дополнительных зависимостей в клиентском коде, что порой не так просто исправить\обновить и требует согласования контрактов указанных сервисов с клиентским кодом.
    2. Добавление в список контактов кэширующих-полей для соответствующих данных - в данном случае добавляется задача по выработке правил обновления данных в этих полях и их источнику при обновлении. В дополнение может добавиться "лишняя" ответственность к клиенту и\или сервису.
    3. Сервис составного списка контактов, который зависит от сервисов: список контактов, сообщений и анкет - имеем дополнительные зависимости, которые позволяют переместить ответственность по агрегации данных в отдельный сервис и дольше сохранять контракт взаимодействия с клиентами (в данном случае могут использоваться кэширующие-поля как в п.2). К тому же, если со стороны бизнес требований есть "список контактов", то логично, чтобы сервис возвращал весь набор требуемых данных, т.к. способ реализации этой задачи не должен интересовать клиентов сервиса. Но в данном случае предстоит решить задачу недоступности одного из сервисов в процессе обработки запроса (неплохо работает кэширование).
    4. сервис API-шлюз под каждый вид клиента - почти полностью аналогично п.3, с тем отличием, что данный сервис выступает точкой входа для доступа к методам\данным скрывая особенности реализации backend.


    PS: Дополнительные уровни косвенности часто используются для повышения тестируемости, но и оно имеет свою цену.
    Ответ написан
    Комментировать
  • Как загрузить google foto на google disk на win7?

    @AVSomov
    Указанное на скрине приложение предназначено для загрузки данных в облако, а не для экспорта данных из него.
    Просьба ознакомиться с информацией: Как скачать фотографии и видео на устройство и Как скачать свои данные в аккаунте Google
    Ответ написан
  • Существуют ли книги по компьютерным сетям без воды?

    @AVSomov
    Самая актуальная и полная информация "без воды" - стандарты.

    Wiki: https://ru.wikipedia.org/wiki/RFC
    Первоисточник: https://tools.ietf.org/rfc/
    Перевод на русский: rfc2.ru


    PS: Хотя нужно понимать, что многое зависит от реализации, т.к. многое имеет статус "MAY"
    Ответ написан
    Комментировать
  • Может ли камера создать файл объемом больше 4 гб на карте памяти с fat32?

    @AVSomov
    К сведению: https://ru.wikipedia.org/wiki/FAT32
    В целом у данной ФС размер файла не может быть более 4 294 967 295 байт.

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

    Сейчас можете попробовать: https://ru.wikipedia.org/wiki/TestDisk
    Но не совсем ясен текущий статус: "флешка совсем перестала отвечать" - где? на что? Она отображается в диспетчере дисков? (Проблема может оказаться в "железе")
    Ответ написан
    Комментировать
  • Как реализовать интерполяцию точек в 3D?

    @AVSomov
    Правильно заданный вопрос - это уже половина ответа


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

    Указанный метод "Трилинейной интерполяции" может быть использован, например, для получения цвета (или любой другой численной характеристики) у точки в трехмерном пространстве.
    Ответ написан
    Комментировать
  • Ошибка при запуске MariaDB после переноса datadir с HDD на SSD. В чём может быть дело?

    @AVSomov
    Не смущает эта строка?
    дек 10 14:33:41 hostname mysqld[28833]: 2016-12-10 14:33:41 140252996253632 [Warning] Can't create test file /home/ssd/mysql/hostname.lower-test


    Проверьте есть ли права на запись\чтение в /home/ssd/mysql/ у учетной записи, под которой стартует процесс.
    Ответ написан
  • Где ошибка в алгоритме разложения cosx в ряд?

    @AVSomov
    Правильно заданный вопрос - это уже половина ответа

    Чтобы улучшить понимание вопроса:
    1. Для начала укажите, какое разложение в ряд используется? Как вариант, ряд Тейлора: https://en.wikipedia.org/wiki/Trigonometric_functi... (но тогда переменная p должна быть инициализирована значением "-1")
    PS: По возможности: приведите к процедурному стилю. В настоящий момент инициализация теста, расчет и вывод результата - все в одном методе. (сами же легко и запутаетесь)
    Ответ написан
    1 комментарий
  • Как правильно составить многотабличный запрос к БД MySQL?

    @AVSomov
    Ключ к решению лежит в использовании агрегатных функций.
    Первоисточник: dev.mysql.com/doc/refman/5.7/en/group-by-functions...
    или www.mysql.ru/docs/gruber/mg06.html

    Конкретно по указанному запросу нужно применить функцию sum и предложение group by.
    Ответ написан
    Комментировать