Задать вопрос
  • Как перейти с Linux на Windows?

    @res2001
    Последний раз месяца 2 назад скачивал образ винды. Да, стандартные варианты не работают. Но если найти в интеренете прямую ссылку на образ, то скачивается в лет даже без ВПН.
    Ссылку к сожалению не сохранил, так что гуглите.
    Через ВПН по идее должны работать и стандартные способы. Другое дело, что на бесплатных ВПН это может занять неделю (как повезет), а на платных - надо платить :) И ВПН сервер должен быть за границей естественно.
    Правда сейчас все может меняться достаточно быстро и те способы, что работали 2 месяца назад сейчас могут не работать.

    Да и вообще, сидите на линуксе :-) винда must die
    Написано
  • Не понимаю, почему происходит потеря пакетов. Как решить?

    @res2001
    cashcashh, Там может в роутере что-то в электронике глючит/греется и от этого перестает работать кратковременно, что приводит к пропуску пакетов. Такое может быть в любой железке, даже если она по характеристикам сильно круче, чем требуется.
    К тому же TP-Link - это же просто дешевый китаец, я уже 2 tp-link поменял по похожим причинам за последние 5 лет.
    После последнего раза реанимировал свой старый асус, который покупал лет 15 назад - работает и ведь то же китаец :)
    Написано
  • Как обновить программу "ip" в Linux?

    @res2001
    rPman, Думаю вполне может получиться, т.к. сам функционал brief требуемый ТС не завязан на версию ядра, а данные от ядра ip получает по NETLINK поддержка которого в ядре реализована с лохматых годов.
    Хотя, конечно, какие-то новые фичи не будут поддержаны, но TCу это и не нужно.
    Вообще brief - это же сокращенный формат вывода, к нему можно привести и стандартный вывод ip, распарсив его дополнительным скриптом.
    Так же ip умеет выводить в json.
    Написано
  • Как получать данные с десктопного приложения Windows (works via inet) в реальном времени?

    @res2001
    HabrScience,
    Думаю не совсем правильно поняли задачу

    Судя по вашему ответу чуть выше я задачу понял правильно.
    Разве что в вопросе не указывалось, что приложение пишет файлы.
    Но с файлами то же все может быть не просто, даже если вы получите доступ на чтение файлов удаленно (это отдельная задача похожая на взлом компьютера, если доступ для вас не открыт).
    Файлы могут быть записаны в разных форматах, форматы могут быть текстовые и двоичные. Какие-то форматы могут быть известны JSON, dbf, wav и т.п., другие могут быть произвольного формата, который знает только пишущая их программа. Для файлов известного формата можно поискать готовые библиотеки с помощью которых можно читать эти файлы. Так же возможны варианты, что файл заблокирован приложением для чтения его другим приложением, например так делают разные СУБД со своими базами, и пока приложение не закроет файл прочитать его будет не возможно.
    Так что и тут вам не грозит универсальное решение.
    Написано
  • Как получать данные с десктопного приложения Windows (works via inet) в реальном времени?

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

    Windows - не система реального времени, Интернет - еще больше не система реального времени. В обоих случаях возможны не предсказуемые задержки по независящим от участников обмена причинам.
    Написано
  • Почему строка не хочет выводиться на русском языке?

    @res2001
    Подобный вопрос тут уже не однократно задавался и вообще в гугле на эту тему много материала.
    Посмотрите, например, этот ответ: Как выводить русские символы в си?

    В консоли русской винды из коробки может быть несколько русских кодировок (и по умолчанию там работает кодировка CP866, как это ни странно), пользователь из консоли может менять кодировку консоли самостоятельно с помощью команды chcp (см. chcp /?). Кроме того имеет значение в какой кодировке написаны ваши исходники, т.к. при выводе кодировка консоли должна совпадать с кодировкой выводимых данных. Эти нюансы многие не знают, поэтому возникают проблемы и вопросы.
    В линукс, например, такого обычно не происходит, т.к. там давно уже UTF8 стал стандартом де-факто в консоли и соответственно все текстовые редакторы по умолчанию создают файлы в ней же - кодировки совпадают - проблемы с вводом/выводом нет.

    Общее правило для винды:
    1. пишите исходники в UTF8
    2. Для хранения всех строк используйте мультибайтовые строки и функции для работы с мультибайтовыми строками, или широкие символы (wchar_t) и соответствующие функции для широких строк.
    3. Если в п.2 выберите вариант с wchar_t, то строковые литералы задавайте с использованием модификатора L: https://en.cppreference.com/w/c/language/string_literal

    Вариант с мультибайтовыми символами+UTF8 в исходниках, часто может требовать минимальной модификации исходников и иногда использования функций для мультибайтовых строк или символов. Когда вам нужно использовать мультибайтовые функции - вы должны понимать сами.
    В случае с wchar_t вы всегда должны использовать функции для широких символов.

    В MSVS, есть свои собственные инструменты для поддержки unicode. В свойствах проекта можно задать - поддерживается unicode или нет. В самом проекте для литералов использовать макрос TEXT("текст"). Они вроде бы появились еще до того, как поддержка unicode (широких символов) появилась в стандарте. Возможно сейчас в них нет необходимости.

    Суть всех этих мероприятий: либо сделать кодировку исходников и кодировку консоли одной и той же, либо добиться преобразования кодировок "на лету", но для этого ваш run-time должен знать в какой кодировке ваши исходники. Кодировку консоли он узнает от ОС.
    Написано
  • Сетевые папки, обнаружение компьютера в сети Win10?

    @res2001
    typoisysadm, Настройки сети вполне типичные для домашней сети за роутером.
    зачем прописывать hosts

    Затем, что вы, видимо, пытаетесь обращаться к компам по имени, а преобразование имени в ip у вас нет, т.к. нет локального DNS сервера со своей зоной (для двух компов он нафиг не нужен). Поэтому как вариант, можно имена задать в host. Но это не поможет, если, например ваша локальная сеть находится в публичном профиле фаервола на одном из компов - должна быть в приватном, ну и по другим причинам еще может не работать.
    Но если внимательно прочитаете мой ответ, проверите и сделаете все, что там написано, то сеть у вас заработает и без правки hosts. Она работает более-менее хорошо уже более 30 лет.
    Написано
  • Почему в Visual Studio Code не работает объявление функций в конце кода?

    @res2001
    kotsmotritnastul,
    как переключиться на clang в visual studio

    На сколько я понял у вас VS Code, но это не сильно принципиально.
    Вообще обычно нужно задать переменные окружения CC и CXX для компиляторов Си и С++ и указать в них путь к желаемому компилятору. https://stackoverflow.com/questions/7031126/switch...

    Лично я для сборки проектов использую cmake, поэтому переключать надо cmake и не важно какая IDE при этом используется. Без системы сборки можно собирать только мини проекты из одного файла исходного кода, типа вашего примера. Когда появляется больше 1 файла исходного кода - это становится уже достаточно проблематично и чем больше файлов, тем хуже.
    Поэтому рекомендую изучить какую-то систему сборки. cmake - сейчас достаточно популярна. Но систем сборки то же довольно много. Из самого раннего - это make, но make вряд ли стоит рекомендовать.
    Написано
  • Почему в Visual Studio Code не работает объявление функций в конце кода?

    @res2001
    kotsmotritnastul, Нет никаких косяков gcc в вашем примере. Можете проверить на https://godbolt.org/ чтоб себе не устанавливать пачку компиляторов. Почему не работает у вас - без понятия. Возможно надо удалить все артефакты компиляции (объектные файлы, исполняемые файлы) и пересобрать программу.
    Работают оба варианта.
    Единственное что могу добавить - в Си функции без параметров нужно определять как: void hello(void)
    Если не указывать void в скобках, то по стандарту считается, что функция принимает int. Это древнее правило, но до сих пор еще живо.

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

    @res2001
    Надо сделать несколько наблюдений

    в-четвертых: начиная с 12 уровня всегда будет уходить по 3 дня, т.к. шаров не белого цвета будет >=3.
    в-пятых: начиная с 16 уровня всегда будут оставаться белые шары после ликвидации остальных, т.к. с этого уровня белых шаров будет >=4
    Написано
  • «Embedded systems» в русском просторечии и жаргоне — это ..?

    @res2001
    Как вариант: "встройка"
    Но обычно действительно в общении между собой ничего такого не произносится.
    Не произносится, потому что это абстрактное название специализированной области где мы все работаем.
    Но у каждого есть свой проект, у проекта есть название. Поэтому при рабочем общении употребляется название проекта и все окружающие по умолчанию понимают, что это проект в области встраиваемых систем, потому что по другому на этом предприятии обычно не бывает. С заказчиками все примерно так же, т.к. там тем более обсуждается конкретный проект и нет повода применять абстрактные названия.
    Если общаешься с кем-то не из этой области, то, да, иногда, для уточнения, можно произнести "встраиваемые системы" или любой подходящий синоним, но это бывает не часто, так что язык не устает.
    Написано
  • Что лучше юзать для восстановления системы BTRFS или RSYNC на Linux?

    @res2001
    Александр Демин,
    цель: восстановление системы

    Я бы забэкапил только конфигурационные файлы, отличные от умолчания. Шаги восстановления: а) устанавливаем ОС с дистрибутива б) накатываем необходимое ПО в) восстанавливаем конфигурационные файлы г) восстанавливаем данные из бэкапа
    Как вариант - использовать развертывание системы, что-нибудь типа ansible и т.п. - закроет пункты а-в.
    При таком подходе какая у вас используется файловая система большого значения не имеет.

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

    @res2001
    Идете в цикле по позициям, для каждой позиции вычисляете: price_final = price + discount * (price / total_price )
    Дальше суммируете все price_finаl - это и будет ваша total_price_final.
    price - цена конкретной позиции
    total_price - цена всего заказа
    price / total_price - вес конкретного товара во всем заказе - (0; 1]
    discount - сумма скидки, которую надо раскидать по позициям
    Если скидок несколько, то есть смысл сначала сложить все скидки в общий discount и уже расписывать его.
    Написано
  • Кто блокирует сертификат и что делать?

    @res2001
    Добавлю CRL - список отзыва сертификатов.
    Путь откуда должен браться CRL прописан в самом сертификате, ищите в его свойствах соответствующую опцию.
    Можно попробовать скачать CRL вручную и установить на комп. На сколько помню, если CRL не удается обновить, то сертификат через какое-то время становится не действительным.
    Написано
  • Как перенаправлять весь траффик на определенный сайт через прокси сервер с помощью C/C++?

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

    @res2001
    Dyikot,
    думается мне что не будет таких ситуаций когда событие будет выполняется более 15мс

    Вы не учитываете возможность вытеснения потока. У нас же везде вытесняющая многозадачность. В любом месте в любое время любой поток может быть вытеснен с исполнения операционной системой и когда он снова получит управление не знает ни кто, может через час или через год или через 10 мс - это все возможные варианты.
    Так что эта конструкция sleep_for(1ms) не может ничего гарантировать.
    Чем у вас занимается reset я вообще не в курсе.

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

    @res2001
    Dyikot, Что если таймеру ждать еще больше, чем 1мс?
    В данном конкретном примере - это видимо сработает, но вы же делаете этот таймер не для этого "скучного" теста? Например уберите в main вызов sleep_for(duration).

    Похоже вы изобретаете костыли, вместо того, что бы сделать нормальную обработку подобных ситуаций.
    Написано
  • Как исправить ошибки вызова обработчика событий в другом потоке?

    @res2001
    Dyikot, Вообще можно и не делать эту возьню с signal и флагом, а просто в деструкторе вызвать join, но тогда поток деструктора будет ждать завершение таймера все отведенное таймеру время. Если вас это устроит, то можете ограничиться вызовом join.
    Но signal с флагом, заставит wait_for завершиться досрочно.
    При этом, если ожидание уже завершилось до вызова деструктора, то дополнительный вызов signal и join не дадут больших накладных расходов.
    Написано
  • Как исправить ошибки вызова обработчика событий в другом потоке?

    @res2001
    Dyikot, не обязательно, вы этого гарантировать не можете, оно может и в wait_forе застать поток таймера, и он потом спустится уже до вызова OnTimerElapsed.
    Так что надо отрабатывать оба варианта.
    Предложенный мной выше вариант как раз это сделает. Проверять флаг timer_disable надо сразу после wait_for и завершаться, если он true.
    Написано
  • Как исправить ошибки вызова обработчика событий в другом потоке?

    @res2001
    Dyikot, Вы можете добавить дополнительное условие в wait_for и просигнализировать условную переменную вручную в деструкторе.
    Например выставляете в деструкторе флаг timer_disable = true, вызываете signal для условной переменной и ждете на join завершения потока таймера. После возврата из join уже можно завершать деструктор, т.к. поток таймера 100% завершится.
    В wait_for дополнительно проверяете этот флаг и если он true - то выходите.
    Мьютекс и условную переменную надо сделать членом класса.
    Написано