Задать вопрос
  • Как открыть все порты в промежутке?

    @res2001
    Переадресация не открывает порты, она разрешает переадресацию трафика с внешнего порта на внутренний адрес:порт.
    Открывает порт приложение, которое работает на компе с указанным адресом и приложение должно запрашивать конкретный порт для открытия.
    Если приложение не запущено, то порт не открыт и вы можете сколько угодно настраивать переадресацию - трафик на закрытом порту никто не примет.
  • Завершается программа на Си из-за одной строчки кода. Что делать?

    @res2001
    noame, Кроме описанной в ответе ошибки, при изменении переменных _dogCoordinatesX и _dogCoordinatesY, нужно проверять их текущее значение на достижение предельных значений.
    Например, если переменная _dogCoordinatesX уже имеет значение 15, а вам надо сделать ее инкремент, то вы должны либо не делать инкремент, либо сбросить значение в 0 и т.п. для всех случаев.
  • Какая временная сложность у простого алгоритма вычисления факториала (О большое)?

    @res2001
    Сергей delphinpro,
    стоит учесть внутреннюю реализацию функции range?

    Если в range используется yeld для возврата промежуточных значений, то в каждом вызове происходит только проверка условия окончания и возврат следующего значения. В этом случае сложность всего алгоритма остается O(n).
    Если в range есть цикл, тогда он возвращает массив последовательных элементов [1; n+1] и дальше цикл итерируется по значениям из массива. В этом случае range вызывается один раз. Тогда сложность будет O(n+n) = O(2n) = O(n)
  • Пишет что повредил кучу? Чего?

    @res2001
    Скорее всего где-то выход за пределы выделенного массива, что может повреждать структуры менеджера памяти.
    С использованием MPI анализ в valgrind может быть не полноценным, т.к. процессы, запускаемые MPI valgrind не будет анализировать.
    Видимо придется искать ошибку в "ручном" режиме.
  • Почему не создается канал в си?

    @res2001
    Nulltiton, Значит вы готовы работать с кодом. Вопрос был об этом.
    Часто тут пытаются через вопросы добиться того, что бы кто-то другой исправил все ошибки и довел код до ума.

    Вообще у микрософта хорошая документация по WinAPI, так же в документации есть много примеров использования функций WinAPI. Пользуйтесь.
    Код из книги - не плохо для начала. Но что бы понимать как оно работает, надо все же познакомиться с механизмами ОС, которые используются в коде. Тогда вы начнете понимать что делает код.
    Кстати, что за книга? По автору не удалось нагуглить :)
  • Что эффективней, чтение из файла или массив?

    @res2001
    Данила Румянцев, Нет однозначного ответа на этот вопрос. Выбор между памятью и диском будет зависеть от конкретной задачи. Вы, как программист, должны понимать плюсы и минусы обоих подходов и выбирать для решения задачи тот что будет оптимальным для данной конкретной задачи. Можно и комбинировать подходы.
  • Почему не создается канал в си?

    @res2001
    Nulltiton,
    Попытался убрать return у GetLastError, однако ничего также не изменилось

    Ничего и не должно изменится.
    GetLastError - просто возвращает код ошибки последней системной функции. Этот код надо сохранить в переменную и вывести на экран. Чтоб было совсем хорошо, можно получить от системы текстовое описание ошибки и вывести его, вместо числового кода. Пример вывода текстовой ошибки можно увидеть тут: https://learn.microsoft.com/en-us/windows/win32/de...
    Так вы узнаете, какая ошибка произошла при вызове системной функции и уже можно будет исправлять конкретную ошибку. А пока можем только гадать.

    // формируем командную строку 
      printf(lpszComLine, ...);

    Вы не правильно используете printf выше. https://en.cppreference.com/w/c/io/fprintf

    Вообще это ваш код? Если не ваш и вы не в состоянии его отлаживать, то обсуждать не чего.
  • Как подключиться по RDP к виртуальной винде через vpn?

    @res2001
    Явно проблема не в ВПН.
    IP адрес виртуальной винды находится в той же IP подсети, что адрес хоста этой ВМ (или другой физической машины в этой сети)?
  • Почему не создается канал в си?

    @res2001
    Nulltiton, 1. Стоит начать с того, что бы добиться читабельного вывода в консоль. А уж потом решать проблемы с процессами и каналами.
    По умолчанию кодировка консоли CP866, а ваша программа, похоже выводит в Unicode.
    Попробуйте переключить консоль в UTF8, может поможет. Команда: chcp 65001
    chcp без аргументов выведет текущую кодировку консоли.
    2. У вас GetLastError стоит в return из main, Это значит, что результат не будет выведен на экран, а вернется как код ошибки завершения процесса. Код ошибки можно проверить в батнике (в котором вы будете запускать вашу программу) с помощью конструкции if errorlevel. Описание можно нагуглить, например тут: https://ss64.com/nt/errorlevel.html
    Но проще выводить текстовое сообщение об ошибке в самой программе. Так же от системы можно получить текстовое описание ошибки, а не только код ошибки. Смотрите документацию по GetLastError.
  • Как вывести два сервиса в сеть из одного/двух ip?

    @res2001
    BHA2PE, Еще вариант - наверное все известные веб сервера могут одновременно обслуживать несколько сайтов с разными доменными именами, тот же apache и ngnix.
    Но сейчас такой подход не популярен, т.к. большинство использует готовые преднастроенные службы в контейнере докера и т.п. А это по определениею уже разные виртуальные хосты и веб сервера.

    Вариант с контейнерами более безопасен, но требует больше ресурсов.
  • Как вывести два сервиса в сеть из одного/двух ip?

    @res2001
    BHA2PE, Вы верно рассуждаете.
    Если все ваши сервисы - это веб сервисы со стандартными портами. То в этом случае пользователь должен сам указать правильный порт в URL.
    Например: https://mail.domain.ru:8080/; https://other_services.domain.ru:8090/; https://www.domain.ru

    Другой вариант - поставить промежуточный веб прокси, например nginx, и им разруливать разные доменные имена на разные локальные сервера. Тогда снаружи у вас будет использоваться один и тот же порт и надо настроить его перенаправление на nginx. Т.е. в такой схеме разруливанием потоков будет заниматься не роутер и NAT, а nginx.
  • Почему мой код считается медленным?

    @res2001
    Wataru,
    QuickSelect, если его попросить k-ый c конца элемент, как раз положит максимальные k-1 справа от него. Ровно как в задаче и надо. И все это за O(n) в среднем.

    Согласен. Но проблема о которой я писал, связана с тем, что по условию задачи надо вывести сами числа (а не количества вхождений), а в частично отсортированном массиве гистограмм индекс в массиве уже перестанет быть искомым числом. Поэтому число то же надо будет хранить в массиве гистограмм, т.е. это будет массив структур в терминах С/С++ ( struct gist_s {int val, count; };). Это несколько увеличивает затраты по памяти в 2 раза, но это не критично.
  • Почему мой код считается медленным?

    @res2001
    Можно и без хэш таблицы.
    По условию каждый элемент массива лежит в диапазоне [-10^4; 10^4].
    Это всего лишь 20001 возможное значение - не много. Можно посчитать гистограмму в массиве из 20001 элемента за один проход по исходному массиву. Дальше с помощью QuickSelect выбрать k наибольших значений гистограммы. Индекс в массиве гисторамм - это само число.
    Правда нужно учесть, что числа могут быть отрицательные, а индекс - >=0. И еще QuickSelect частично сортирует массив, так что надо с этим то же что-то делать.
  • Как избежать коллизии по данным?

    @res2001
    Pantuchi, Видимо надо пересмотреть структуру базы. Если у вас есть набор уникальных свойств, который лежит в другой таблице, то эти свойства надо перенести в одну таблицу с объектом и по ним делать уникальный индекс.
    Все остальные не уникальные свойства, пусть лежат в другой таблице.
    На сколько я понял уникальность вы обеспечиваете кодом приложения. При таком подходе подобные ошибки вполне закономерны.
  • Как избежать коллизии по данным?

    @res2001
    Pantuchi, Значит уникальный индекс есть? Тогда не вижу тут проблемы.
  • Имеется ли в C++ данный синтаксис?

    @res2001
    В C++ может и нет. Но это явно Си, там все это есть. VNET_FEATURE_ARC_INIT - это макрос, а дальше инициализация полей структуры.
  • Как переместить папку 'Загрузки'?

    @res2001
    Мало что понял, но немного прокомментирую.
    У папок нет типа. Это просто каталоги в файловой системе, обычные каталоги.
    Иконка, псевдоним и т.п., что может отображаться в проводнике вместо имени каталога задаются в файле desktop.ini, который лежит в этом же каталоге. Это скрытый файл, поэтому по умолчанию он в проводнике не виден. Чтоб его увидеть надо включить отображение скрытых файлов. Этот файл можно удалить, тогда все настройки, которые есть в нем для папки не будут применяться в проводнике.
    В общем, я думаю, вам надо удалить (или переименовать, чтоб была возможность вернуть обратно) файл desktop.ini из каталога с профилем пользователя и посмотреть что получится.
  • Как изменить локальную папку пользователя в Windows 11?

    @res2001
    Анастасия, Вам нужно начать все сначала.
    1. Удалить/переименовать каталог с профилем локального пользователя MissAnastasiia
    2. Удалить профиль доменного пользователя: его каталог с профилем и ветку профиля в реестре в ветке HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
    Удалив ветку в реестре вы заставите винду при следующем входе доменного пользователя создать новый профиль. А т.к. папка MissAnastasiia уже будет не занята, то винда автоматически займет ее (создаст профиль в ней).
    Если вам для чего-то дорог каталог с доменным профилем, то его можно не удалять, а переименовать.
    Векту в ProfileList то же можно не удалять, а переименовать, добавив к SIDу в начале что-нибудь. На сколько я помню, добавление чего-то в конце не дает нужного эффекта (нужно что-бы винда не нашла запись в реестре о профиле).
    2.1 Есть смысл удалить/переименовать и запись в реестре для локального пользователя. Т.к. если ее оставить в текущем состоянии, то винда не будет пытаться создать каталог с профилем вновь, т.к. считает, что профиль должен быть (запись о профиле в реестре есть).
    3. Залогинится доменным пользователем
    4. Перенести данные профиля из старого локального профиля (п.1) в новый (п.2)
    5. Пп.1 и 2 надо делать логинясь в винду дургим пользователем не своим локальным и не своим доменным.

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

    @res2001
    Adamos, Wataru, Ну да, облажался. С устатку не до конца въехал в задачу.
    В итоге с Хэммингом классная идея.