• Почему strcmp неправильно сравнивает кириллицу?

    @res2001
    Developer, ex-admin
    Все просто (сложно) - кодировка введенных символов не совпадает с кодировкой исходников программы.
    Вы видимо пишите консольную программу под виндой - тут это типичная проблема для новичков, т.к. в русской винде в консоли возможны 2 стандартные кодировки cp1251 и cp866, причем по умолчанию используется cp866 (по умолчанию - это когда вы просто запустите cmd.exe). Проверить текущую установленную кодировку консоли из самой консоли можно командой chcp, ею же можно и изменить кодировку.
    Кодировка исходников может быть вооще какой угодно, кроме вас ее никто не знает.

    Для простоты, чтобы у вас заработала программа перекодируйте исходники в cp866 и пересоберите ее.
    Но это будет работать лишь до той поры пока вы запускаете программу на русской винде и пока кодировка консоли в ней cp866.

    Нормальный подход в этом случае:
    1. писать исходники в UTF8,
    2. узнать текущую кодировку консоли,
    3. перед выводом любого текста перекодировать текст из UTF8 в кодировку консоли,
    4. при вводе текста с консоли перекодировать из кодировки консоли в UTF8, и только после этого с текстом можно совершать какие-то действия, например strcmp().
    5. в коде для хранения строк использовать wchar_t и wstring, а не char и string.
    Ответ написан
    1 комментарий
  • Какие паттерны использовать для игровых ботов?

    @res2001
    Developer, ex-admin
    Массив/хэш таблица с функциями реализующими ветки switch, по переменной выбираете из массива/хэша нужную функцию и вызываете ее. Весь switch расползется по разным функциям.
    Не силен в JS, поэтому без кода.
    Ответ написан
  • Стоит ли это заучивать?

    @res2001
    Developer, ex-admin
    Что и Фурье выучил? А префиксные и суффиксные деревья?
    Обычно заучивать вообще никогда и ничего не нужно - нужно понимание.
    Заучивать нужно в том случае, если использовать нужно уже сейчас, а времени на доскональное изучение мало, или если теория, лежащая в реализации алгоритма, это целая наука, владение которой для ваших задач не нужно.
    Ответ написан
    1 комментарий
  • Можно ли подключить к одному iSCSI несколько серверов потребителей?

    @res2001
    Developer, ex-admin
    Подключить можно. Но файловая система на общем томе должна быть кластерной, такие ФС как раз спроектированы для подобного использования. NTFS, Ext4 и т.п. не подходят. Например VMFS от VMWare кластерная.
    Если вы подключите несколько потребителей к разделу iSCSI с обычной ФС, то достаточно быстро ФС упадет.
    Ответ написан
    2 комментария
  • Что же такое typedef class, typedef struct?

    @res2001
    Developer, ex-admin
    Все то же самое, что и для других типов.
    Эти записи идентичны:
    typedef class ca {
    ...
    } CA;


    class ca {
    ...
    };
    typedef ca CA;
    Ответ написан
    Комментировать
  • Создание папок на каждый день с помощью .bat?

    @res2001
    Developer, ex-admin
    Если упрощенно, то можно так:
    @echo off
    for /l %%a in (1,1,12) do for /l %%b in (1,1,31) do ( md %%a.%%b\wb 2>nul & md %%a.%%b\zaliv 2>nul)

    Но здесь принимается, что в каждом месяце 31 день, а так же не добавляется слева не значащий 0 для расширения номера месяца/дня до 2 символов.
    По простому расширить до двух символов можно используя неfor /l, а обычный
    for %%a in (01 02 03 04 05 ...) do
    Можно, конечно написать функцию, расширяющую строку до заданной длины нужным символом, но лень возиться. Можете погуглить по "cmd padding string", на сером форуме и ру-борде толковые ветки по батникам.

    Задать точное количество дней в месяце можно, используя заранее определенные списки дней для каждого месяца, что-нибудь типа такого:
    setlocal enabledelayedexpansion
    set "mday1=01 02 03 04 05 ..." :: в mday1 - 1 - это номер месяца (январь)
    set "mday2=01 02 03 04 05 ..."
    :: и так далее до mday12
    ...
    for %%b in (!mday%%a!) do ...

    Если не заморачиваться с расширением номеров до двух знаков, то в mdayN можно задавать просто максимальный номер дня и использовать в for /l %%b in (1,1,!mday%%a!) do
    Ответ написан
    Комментировать
  • Как настроить маршрутизацию?

    @res2001
    Developer, ex-admin
    Ответ смотри в комментариях к вопросу.
    Ответ написан
    Комментировать
  • Как правильнее будет использовать оператор if?

    @res2001
    Developer, ex-admin
    Всегда, когда это возможно, использую второй вариант - это позволяет избежать лишних фигурных скобок, а как следствие лишней вложенности, отступов и т.п., код становится более читабельный и простой.
    Но, конечно, в этом случае, в теле if должна быть передача управления куда-то (на обработчик ошибок, return и т.п.).
    Часто делаю такую конструкцию:
    do {
    ...
    if(result == error) break;
    ...
    } while(0);
    if(result == error) {
    обработка ошибок
    }

    В этом случае обработка ошибок находится в одном месте. Кроме того do..while(0) позволяет не использовать goto - вместо него используется break. Часто видел подобную схему в около системных сервисах и утилитах, но с использованием goto. У меня аллергия на goto, поэтому предпочитаю заворачивать в do..while(0).
    Ответ написан
    Комментировать
  • Как с помощью BAT в dialog вывести значения в файл?

    @res2001
    Developer, ex-admin
    Ваш dialog должен каким-то образом сообщать наружу результаты работы.
    Обычно в консольных утилитах используют либо код возврата (результат return в main), либо, если возвращаемой информации много - текстовый вывод в консоль. В батнике вывод в консоль и код возврата можно обрабатывать так как вам надо.
    То же самое можно и в dialog делать, не зависимо от того, что это не консольное приложение.
    Я бы и на шелл мог бы сделать

    Собственно в никсах все то же самое - вызываемая программа, как-то должна сообщить вызывающей результаты своей работы. Стандартные варианты что в винде, что в никсах одинаковые.
    Ответ написан
  • Можно ли на ЕГЭ по информатике в задании 6 и 16 просто переписать код в редактор и запустить и сразу получить готовый правильный ответ?

    @res2001
    Developer, ex-admin
    Если на компах на экзамене будет IDE и компилятор/интерпретатор, то запускайте.
    Но вообще код такой, что его не сложно разложить на бумеге для конкретных входных данных. По времени будет, возможно, быстрее, чем вводить код в IDE. В приведенном 6 задании даже писать ничего не нужно - ответ очевиден.
    Ответ написан
    Комментировать
  • Как сопоставить 2 массива в цикле по ключам?

    @res2001
    Developer, ex-admin
    В массивах С++ нет ключей, там есть числовые индексы элементов от 0 до N-1.
    Ответ написан
    Комментировать
  • Почему при делении 5/9 получается 0.55555....6?

    @res2001
    Developer, ex-admin
    Это проблема компьютеров в принципе - они конечные и не могут хранить бесконечные вещественные числа. Вещественные числа в компе, как правило, ограничены 8 байтами (могут быть и другие варианты). Так что по любому приходится округлять бесконечные дроби, а так же любые другие, которые не влазят в разрядную сетку. Кроме того есть и другие проблемы, вытекающие из ограниченности компьютерного представления чисел.

    Встречный вопрос - а как бы вы отобразили в калькуляторе винды бесконечную дробь?
    Ответ написан
    Комментировать
  • Как редактировать загрузчик Windows + Linux?

    @res2001
    Developer, ex-admin
    Обычно, если linux ставится второй системой после винды, то используется grub в качестве загрузчика.
    Есть такая графическая приблуда для линукса boot_repair. Использовал ее в убунту.
    Если у вас 2 диска и линукс стоит на втором, то он скорее всего создал на своем диске загрузочный раздел. В этом случае в БИОС/UEFI можно выбрать зугрузку с другого диска. Тогда сможете попасть в линукс (но не в винду) и там воспользоваться boot_repair. После восстановления у вас появится возможность выбора в какую ОС загружаться.
    Если диск один, то можно сделать live flash с линуксом загрузиться с нее и там запустить boot_repair.
    На крайняк можно и виндовый загрузчик настроить на загрузку линукса.
    Ответ написан
    Комментировать
  • Как перевести ANSI в UTF-16 LE?

    @res2001
    Developer, ex-admin
    В WinAPI MultiByteToWideChar доступна для всех языков.
    Ответ написан
  • Как настроить маршрутизацию сети с openvpn?

    @res2001
    Developer, ex-admin
    1. У вас на openvpn сервере и на клиенте винда? Какие версии и там и там? Если Home или Pro, то надо включить маршрутизацию: параметр в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter (REG_DWORD) выставить в значение 1 и перезагрузиться. На серверной винде маршрутизация обычна уже включена.
    2. на openvpn сервере в клиентский конфиг (находящийся в каталоге C:\\OpenVPN\\ccd) добавить директиву:
    iroute 192.168.1.0 255.255.255.0
    Это добавит на openvpn сервере маршрут к сети клиента при подключении клиента (при отключении - удалит).
    3. в основной конфиг openvpn сервера добавить добавить директиву:
    push "route 192.168.0.0 255.255.255.0"
    Это добавит на клиенте маршрут до сети за сервером при подключении.
    4. На остальных компах за сервером стоит шлюзом по умолчанию интернет роутер, поэтому они все пакеты, предназначенные клиентской сети шлют на роутер, а не на сервер opewnvpn. Вам надо добавить в таблицу маршрутизации на каждом компе в сети (кроме openvpn сервера) маршрут до клиентской сети командой:
    route -p add 192.168.1.0 mask 255.255.255.0 192.168.0.2

    Маршрут не обязательно добавлять руками, можно политиками AD или опциями при раздаче адреса в DHCP.
    5. На компах в сети за клиентом происходит то же самое, что и в сети за сервером, только там маршрут будет немного другим:
    route -p add 192.168.0.0 mask 255.255.255.0 192.168.1.2
    Ответ написан
    7 комментариев
  • Вопрос о использовании mutex и lock_guard?

    @res2001
    Developer, ex-admin
    И получается участок кода(с создания переменной и до вызова диструктора) код будет выполняться только одним потоком?

    Как напишете, так и будет выполнятся.
    По моему не зачем зашивать lock_guard в структуру/класс, он должен быть в функции/методе тут же создаваться и удаляться максимально быстро. Если это приведет к дополнительному коду - это небольшая расплата за потокобезопасность.
    Ответ написан
    Комментировать
  • Как настроить планировщик задач Windows, чтобы задачи выполнялись в фоне?

    @res2001
    Developer, ex-admin
    Как минимум можно упрятать все команды в 1 батник и запускать батник, а не команды по одной. Так у вас экран будет моргать 1 раз, а не 5.
    Если proxy.reg у вас не большой, то можно его расписать с помощью команды reg /?. Думаю несколько команд reg будут выполняться быстрее, чем одна regedit и возможно морганий видно не будет.
    Дополнительно можно скрыть окно батника с помощью скрипта на js/vbs - гуглите, это простой известный вариант. Будете в задаче запускать не батник, а этот скрипт, а из скрипта уже батник.

    "Скрытая задача" - скрывает задачу из списка задач в менеджере задач, а не то что вы подумали. Чтоб отобразить скрытые задачи - Вид -> Показать скрытые задачи :)
    Ответ написан
    Комментировать
  • Как изменить OVN подключение так, чтобы в качестве IP-адреса сервера использовался 127.0.0.1:1194?

    @res2001
    Developer, ex-admin
    Указать в параметре remote
    Ответ написан
    Комментировать
  • Как найти программу сигнализацию?

    @res2001
    Developer, ex-admin
    При разблокировке генерируются некоторые события в журнале винды, ищите нужные события, создаете задачу в шедулере, в триггере указываете "по событию" и настраиваете на найденное событие.
    Проигрывать музыку можете спомощью любого аудио проигрывателя, который умеет принимать проигрываемый файл в параметре командной строки и после проигрывания завершаться (Это умеют, наверное, все. Нужно изучать параметры командной строки проигрывателя).
    Ответ написан
    Комментировать
  • Stunnel4.service failed как исправить?

    @res2001
    Developer, ex-admin
    Конфиги в студию. Приведенные ошибки на стороне клиента или сервера?
    Ошибки, видимо 2:
    Unknown TCP service "993 ."

    Видимо описан лишний сервис в конфиге, уберите его.
    [!] Service [openvpn]: Cannot resolve accept target

    Доступен ли openvpn по адресу и порту, указанному во фразе accept?
    Ответ написан
    Комментировать