• Из за чего в консоли вместо русского языка выводятся вопросительные знаки?

    @res2001
    Developer, ex-admin
    Это практически первый вопрос, которым задаются юниоры С++, когда пытаются запустить свою первую консольную программу под виндой.
    Ответов на него тут уже была целая пачка.

    Суть в том, что в виндовой консоли может быть 2 русские кодировки (cp866 и cp1251) (не уверен, но может быть консоль винды научилась уже нормально работать с UTF8, если научилась, то считайте, что добавилась еще одна кодировка). Причем по умолчанию используется cp866. Кодировку консоли можно менять из самой консоли или программно.
    При выводе текста в консоль никаких преобразований кодировок не происходит. В какой кодировке у вас написаны исходники - та и выводится. И если кодировка консоли и кодировка исходников не совпадают, то будет не читабельный текст.

    Самый оптимальный и самый сложный вариант - в программе узнать кодировку консоли и перед выводом конвертировать текст в эту кодировку. Так же обратную операцию производить при вводе. В этом случае исходники программы лучше всего писать в UTF8 и использовать wchar_t.

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

    Самый надежный вариант - не используйте русский в консольных программах - только английский. Сомневаюсь, что вам придется когда-то писать профессиональные консольные утилиты, которые бы умели адаптироваться к разным кодировкам, так что, возможно, нет смысла углубляться в эту тему. В GUI приложениях этой проблемы нет.
    Ответ написан
    1 комментарий
  • Тихая установка (unattended install). Как установить программу BlackVue Viewer в тихом режиме?

    @res2001
    Developer, ex-admin
    Если сам установщик не умеет удалять (обновлять) предыдущие версии, то делайте это за него. Что вам мешает проверить установлена ли уже предыдущая версия и так же по тихому ее удалить.

    Запустите установщик с ключом /? - возможно у него есть страница справки.
    Если нет ищите ключи установщика в документации или на сайте производителя, может быть на форуме разработчиков и т.п.
    Ответ написан
    Комментировать
  • Как добавить библиотеку в qt creator?

    @res2001
    Developer, ex-admin
    Что в пакетах библиотеки нет? Я бы установил библиотеку из пакетов. Обычно для использования библиотеки в своей программе вам требуется так же и ее dev пакет.

    Обычно приличные библиотеки ставят в своем dev пакете и средства для поиска/использования себя. В линуксе это обычно конфигурационный файл для pkg-config. В cmake использовать pkg-config можно с помощью одноименного модуля.
    Если библиотека поддерживает cmake, то она ставит поисковые скрипты для find_package.
    Ответ написан
    2 комментария
  • Как располагаются в памяти элементы массива обьектов класса?

    @res2001
    Developer, ex-admin
    Отличный вопрос!

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

    Как эта проблема решается в с++?

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

    @res2001
    Developer, ex-admin
    Область справа на панели задач это "трей". И это не область скрытых задач. В винде есть специальный API для того, что бы приложение могло размещать свою иконку в трее. Приложение должно само уметь это делать (или это можно сделать с помощью третьего приложения см. ответ benipaz ). cmd.exe такого делать не умеет.

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

    У меня есть bat скрипт запускающийся при старте Window 10

    Почему бы не завершать этот стартовый скрипт? Тогда он не будет висеть в панели задач.
    Другой вариант - можно запустить этот скрипт из планировщика по событию логин пользователя. Задания из планировщика по умолчанию выполняются в скрытом режиме.
    Так же есть другой вариант - запустить батник в скрытом режиме через промежуточный небольшой скрипт на JavaScript или VBScript. Примеры легко гуглятся. При этом можно внедрить JavaScript скрипт в батник таким образом физически оба скрипта будут находится в одном файле. Технику внедрения JavaScript скрипта в батник то же можно нагуглить, ничего сложного там нет.
    Ответ написан
  • Если в вакансии указано "наличие профильного технического образования", то важно ли, какой вуз заканчивать - престижный или региональный?

    @res2001
    Developer, ex-admin
    Если бы им нужны были выпускники какого-то конкретного вуза (и факультета) они бы об этом так и писали. Такие узкоспециализированные вакансии то же встречаются.
    Ответ написан
    Комментировать
  • Локальный пользователь System. Зачем (и нужны ли) ему полные NTFS права на пользовательские папки?

    @res2001
    Developer, ex-admin
    что это сделано для процессов, работающих от имени данного пользователя

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

    Многие службы и задания из планировщика запускаются от имени SYSTEM. В каталоге пользовательского профиля не стоит удалять SYSTEM там где он есть по умолчанию. В каталогах, которые вы создаете самостоятельно вне профиля вы можете регулировать права как вам угодно.
    Ответ написан
    Комментировать
  • Как работает эта рекурсия?

    @res2001
    Developer, ex-admin
    По идее в foo с одним параметром перед return нужно добавить строку:
    std::cout << sizeof(value) << std::endl;
    Тогда будут выводится все параметры.
    Смысл рекурсии в том, что на каждом шаге выводится первый параметр и убирается из списка, обрезанный список параметров передается дальше по рекурсии. Пока параметров несколько вызывается функция со списком, когда параметр становится один (последний), вызывается foo с одним параметром и рекурсия завершается.
    Сейчас у вас foo с одним параметром не выводит ничего, поэтому последний параметр как бы игнорируется.
    Ответ написан
    Комментировать
  • Как сменить язык терминала?

    @res2001
    Developer, ex-admin
    В языковых настройках есть такая штука, как язык по умолчанию для не Unicode программ. Попробуйте тут поставить английский. Иногда, после обновлений, эта настройка слетает в вариант по умолчанию.
    Вообще установите язык интерфейса винды на английский - это решит проблему в корне.
    Ответ написан
    1 комментарий
  • Как сделать так что бы html читал переменные из батника??

    @res2001
    Developer, ex-admin
    Подменяете в HTML файле некую кодовую строку на значение переменной окружения, сохраняете в новый временный файл и открываете его в браузере. Чем подменять - дело техники, я бы видимо использовал sed. Будет такой двухстрочный батник.
    Ответ написан
  • Как происходит соединение peer-to-peer, если оба человека сидят на внутренних ip (за NATом)?

    @res2001
    Developer, ex-admin
    Либо дырявят свой НАТ с помощью UPnP, либо используют для связи UDP, а координаты второй стороны получают от общего сервера. Примерно по такой же схеме работает VoIP за NATом (смотри протокол STUN).
    Ответ написан
    Комментировать
  • На чем написать кроссплатформенный GUI?

    @res2001
    Developer, ex-admin
    Самое выгодное - это то что вы лучше всего знаете.
    Если важна производительность то берите С++ или другой компилируемый язык. Но это на самом деле сильно зависит от задачи, где-то и python с php вполне хватает. Сам по себе GUI не требует особой производительности (если вы обычное приложение пишите, а не игрушку на 120FPS).
    Можете юзать Qt на python и не слезать со своего любимого коня.
    Ответ написан
    Комментировать
  • Пишу кейлоггер на c++ и встретился с ошибками. Как их пофиксить?

    @res2001
    Developer, ex-admin
    Там где у функций WinAPI на входе параметр типа xxxWSTR - значит она ждет от тебя wchar_t, а не обычный char.
    Для большинства функций WinAPI работающих со строками есть 2 варианта одной и той же функции, один вариант принимает char, другой вариант wchar_t. Внутри винды используется wchar, так что есть смысл и в своих программах всегда использовать wchar, что бы избежать дополнительных преобразований.
    Ответ написан
  • Какой компилятор ОС Linux переводит написанный мной код в двоичный код?

    @res2001
    Developer, ex-admin
    php - интерпретируемый язык. Т.е. он не переводится в маш.код. Исходный код на PHP исполняет интерпретатор языка php.
    HTML - вообще не имеет отношения к маш.кодам - это язык разметки. Его интерпретирует браузер, строит на его основе DOM и рисует веб страничку.
    Ответ написан
    Комментировать
  • Как присовить WCHAR* константное значение?

    @res2001
    Developer, ex-admin
    Объявите массив
    WCHAR targetWindowName[]
    и скопируйте туда свою константу используя, например, std::wcsncpy
    Ответ написан
    Комментировать
  • Как избавиться от червя или что это за штука?

    @res2001
    Developer, ex-admin
    Вот тут пишут, что JRT не поддерживается разработчиком с 2018 года.
    Комп может "тупить" по разным причинам, вирусы это только одна из них и, похоже, не самая распространенная по нынешним временам.
    Когда комп начинает тупить попробуйте начать с менеджера задач и посмотреть какой процесс отжирает процессорное время и создает дисковую нагрузку. Найдете виновника, тогда можно будет подумать, что с ним делать. В менеджере задач можно добавить колонку, содержащую командную строку процесса, там вы сможете увидеть путь где лежит исполняемый файл процесса и параметры, с которыми он запускается.
    Так же комп может тупить, когда сыпется диск. Есть смысл провести полный тест поверхности диска.
    Ответ написан
    4 комментария
  • Есть ли возможность ускорить соединение если подключиться к провайдеру несколько раз?

    @res2001
    Developer, ex-admin
    Собирал подобный конструктор, но цели были другие - отказоустойчивость в первую очередь, балансировка нагрузки во вторую.
    Собирал на FreeBSD + 2 разных провайдера. Вся регулировка трафика проводилась правилами ipfw (это фаервол FreeBSD) + множественные таблицы маршрутизации. При мне схема успешно отработала лет 5. Сейчас не знаю, жива ли.
    Гуглите по "Policy-based Routing" для начала.
    Ответ написан
    Комментировать
  • Где хранится nullptr? Для разных программ она разная?

    @res2001
    Developer, ex-admin
    nullptr - сам по себе это константа (сейчас не важно ее реальное значение). Где хранится, например, 2 или 100500?
    Вот когда вы сделаете присваивание:
    void *ptr = nullptr;
    То в указателе ptr будет хранится значение nullptr.
    Если посмотрите асемблерный код подобного присваивания, то там будет что-то вроде:
    mov ax, 0;
    В данном примере считаю, что значение nullptr - это 0. Тут видно, что nullptr хранится прямо в коде и является одним из операндов ассемблерной команды mov.
    Про то что хранится в памяти, куда указывает nullptr (и ptr из примера), написал Mercury13
    Ответ написан
    Комментировать
  • Есть ли механизм работы с сокетами в C++?

    @res2001
    Developer, ex-admin
    Ни в одном языке нет подобных функций. Просто потому, что это API операционной системы, а ОС, обычно пишут на Си. Но даже в Си их нет - это функции ОС.
    Но полно библиотек, которые оборачивают ОС API в классы. Пользуйтесь. Их достаточно много. Хорошие варианты привел @gbg

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

    @res2001
    Developer, ex-admin
    Числа с плавающей точкой по определению приближенные. Каждая операция над подобными числами вносит свою погрешность в результат. Так что не стоит удивляться. В какую сторону и на сколько будет погрешность, думаю, это можно посчитать, но для этого надо копнуть глубже.
    Для проверки можете просто вывести результат 2 сложений, потом трех, ... А так же проверьте результат умножения.
    Тут много интересного можно для себя открыть.
    Так же небезъинтересно сравнить результат одних и тех же вычислений над double и float.
    Даже и не надейтесь в плавающей точке получить какой-то точный результат. Если нужна точность, то надо использовать фиксированную точку.
    Ответ написан
    Комментировать