Задать вопрос
  • Куда сохранять незаконченный код?

    @res2001
    Developer, ex-admin
    Откройте для себя интерактивное ребазирование: git rebase -i
    Эта команда производит интерактивное ребазирование, причем вы можете выбрать вручную какие из комитов ребазировать, какие нет, какие-то комиты можно слить в один и т.п.
    Т.е. вы можете комитить сколько угодно промежуточных комитов в свою ветку, когда фича будет готова делаете интерактивное ребазирование ветку саму на себя, сливаете все комиты в один (или делаете их несколько), делаете к этому комиту полноценный коментарий. Все.
    Для справки: git rebase --help
    Ответ написан
    Комментировать
  • Как настроить openvpn сервер с udp портом для клиентов с серыми ip?

    @res2001
    Developer, ex-admin
    OpenVPN лучше работает на UDP, у них есть статья почему это именно так, гуглите. Но это не значит, что вариант с TCP не работоспособен, просто там есть определенные "особенности".
    Арендуйте VDS с белым IP и на нем разместите VPN сервер.
    Не только для ВПН, но и вообще для любого сервиса, который должен быть доступен из интернет необходим белый IP.
    Можно, конечно, попробовать договорится с оператором о пробросе портов, но, по моему, это не реально.
    Ответ написан
  • Как проверить дисковое пространство в Windows 10?

    @res2001
    Developer, ex-admin
    Посмотрите SMART статус диска любым софтом, который это умеет показывать, если там какое-то критическое состояние, то, видимо, пора менять диск.
    Дальше можно "тестировать поверхность", но это уже не в RAIDе и, наверное, не на этом компе.
    Диски порой дохнут, как и все остальное, сделанное человеком. И чем больше у вас дисков (и чем они более объемны), тем чаще они будут дохнуть.
    Ответ написан
    4 комментария
  • Что нужно знать, чтобы написать web server на C++?

    @res2001
    Developer, ex-admin
    Полноценный веб сервер - это очень сложное ПО. Сам по себе протокол HTTP оброс кучей дополнений и улучшений, только посмотрите список RFC, его описывающих. В одиночку написать с нуля что-то подобное, например, apache - практически не посильное дело.
    Кроме HTTP, конечно, нужно хорошо знать и понимать сетевое программирование, параллельное программирование, английский язык, что-то еще.

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

    @res2001
    Developer, ex-admin
    Я правильно понимаю, что это реально будет в 2 раза медленнее происходить?

    Естественно.
    Но по docid у вас индекс, так что должно быть достаточно быстро.
    Ответ написан
    Комментировать
  • Как сделать удобную удалёнку к родителям в сеть?

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

    @res2001
    Developer, ex-admin
    Не копирует.
    У вас no - это объединение (union). В объединении все члены объединения занимают одну и ту же память, т.е. если вы посмотрите sizeof(no), то увидите 4 байта, т.е. память выделяется как для одного int, а у вас там 2 int. Т.е. то что вы написали в коде так оно и работает.
    Т.е. операции, например:
    f.a.people = 9;
    f.a.s = 2;

    перезаписывают одну и ту же область памяти. После этого f.a.people == 2, а не 9.
    Ответ написан
    Комментировать
  • Как исправить ошибку с построчным чтением из бинарного файла C++?

    @res2001
    Developer, ex-admin
    1. Хорошо бы код спрятать под тег code (есть кнопка в панели инструментов) и вернуть разметку, не возможно читать.
    2. Не видна последовательность вызовов input() и output().
    3. В input() файл открываете на запись, но ничего туда не пишете, в итоге файл пустой.
    4. В output вы не правильно читаете:

    Суть в том, что тип string хранит саму строку в динамической памяти, а не в самом объекте (в объекте только указатель на динамическую память). string у вас используется в AutoBase.
    Тем способом, которым вы пытаетесь читать из файла вы прочитаете какой-то указатель и скорее всего будет обращение к не выделенной памяти и программа упадет. Подозреваю, что запись вы бы реализовали так же и в файл записался бы указатель, а не строка.
    Вам надо читать и писать объект string по другому. Есть 2 варианта:
    • Сначала пишем/читаем размер строки, затем пишем/читаем саму строку заданного размера.
    • Пишем всю строку, в конце дописываем какой-то разделитель. В качестве разделителя можно использовать символ '\0', так же как в сырых Си строках или то что вам больше нравится, лишь бы разделитель не мог содержаться в самой строке. При чтении надо читать побайтно, до тех пор пока не встретится символ разделитель.

    Какой вариант реализовывать решать вам.
    Ответ написан
  • Как разукрасить текст консоли разными цветами?

    @res2001
    Developer, ex-admin
    Речь ведь про винду?
    В cmd есть команда color. Никогда ей не пользовался, так что не помню цвет чего она меняет, посмотрите в справке. Набор цветов у нее достаточно скудный.
    Так же консоль поддерживает Esc последовательности, где можно задавать цвета выводимых символов. Но тут, скорее всего придется использовать низкоуровневое Console API: https://docs.microsoft.com/en-us/windows/console/c...
    Возможно какие-то консольные библиотеки это поддерживают. Что-то типа ncurses.
    Еще можно заглянуть в исходники, например Far manager, посмотреть как они там работают с цветом в консоли.
    Ответ написан
    Комментировать
  • Чем вы бэкапите и почему?

    @res2001
    Developer, ex-admin
    Когда мне это еще было актуально в конторе исопльзовал Symantec BackupExec.
    Помимо прочего умеет бэкапить виртуалки, MS SQL и много чего еще, поддерживает ленточные носители. В целом продукт хорош, но не бесплатен и многие плюшки идут за отдельные деньги.
    Ответ написан
    Комментировать
  • Как лучше оптимизировать такие действия с массивами?

    @res2001
    Developer, ex-admin
    Читайте файлы сразу большими блоками (вплоть до всего файла сразу). Под большие блоки можете использовать std::vector<char> с предварительно установленным размером вектора (std::vector::reserve())
    Затем вручную делите прочтенный блок на строки, видимо, заменой \n на 0.
    Все указатели на найденные строки сразу складывайте в используемую в алгоритме структуру данных.
    Не используйте std::string, т.к. он реаллоцирует память на каждый чих, это приводит к повторному выделению того же самого объема памяти но порезанному на мелкие куски и дополнительному копированию строк. Используйте std::string_view (есть в С++17) или вообще сырые Сишные строки, как самый быстрый вариант.

    Вообще все массивы в плюсах (vector, array, "сырые" динамические и статические массивы) работают одинаково быстро, если рассматривать операцию обращения к элементу массива по индексу. Но в vectorе многие другие операции могут приводить к реаллокации памяти и копированию массива. В сырых динамических массивах вы не можете просто так изменить размер массива, это надо делать явно с помощью вызова realloc, а потому тут вы эту операцию явно контролируете, в векторах же (как и строках) это происходит не явно, поэтому часто разработчики не придают этому значения, тогда как обращения к менеджеру памяти достаточно дороги в плане производительности.
    Ответ написан
    Комментировать
  • Как распаковать архив с самой последней датой создания?

    @res2001
    Developer, ex-admin
    Вывести список файлов, соответствующих маске отсортированный по дате в обратном порядке:
    dir /a-d /o-d /b *.7z
    Эту команду запихнуть в for /f, обработать в цикле только первый файл и выйти из цикла.
    Ответ написан
    Комментировать
  • Какая область видимости "глобальных сущностей" CMake?

    @res2001
    Developer, ex-admin
    Вот тут пишут: https://cmake.org/cmake/help/v3.10/command/link_li...
    что это повлияет только на цели созданные в текущем или ниже CMakeLists.
    Подозреваю, что в link_libraries просто меняется переменная. А переменные в cmake ведут себя по умолчанию так как описано, т.е. изменения видны тут и ниже. Чтоб они были видны выше, нужны танцы с бубном, чего, видимо, нет в link_libraries

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

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

    @res2001
    Developer, ex-admin
    apt update - просто обновляет список доступных в подключенных репозитариях пакетов.
    Без этого обновления пакетный менеджер не знает какие пакеты устарели и требуют обновления, а так же не знает о новых добавленных пакетах.
    Перед установкой нового пакета лучше всего выполнить apt update, но можно и не выполнять, ничего особо страшного не будет.
    Вообще есть смысл регулярно выполнять sudo apt update & sudo apt upgrade - это приведет к обновлению всех требующих обновления пакетов.

    Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend

    Сюдя по всему у вас где-то в другом окне параллельно идет обновление или установка. Когда вы запускаете apt и/или графическую утилиту обновления, то они блокируют базу данных установленных пакетов и параллельный запуск может приводить к подобным ошибкам. Просто дождитесь, когда все установки закончатся.
    Ответ написан
    1 комментарий
  • Как настроить Zyxel Zywall 310?

    @res2001
    Developer, ex-admin
    Почему у вас маска в локальной сети 8? Если бы вам это было нужно, вы бы тут такие вопросы не задавали. Сделайте маску локалки адекватной (24 я думаю вам хватит) и все WAN интерфейсы станут действительно WAN, а не частью локальной сети.
    Ответ написан
  • Можно ли подменить WS2_32 библиотеку и есть ли готовая обёртка?

    @res2001
    Developer, ex-admin
    подумал может быть можно просто подменить эту библиотеку на свою?

    Просто положите свою библиотеку с таким же именем в каталог с программой.
    Виндовый загрузчик сначала исщет библиотеки в каталоге с запущенной программой и только потом по другим местам, указанным в PATH. Это касается и системных библиотек в т.ч.

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

    @res2001
    Developer, ex-admin
    Вам нужна книга, которую прочитаешь и сразу в "сеньоры" можно идти?
    Боюсь такой нет. Только практика и еще раз практика.

    Из продвинутых книг могу посоветовать:
    1. Эффективный и современный С++. 42 рекомендации по использованию C11 и C14
    в ней очень толково описаны нововведения в стандартах уже не совсем свежих, но эти нововведения чуть ли не самое главное изменение в языке до сих пор.
    2. Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
    3. Оптимизация программ на C++. Проверенные методы повышения производительности.
    Ответ написан
    2 комментария
  • Почему линковщик жалуется на undefined reference?

    @res2001
    Developer, ex-admin
    Проверьте, содержатся ли эти символа в подключаемых библиотеках.
    Проверить можно с помощью objdump или nm.
    glfw3 вы сами собирали? Возможно вы его собрали компилятором С++ и символа у него получились с плюсовым манглингом, а линковщик ищет с Сишным.
    Ответ написан