• Удалить байты из файла без его полной перезаписи можно только с конца?

    @res2001
    Developer, ex-admin
    Вы можете не перезаписывать весь файл, а только кусок с хвоста, который останется после удаления из середины данных. Для обрезания размера файла с конца в современных ОС есть соответствующие механизмы.
    Если же вам нужно удалить в большом файле несколько байт в начале, то придется перезаписать весь файл.
    Для того что бы не перезаписывать большие объемы информации многие файлы внутри имеют блочную структуру (например файлы баз данных), тогда можно помечать весь блок как удаленный, при этом сам блок из файла не освобождается и не перезаписывается, но приложение знает, что он пустой и его можно будет повторно использовать при необходимости. Этот функционал вы должны сами запрограммировать в своем приложении - операционная система за вас это не сделает. При этом когда злобный админ будет делать shrink базы данных эти пустые блоки будут физически удалены из базы.

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

    @res2001
    Developer, ex-admin
    Сменить кодировку консоли на UTF-8 и конвертировать строки перед выводом в UTF-8.
    Ответ написан
    Комментировать
  • Какие способы защиты от шитпостинга существуют для децентрализованных систем?

    @res2001
    Developer, ex-admin
    Шифрование трафика между участниками чата.
    Ответ написан
    Комментировать
  • Как узнать адрес своего git репозитория?

    @res2001
    Developer, ex-admin
    На сервере какая сборка гита у вас стоит? Есть варианты и могут быть нюансы при задании урла.

    Попробуйте варианты:
    ssh://user@server/d/git/repo.git
    ssh://user@server:/d/git/repo.git
    ssh://user@server:d/git/repo.git
    ssh://user@server/d:/git/repo.git
    По формату URL тут подробней.

    У меня на гит на сервере из состава msys2 работает первый вариант URL.
    На сколько помню на "Git for Windows" работает последний.

    Кстати, я не так давно настраивал гит сервер на винде. По ssh так и не получилось завести - любая операция заканчивалась ошибкой. Грешу на плохой канал - сервер у черта на куличках, да еще и через ВПН, скорость не фантан, задержка при передаче приличная. Но сам ВПН работал, ssh то же, а гит отказывался. Пришлось поднять на сервере git-daemon и работать через протокол git, а не ssh.
    Ответ написан
    Комментировать
  • Как настроить сервер git?

    @res2001
    Developer, ex-admin
    Нужно настроить сервер ssh, чтоб гит мог подключаться к репозиторию по ssh.
    Ответ написан
    Комментировать
  • Как выбрать из PostgreSQL БД случайные записи (N штук), но чтобы при последующей выборке при том же условии - список не изменился?

    @res2001
    Developer, ex-admin
    Вычисляете общее количество записей (N), которые можно выбрать.
    Генерируете 10 случайных чисел в диапазоне от 1 до N.
    Выбираете 10 записей из верхнего запроса, у которых row_id равен случайным числам.
    ID выбранных записей нужно куда-то сохранить, чтоб в следующий раз их использовать.
    Ответ написан
    Комментировать
  • Процесс WMI Provider Host постоянно нагружает сервер?

    @res2001
    Developer, ex-admin
    В нормальном состоянии эта служба не должна вообще жрать ресурсы.
    Этот сервис часто использует разное стороннее ПО.
    Например драйверы устройств или что-то из автозагрузки.
    Нужно бороться не с самой службой, а найти тот софт, который дает нагрузку.
    Начните с софта из автозагрузки: по одному останавливайте процессы и смотрите как будет изменяться нагрузка на проц.
    Затем то же самое со сторонними службами.
    Драйвера устройств - можно просто обновить.
    Так же такое поведение может иногда наблюдаться, если прямо сейчас фоном ставятся виндовые обновления.

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

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

    @res2001
    Developer, ex-admin
    Согласен с предыдущими ораторами, что язык под задачу, а не наоборот.

    Если хочется низкого уровня, то сосредоточьтесь на С++. Сам по себе Си - язык очень компактный и простой. Изучая С++ для понимания внутренних механизмов уделите внимание указателям, адресной арифметике, работе с нативными массивами и строками (не std::valarray и std::string) - то же самое будет и в Си.
    Когда пишешь на Си очень не хватает классов и иногда шаблонов из С++ - толковой альтернативы в Си нет.
    Если когда-то придется участвовать в проекте на Си, то перейти с С++ будет достаточно просто. Адаптироваться к нюансам и привыкнуть к стандартной библиотеке Си можно быстро.
    Все это я к тому, что необходимости отдельно изучать Си нет - освоив на хорошем уровне С++ вы сможете начать писать на Си, когда будет необходимо. Но наоборот - не выйдет.
    Ответ написан
    1 комментарий
  • Как перенести пользователя и программы из одной windows 10 в другую?

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

    @res2001
    Developer, ex-admin
    Возможно в винде не установлен питон, или при установке питона не были прописаны ассоциации файлов или они слетели уже в процессе.
    В общем случае запускайте так:
    <путь до питона>\python.exe <путь до файла>\file.py

    Питон, конечно, должен быть установлен, причем нужной версии: питон2х не совместим с питон3х.
    Ответ написан
    Комментировать
  • Как получить ссылку на объект?

    @res2001
    Developer, ex-admin
    Правильно:
    const C& c

    объект создавался оператором new, то передаётся значение указателя, а если статически то ссылка

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

    Лучше не заморачиваться этим вопросом. На уровне ассемблера нет никаких ссылок, поэтому по факту ссылки - это те же завуалированные указатели, у которых на уровне компилятора ограничен функционал для более безопасного использования.
    Указатель - это целое число. Размер указателя не зависит от типа, на который он указывает, зависит только от платформы (в х64 указатели 64 битные, а в х32 - 32 битные).
    Ответ написан
    Комментировать
  • Как посчитать несколько count() в секции select используя обозначения через as?

    @res2001
    Developer, ex-admin
    Поля count_id1 и count_id2 видны снаружи select, а внутри нет.
    Например, если этот select завернете как вложенный запрос, то в верхнем select уже можно обращаться по этим именам:
    select round(sum(count_id1) /  sum(count_id2)  * 100, 1) as percent
    from (
    select  
     ...
    count(table.id1) as count_id1,
    count(table.id2) as count_id2,
    
    from table
    ...
    )
    Ответ написан
    1 комментарий
  • Почему n^3 работает быстрей чем 2^n?

    @res2001
    Developer, ex-admin
    Если рассуждать прямолинейно, то N^3 требует 3 операции умножения (O(3)) для любых N.
    При этом если N > 3, то 2^N будет требовать >3 операций умножения (N операций умножения, если делать совсем уж тупо).

    Но если N - целое и 2^N реализовывать сдвигом, а не умножением, то работать будет ооочень быстро - O(1) для всех N в допустимом диапазоне.
    Ответ написан
    2 комментария
  • Создать проверку существуют ли файлы или папки в определенном каталоге?

    @res2001
    Developer, ex-admin
    Начну с конца: cmd не поддерживает работу с датами ни в каком виде.
    Дату последнего изменения файла получить можно, но это будет дата в текстовом виде. Дальше нужно вручную выделять все составляющие даты и с помощью скудных возможностей set /a и кучи if вычислять была она позже 4 часов или нет. Сделать можно, но это будет ... "не технологично" :-)
    В свое время я писал скрипт на bat переводящий дату в timestamp и обратно. Могу поискать, если заинтересует.
    Я бы предложил вам использовать скрипт на powershell, vbs, js - все они умеют работать с датами. Реализовать на них вашу задачу довольно просто.

    Проверка существования файлов и подпапок в заданной папке:
    set "indir=c:\papka"
    :: Проверка существования файлов:
    for /f "tokens=* delims=" %%a in ('dir /b /a-d "%indir%\*" ') do (
      echo.Есть файл: %%~fa
    )
    :: Проверка существования каталогов:
    for /f "tokens=* delims=" %%a in ('dir /b /ad "%indir%\*" ') do (
      echo.Есть каталог: %%~fa
    )


    Если служба "отваливается" путем завершения процесса службы, то проще проверять существует ли запущенный процесс с помощью tasklist и ее фильтров. Смотрите tasklist /?
    Ответ написан
  • Не устанавливается сетевой драйвер на Windows Server 2016 Standard?

    @res2001
    Developer, ex-admin
    Скачайте с сайта интела новый драйвер для вашего сетевого адаптера конкретно под вашу ОС.
    Ответ написан
    Комментировать
  • Почему не видит видеокарту после замены на SSD?

    @res2001
    Developer, ex-admin
    На ноутах со сдвоенными видеокартами, дискретка включается когда нужна повышенная производительность (в играх), в остальных случаях работает встроенная.
    У меня lenovo z510 с похожей конфигурацией dxdiag на закладке "Display" показывает встроенную, но на закладке "Render" - NVidia. ОС: Вин10.
    Ответ написан
    Комментировать
  • Два шлюза в одной сети?

    @res2001
    Developer, ex-admin
    Два шлюза по умолчанию с разными метриками на клиентах.

    PS: Было бы интереснее в вашем случае замутить балансировку каналов с обеспечением отказоустойчивости. Это уже более сложный вопрос - либо покупать железку, которая это умеет; либо самому разбираться с вопросом.
    Ответ написан
    Комментировать
  • Как различить юзер программист или нет ( то есть в кавычках, который мало что понимает)?

    @res2001
    Developer, ex-admin
    Да, на github можно создавать клоны чужого софта и вообще заливать все что угодно.
    Если ментор дает дельные советы, которые помогают вам с решением задач, значит он как минимум знает о чем говорит (или умеет гуглить лучше, чем вы).
    Если с ответом затрудняется или его советы не помогают с решением задач, то скорей всего он сам новичок или не владеет данной темой, да еще и гуглить не умеет или ленится.
    Ответ написан
  • Удаленный рабочий стол mstsc не пущает из под win10, как решить?

    @res2001
    Developer, ex-admin
    Кроме не рассматриваемого варианта эта ошибка может быть вызвана следующими причинами:
    1.удаленному пользователю на сервере не назначен пароль;
    2.пользователь не является администратором или пользователь не входит в группу "Пользователи удаленных рабочих столов".

    Вообще странно, что пришлось выключить "Network Level Authentication". Вариант с выключением этой настройки предназначен для старых клиентов под WinXP. В Вин10 клиент точно это поддерживает (собственно в Вин7 уже это работало).
    Ответ написан