• Как получить данные из сайта в C++?

    @res2001
    Developer, ex-admin
    Так же, как и на любом другом языке программирования - отправить HTTP запрос на сайт, получить и распарсить ответ. Для этого есть много библиотек, с помощью которых это можно сделать достаточно легко.
    Так же можно сделать и без сторонних библиотек, но это будет уже гораздо сложнее и придется во всем разбираться самому.
    В самом языке С++ встроенных средств для этого, конечно, нет.
    Ответ написан
    Комментировать
  • Каковы бест практикс структуры каталогов и файлов программы в Windows?

    @res2001
    Developer, ex-admin
    Например тут: https://en.wikipedia.org/wiki/Directory_structure
    Встречал похожий более подробный документ где-то на сайте микрософта, но сейчас не нашел.
    Если кратко:
    1.программу ставить в "Program Files" в соответствии с платформой. Внутренняя структура исполняемых файлов и библиотек - на ваше усмотрение. Если вы используете кучу динамических библиотек, то есть смысл разнести их по подкаталогам. Если у вам только небольшая кучка - могут лежать в одном каталоге. Это на самом деле не важно и никому не интересно.
    2.Общие настройки программы, которые распространяются на всех пользователей: в реестр в HKLM и/или в ProgramData.
    3.Пользовательские настройки программы: в реестр в HKCU и/или в AppData.
    4.Пользовательские временные файлы: в %TEMP%
    5.Файлы проектов или сохранения: в %USERPROFILE%\Documents
    Ответ написан
    2 комментария
  • Почему у меня постоянно кончается место на дисках C и D?

    @res2001
    Developer, ex-admin
    без возможности модернизации с закрытой намертво нижней крышкой

    Это как интересно?
    Намертво, это только если корпус цельнометаллический, таких ноутбуков я что-то не встречал в природе. Остальные варианты разбираются.
    У меня то же ноут от леново без отсеков внизу, но вполне успешно заменен системный диск, установлен второй и добавлена память. На ютубе полно роликов о том как разбирать разные модели ноутов.

    По сути вопроса:
    Рекомендую пользовательский профиль не оставлять на системном диске. Многие программы пишут свои временные файлы в каталоги профиля, они могут занимать очень много места. По поводу методов переноса профиля писал тут несколько раз когда-то.
    Устанавливаемый софт ставить на другой диск особого смысла нет - обычно софт занимает не так много места, чем файлы проектов и временные файлы. Если софт влазит на системный диск, то там ему и место.
    120 Гб для системного раздела Вин10 - это мало. Пока не замените системный диск попробуйте перенести файл подкачки с системного диска на другой, где больше емкость. На системном вообще его запретить. На системном диске всегда должно быть свободное место, иначе винда может перестать загружаться.
    Пользуйтесь виндовым мастером очистки, он стал уже достаточно продвинутым.
    Ответ написан
    Комментировать
  • Ограничение доступа в интернет клиентам OpenVPN?

    @res2001
    Developer, ex-admin
    добавляя опции

    Это странно, мягко говоря. Похоже вы добились прямо противоположного. Опция
    push redirect-gateway def1 bypass-dhcp
    Делает ВПН сервер шлюзом по умолчанию на клиентах. Так что интернет у клиента будет идти через ВПН.
    Вторая опция просто добавляет DNS сервер клиенту.
    Что бы клиент использовал свой интернет - удалите обе опции из конфига сервера.

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

    Включение NAT на ВПН интерфейсе то же не обязательно. Использовать его или нет - зависит от текущих настроек сети за клиентом и сервером и от того для чего вы используете ВПН.
    Ответ написан
  • В каких случаях лучше использовать wchar_t, char16_t, char32_t вместо char в C++?

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

    @res2001
    Developer, ex-admin
    Непосредственно вводом/выводом занимается ОС. Стандартная библиотека С/С++ использует API ОС для ввода/вывода.
    Ответ написан
    Комментировать
  • Воспроизведение звука из буфера без сохранения?

    @res2001
    Developer, ex-admin
    Если вы не программист - никак.

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

    @res2001
    Developer, ex-admin
    SMART всегда возвращает физическое состояние диска. Фактически состояние SMART хранится на контроллере диска, так что ПО тут значения не имеет.
    У вас начались переназначения секторов. Это происходит, когда какие-то сектора на диске выходят из строя, в этом случае доступ к ним блокируется контроллером и вместо них назначаются другие (резервные) сектора. Резервных секторов ограниченное количество.
    Пока что у вас только 3 переназначения (VALUE), предельное количество переназначений 36 (THRESH). Когда количество переназначений достигнет этого числа, то переназначать уже будет нечего, тогда контроллер диска будет возвращать ошибки чтения в ОС.
    Еще какое-то время диск может пожить. Но не известно как быстро он исчерпает все переназначения.
    Так что лучше слить с него все что можно и заменить.

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

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

    Без указания - никак.
    Но указание в той или иной форме есть.
    Если внутренняя сеть имеет серые адреса, то на роутере настроен NAT и там прописано правило перенаправления портов - это правило и есть указание локального адреса.
    Если внутри сети используются белые адреса (актуально для IPv6, ну и в IPv4 иногда такое то же можно встретить), то таблица маршрутизации содержит соответствующие правила.
    Ответ написан
    Комментировать
  • Как сконнектить два приложения без общего сервера?

    @res2001
    Developer, ex-admin
    Если речь идет о взаимодействии в рамках одной сети WiFi - то нет проблем. Используйте широковещательные пакеты для уведомления других устройств, что в сети есть устройство, готовое работать по вашему протоколу.
    Если это более общая задача, не привязанная к одной сети и WiFi, то даже если устройства будут знать адреса друг друга (не важно каким способом), могут возникнуть проблемы с доступом к устройству из-за оператора связи, т.к. в сотовых сетях обычно используется NAT оператора, который препятствует прямому доступу из интернета к устройству (NAT как правило включен в любом WiFi роутере и т.п.). В этом случае придется использовать какой-либо сервер в интернете со статическим адресом.
    Существуют варианты обхода NAT, но они так же требуют сервера для инициализации соединения, а затем уже устройства могут работать напрямую. Подобные техники используются, например, в VoIP. Гуглите по протоколу STUN.
    Ответ написан
    2 комментария
  • Как использовать юникод в консоли windows с wstring?

    @res2001
    Developer, ex-admin
    Аргументы командной строки не обязательно будут в 866 кодировке, могут быть и в 1251 - зависит от кодировки консоли, которую можно менять консольной командой chcp.
    Вообще не стоит использовать юникод в консоли, т.к. виндовая консоль не слишком дружит с юникодом.
    Например, если захотите обработать вывод вашей программы каким-нибудь фильтром в батнике, то при юникоде могут быть проблеммы.
    Хотя внутри программы вы можете использовать юникод, но в этом случае вы должны будете перекодировать весь ввод и вывод. Не уверен, можно ли настроить стандартную библиотеку, чтобы она сама занималась перекодировкой.
    А так в WinAPI есть целый набор консольных функций, в т.ч. можно получить текущую кодировку консоли для ввода и вывода, установить нужную кодировку, перекодировать текст.
    Ответ написан
  • Что за скобки в выражении std::true_type{}?

    @res2001
    Developer, ex-admin
    На сколько я понимаю, в вашем примере вполне можно заменить фигурные скобки на круглые и ничего не изменится.
    Но если бы в классе hello был бы конструктор, принимающий std::initializer_list, то в случае использования фигурных скобок вызвался бы именно этот конструктор, а не конструктор по умолчанию, даже если фигурные скобки пустые.
    Сделайте оба конструктора и проверьте, какой из них вызывается с фигурными скобками и с круглыми.
    Ответ написан
    Комментировать
  • Как написать модуль для Python 3 на C?

    @res2001
    Developer, ex-admin
    У Бизли в "Подробном справочнике" есть хорошая глава введения в этот процесс (это лучшее, что я видел в печатной литературе на русском). Но там, конечно, только для старта информация, все остальное берите из докуменатции.
    Ответ написан
    Комментировать
  • Как быстро вникнуть в чужой код?

    @res2001
    Developer, ex-admin
    Чаще практиковаться в чтении чужого кода. Ревью хорошо помогают в этом, но и читать абсолютно посторонний код полезно.
    Это навык, его можно наработать, как и все остальное. В любом случае на это потребуется время.
    Прежде чем вникать в код большого проекта, следует изучить документацию, лучше, если это будет документация для программиста. Но и пользовательская документация сгодится, за неимением лучшего. При чтении документации пытайтесь представить, как бы вы это реализовывали (без деталей, только самые важные моменты). После документации в голове сложится картина возможной реализации кода и станет проще понимать сам код.
    Ответ написан
    2 комментария
  • Как настроить VPN сервер на одном сервере с несколькими IP адресами?

    @res2001
    Developer, ex-admin
    чтобы потом можно было подключаться к этому VPN и выходить в интернет под разными IP.

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

    Вы можете на ВПН сервере в фаерволе прописать правило для пакетов в интернет, полученных через ВПН, форвардить на определенный интерфейс. Это правило можете менять вручную скриптом или еще по каким-то условиям.
    Другой вариант - можно настроить 32 ВПНа (по 1 на каждый внешний адрес), каждый ВПН будет иметь свою подсеть, в фаерволе точно так же прописываются 32 правила для форвардинга пакетов полученных от соответствующего ВПНа на его интерфейс. В этом случае выбор адреса происходит на стороне клиента (подключаетесь к нужному ВПНу).
    Вместо 32 ВПНов, можно использовать 32 разных клиента в одном ВПНе с фиксированными адресами. Суть в том, что бы в правиле фаервола вы могли бы их отличать.

    Все это теоретические рассуждения. Конкретная реализация будет сильно зависеть от выбранной ОС для ВПН сервера, выбранного типа ВПН, чего-то еще.
    Ответ написан
    6 комментариев
  • No match for 'operator=' c++ ошибка?

    @res2001
    Developer, ex-admin
    Оператор присваивания должен возвращать ссылку на самого себя. У вас возвращается копия объекта.
    Ответ написан
    Комментировать
  • Как перегрузить оператор ++ для собственного класса String?

    @res2001
    Developer, ex-admin
    В префиксном инкременте вы должны изменить текущий объект и вернуть ссылку на себя.
    Вы же генерируете новый объект.
    Ответ написан
    Комментировать
  • Можно ли к ноуту на убунту 20.04 подключить внешнюю клавиатуру?

    @res2001
    Developer, ex-admin
    Можно. Ничего не надо настраивать.
    Ответ написан
    Комментировать
  • Как найти значения отдельных составных частей?

    @res2001
    Developer, ex-admin
    У вас маска для S не правильная (0x1F - 5 битов), судя по заданию должна быть 7 (3 бита). Но в целом это не должно влиять на результат, т.к. S последнее поле и при сдвиге свободные биты будут заполняться нулями.
    Приведите пример входное значение и что получаете на выходе.

    Так же было бы не плохо после ввода проверить введенное значение UnitStateWord на попадание в диапазон. Т.к. переменная может принимать гораздо более широкий диапазон значений.
    Ответ написан
  • В моём городе у всех одинаковые IP?

    @res2001
    Developer, ex-admin
    Операторы могут работать по двум схемам:
    1. Клиентам выдаются реальные "белые" адреса с которыми клиенты ходят в интернет. В этом случае адрес на роутере будет совпадать с адресом, который покажет, например, сервис 2ip.
    2. Клиентам выдаются "серые" адреса. В этом случае клиенты ходят в интернет через NAT провайдера, где их адрес подменяется на белый адрес NATа (в интернете серые адреса не могут использоваться). В этом случае адрес на роутере будет отличаться от адреса в 2ip. Диапазоны серых адресов можете погуглить.

    В обоих случаях адреса могут меняться.
    Во втором случае теоретически на одном адресе может сидеть очень много людей. На самом деле все сложнее и у провайдера несколько сервисов NAT со своими адресами, так что вряд ли будет сидеть весь город на одном адресе. В первом случае в данный конкретный момент только 1 клиент пользуется этим адресом.
    В обоих случаях при блокировке по IP другого человека, пользующегося услугами того же провайдера что и у вас, то вы будете заблокированы на этом сервисе, если этот IP адрес так или иначе достанется вам.
    Ответ написан
    Комментировать