• Как "гибернировать" пользователей при переключении в Windows?

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

    Определить работает ли процесс фоном можно, например, понаблюдав некоторое время за процессом в менеджере задач. Потребляет ли он ЦП, когда вы ничего в нем не делаете? Изменяется ли размер выделенной памяти? Можно добавить и другие метрики.

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

    @res2001
    "Гибернировать" отдельного пользователя нельзя.
    Если процессы у "теневого" пользователе в основном занимаются ожиданием ввода пользователя (IDE и т.п.) или другого ввода/вывода, которого не будет пока пользователь снова не зайдет, то в конце концов эти процессы будут вытеснены в своп и память освободиться для других нужд и они не будут отжирать процессорное время. Так что можно особо не беспокоится. Хотя формально менеджер задач будет показывать эти процессы как активные и показывать у них занятую память.
    Но если процессы чем-нибудь активно занимаются, то они, конечно, не будут вытеснены. Такие процессы перед переключением лучше завершить.
    Грубо говоря, вы можете оставить в фоне IDE или окно консоли, но процесс архиватора или браузера лучше завершить.
  • Быстро ли мое решение?

    @res2001
    ralpt,
    printf долгая операция

    Помимо printf к долгим операциям можно отнести аллокацию памяти (malloc, new). Если в реальном коде вы будете каждый раз выделять динамическую память для c, то это может стать заметным тормозом.
    Оценка скорости printf и malloc сильно зависят от задачи. Если у вас идет обработка потока данных или объем обрабатываемых данных измеряется в МБ и больше , то эти операции могут быть узким местом. Если же это что-то другое, то заморачиваться на счет скорости printf и malloc не стоит.
    Вообще любая операция ввода/вывода может быть "непредсказуемо медленной" и от вас это может вообще никак не зависеть, например чтение/запись файла на диске, данных из сети и т.п.

    Вообще в вашей задаче, если вам в дальнейшем не нужен общий массив, содержащий данные a и b, то самым быстрым вариантом будет не объединять массивы вообще никак, т.е. сначала обрабатываете a, затем b по отдельности. Если же после обработки вам зачем то нужен объединенный массив, то a и b лучше объединить сразу и работать уже с объединенным массивом.
  • -x^2 - положительно или отрицательно?

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

    @res2001
    m000gg m000gg, У вас выход за пределы массива тут v[i] += x[i][j]; на второй итерации внутреннего цикла. Я бы рекомендовал в v сразу добавить нужное количество нулевых элементов и только потом заходить в циклы.
  • Как вывести сумму всех элементов для каждого столбца, которые оканчиваются тройкой?

    @res2001
    m000gg m000gg, Не привыкайте к VLA.
    Вот это int matrix[n][n]; массив VLA (variable length array). В С++ их нет. Они тянутся из Си, потому что gcc позволяет это делать по умолчанию. Но если задать строгое соответствие стандарту параметрами компилятора, то ваш код не соберется. Так же он не соберется и микрософтовским компилятором, т.к. там в принципе нет поддержки VLA.
    Вместо массивов VLA рекомендую использовать вектор или динамичиские массивы.
  • Чем отличаются size_type, size_t, unsigned X?

    @res2001
    На эльбрусе в защищенном режиме (или как он там правильно называется) указатель вообще составной тип, в котором содержится в т.ч. и информация о типе, на который он указывыает.
  • Правильно ли я установил SFML в свой проект?

    @res2001
    CteplerMarinovich, В e:/cpp-libraries/SFML-2.5.1/include есть SFM/graphics.hpp?
    В include вы должны указывать пути к хедерам относительно каталогов, заданных на первом скрине.
    не кампилируется

    Ошибки компилятора покажите.
  • Правильно ли я установил SFML в свой проект?

    @res2001
    Если путь, указанный на первом скрине существует и в этом каталоге лежат файлы указанные в include, то не должно быть никаких проблем.
    Разве что, вы не правильно пишете include.
    Пример ваших include в студию.

    До других скринов дело не доходит пока что.
    SFML_STATIC, видимо, означает использовать статический вариант sfml, а не динамический.
  • Кто знает, с какого языка эта функция?

    @res2001
    $CAMEXEC_GET

    Вы предлагается по этой короткой строке определить язык программирования?
    Маловато информации.
    Это может быть shell, php, perl, что-то еще.
  • Почему файловая система NTFS, смонтированная в /media/folder, не позволяет запускать исполняемые файлы?

    @res2001
    karpo518,
    с таким значением fmask у меня вообще все файлы в каталоге становятся исполняемыми, включая тестовые документы и фотографии. И сделать их не исполняемыми не получается. Это не совсем то, что мне нужно. Или exec именно так и работает?

    Это же NTFS - виндовая файловая система. В NTFS как и на FAT32/FAT16 нет атрибута файла "исполняемый", как в никсовых файловых системах. Вместо этого возможность исполнения файла проверяется наличием соответствующего расширения.
    Примонтировав NTFS/FAT32/FAT16 в линукс вы можете сделать либо все файлы исполняемыми, либо наоборот - все не исполняемыми. Другого не дано. Линукс в свою очередь не работает по расширениям, исполняемый файл в линуксе (и прочих никсах) может иметь любое расширение или не иметь его.
    Именно такое поведение вы и видите благодаря опции exec. Изменение атрибутов отдельных файлов с помощью стандартных линуксовых утилит chmod/chown ни к чему не приведет, т.к. в этих файловых системах не поддерживается система прав на файлы в никсах (в FAT вообще нет никаких прав) и не поддерживаются система никсовых атрибутов в файлах.
  • В чем разница const char* и char const*?

    @res2001
    Adamos, Еще можно и так: char const * const * const
    Так что звездочка играет :)
  • В чем разница const char* и char const*?

    @res2001
    gleendo, Вообще без понятия.
    К тому же от компилятора к компилятору строка, возвращаемая typeid().name() может различаться для одного и того же типа. И не факт, что в другом компиляторе const не будет указан в первой позиции.

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

    @res2001
    Только не .о! Или .so или .a
    Освойте утилиту pkg-config, она покажет все нужные пути. Ее можно использовать совместно с makefile или в cmake (наверняка и в других системах сборки то же). В параметрах надо задавать имя конфигурационного файла pkgconfig, который установила библиотека и pkg-config покажет всю нужную информацию для подключения библиотеки к своим исходникам.
    Если правильно помню, то в линухе конфиги pkg-config могут лежать в /usr/lib/pkgconfig, /usr/share/pkgconfig, и дополнительно в тех же каталогах, но с префиксом /usr/local. Возможно еще где-то, сейчас негде посмотреть. Конфиги представляют собой файлы с расширением .pc. Уважающие себя библиотеки ставят в своем -dev пакете в т.ч. и конфиг pkg-config. Названия файла конфига можно посмотреть в составе пакета с помощью dpkg -L libfftw3-dev или найти вручную в соответствующем каталоге. Как правило, название конфига как-то созвучно имени библиотеки.
    Посмотрите опции pkg-config, чтоб получать только нужную информацию.
  • В чём разница между статическими либами и пакетами?

    @res2001
    Не надо вам make & make install, у вас и так уже все стоит из пакетов. По возможности, стоит избегать этих команд и ставить все из пакетов.
    Просто подключайте библиотеку к вашей программе.

    Обычно в линуксах библиотеки разбивают на 2 пакета, в первом пакете по имени библиотеки находится сама скомпилированная библиотека, маны, что-то еще необходимое для работы библиотеки. В пакете с суффиксом -dev находятся файлы, необходимые для разработки программ с использованием этой библиотеки (например заголовки, конфиг для pkgconfig и т.п. программистские штуки).
  • Почему именно при таком обращении к матрице мы получаем все ее элементы?

    @res2001
    LevSvl08, Прочитал в комментариях, что двумерный массив у вас объявлен статически/автоматически.
    В этом случае тип matrix является int[10][10]. Используя первое разыменование мы снимаем первую размерность и получаем после *(matrix + i) тип int[10] и дальше имеем право разыменовывать еще раз.
    Для наглядности набросал примерчик, посмотрите вывод: https://gcc.godbolt.org/z/jn9W7vMG5

    Для статических/автоматических массивов лучше не использовать разыменование, чтоб не вводить самого себя в заблуждение. Используйте индексацию. Статический/автоматический массив это не то же самое что указатель, хотя работают местами похоже, но в некоторых случаях различаются.
    Например посмотрите чему равен sizeof автоматического массива и чему равен sizeof указателя (последняя строка примера).
  • Почему именно при таком обращении к матрице мы получаем все ее элементы?

    @res2001
    LevSvl08, Как у вас объявлен matrix? Приведите кусок кода с объявлением matrix и его инициализацией.
    Подозреваю, что это что-то типа:
    int **matrix;
    2 звездочки означает указатель на указатель на int. Соответственно возвращаемый тип первого разыменования *(matrix + i) это int*, а раз это указатель, то мы его можем разыменовать еще раз и только после второго разыменования получим значение элемента.
    Но при таком варианте матрицы надо иметь ввиду, что память выделять для подобной матрицы нужно следующим образом:
    matrix = new *int[N];
    for(int i = 0; i < N; ++i) { matrix[i] = new int[N]; }

    Соответственно аналогичным образом и удалять матрицу, освобождая каждый элемент первого массива. Посчитайте сколько вызовов new получается, столько же должно быть и вызовов delete[].
    По сути это не двумерный массив, а одномерный массив каждый элемент которого является массивом (массив массивов).
    Такой подход имеет право на существование, но он не оптимальный с точки зрения производительности.

    Если важна скорость работы с матрицей, то имеет смысл использовать подход описанный mayton2019 и выделять память под всю матрицу одним куском. Но в таком случае вы не сможете использовать операцию двойной индексации matrix[i][j] (догадайтесь почему), индекс придется вычислять вручную, способом указанным в ответе mayton2019.
  • Ростелеком блокирует трафик VPN?

    @res2001
    ВПН нельзя распаковать - это технология, и уж тем более ростелеком не реагирует на действия архиватора на вашем компе.

    Если у вас "браузерный" ВПН и если ВПН сервер не доступен, то любые действия в браузере будут "заблочены", но это не вина ростелекома.

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

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

    @res2001
    В этой книге описан Linux UserSpace API, т.е. набор интерфейсов с помощью которых прикладной пользовательский софт общается с ядром. Описание внутренностей ядра тут не найдете.
    Автор книги является писателем man страниц, так что книга, представляет собой печатный man по Linux API.
    Для прикладных программистов книга хорошая.