Задать вопрос
  • Как настроить VPN на удаленном рабочем столе при подключении через RDP?

    @brar
    Проблема в том, что в настройках вашего vpn-интерфейса при его включении задано что-то типа "Использовать как default route". Поэтому ваше rdp-соединение рвется. Найдите и выключите эту настройку в настройках своего впн-интерфеса. Но тогда естественно весь трафик продолжит ходить через основной интерфейс. Таким образом, вам надо либо руками добавлять маршруты, до которых вы хотите ходить через впн-интерфейс, либо впн интерфейс должен их получать от впн-сервера, к которму ваш впн-интерфейс подключается.
    UPD. А ну или добавить стаический маршрут через основной интерфейс до айпиадреса, с которого вы подключаетесь по RDP. Если у вас адрес динамический, можете добавить всю подсеть.
    Ответ написан
    1 комментарий
  • Как правильно компилировать на с++?

    1. Для корректной работы необходимо собирать программы в release версии. Сейчас вы собираете в debug версии (суффикс D в имени VCRRUNTIME140D.dll на это намекает).
    2. Для корректной работы требуется установить пакет vc-runtime (при динамической линковке рантайма). Если же vc-runtime линковать статически к exe файлу, то его ставить не нужно и программу можно безболезненно переносить между компьютерами.
    3. Для решения проблем, когда на целевом компьютере отсутствуют библиотеки, люди изобрели инсталяторы, котрые эти библиотеки доустанавливают.
    Ответ написан
    Комментировать
  • Можно ли как то из Android Studio залить проект на GitFlic (русский аналог GitHub)?

    @NIR-Ginko
    Я не очень понимаю, какие трудности можно испытывать при заливе на разные git хостинги, но предложу вам такой рецепт:

    1. Зайти в свой аккаунт на GitFlic;
    2. В правом верхнем углу, рядом с вашим аватаром, нарисован плюсик;
    3. Нажимаем на плюсик и видим выпадающее меню;
    4. В меню выбираем пункт "Импорт проекта";
    5. На новой странице вписываем ссылку и логин-токен для импорта (хотя при анонимном доступе по HTTP(S) логин скорее всего не нужен), а также новый путь проекта на GitFlic;
    6. Нажимаем кнопочку "Создать проект";
    7. ...
    8. PROFIT!


    А ещё можно написать им на support@gitflic.ru, если что-то не получилось - там очень отзывчивые люди, как по моему опыту.
    Ответ написан
    Комментировать
  • Какую key-value БД использовать с данными в 10 млрд строк записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.

    1) У меня устойчивое дежа-вю. Периодически в топик заходят люди с именно этим вопросом. Разница только в количестве. Кому 1 млрд. Кому 10. Можно также поискать и слинковать эти вопросы в один большой вопрос.

    2) MySQL который указан в тегах - нормально справляется с этой задачей. Он и не такое число строк
    умеет хранить. И если взять MariaDb - там есть куча новых engines которые можно крутить для тюнинга
    именно скорости чтения. Разумеется жертвуя чем-то другим. Транзакциями и записью например.

    3) Непонятно что такое минимальное время? Если использовать дисковую БД типа MySQL то деградация времени
    поиска будет примерно зависеть от логарифма количества строк. Тоесть деградация будет но очень медленно.
    Для 10 млрд индекс по key будет содержать порядка 4-5 уровней BTree дерева. Тоесть дисковой системе
    нужно будет сделать до 5 или до 6 рандомных чтений (если нужные данные лежат в таблице). Это достаточно
    быстро для того чтобы моргнуть глазом за это время. Рандомное чтение любого блока из магнитного диска
    класса SATA-3 занимает порядка 20 милисекунд. Тоесть для 5 уровней - это 100 милисекунд. Для дисков
    класса SSD и это время можно уже считать меньше милисекунды. Точно я не знаю надо мерять.

    Испортить это время может сетевой лаг который в данной задаче мы просто не учитываем. Считаем что сеть идеальна.

    4) Непонятно зачем здесь указан Redis. Его задача не хранить 10 млрд а хранить только горячие
    ключи по котороым идет очень частый доступ. Если автор хочет In-memory хранение - то время можно
    еще сильнее улучшить. Его можно свести практически до нуля (я вангую несколько микро-секунд)
    но придется прикупить планок памяти побольше и посчитать сколько памяти
    надо для 10 млрд key/values неизвестной длины. Вообще крутить регулятор в направлении
    микро-секунд нет особого смысла т.к. другие звенья вашего стека (приложение и сеть) могут
    быть на порядки медленнее а это вообще нивелирует всю пользу от такой оптимизации.
    Ответ написан
    41 комментарий
  • *** stack smashing detected ***: terminated Как исправить и с чем связано?

    Alexandroppolus
    @Alexandroppolus
    кодир
    _playingField[20] - за пределами массива

    можно от _playingField[0] до _playingField[19]
    Ответ написан
    Комментировать
  • Почему вылетает исключение при удалении объекта?

    maaGames
    @maaGames
    Погроммирую программы
    Нет виртуального деструктора у IContainer, а удалять пытаешься полиморфно.
    Ответ написан
    Комментировать
  • Как выводить русские символы в си?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как это работает

    Поскольку русский -- не часть ASCII, работает это по-разному в зависимости от кодировки. Если предположить, что исходник в UTF-8, то русские символы закодированы двумя байтами, а %c выводит только один. Если на одном выведенном байте остановиться -- получится фигня с вопросом. Но если вывести подряд все байты многобайтового символа -- получится этот символ.

    как исправить

    вариантов несколько. Самый простой -- выводить строки целиком. Если надо выводить посимвольно, можно узнавать количество байт в представлении одного символа функцией mblen, типа того:
    #include <locale.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main() {
      char *a = "Привет, мир";
      int s;
      setlocale(LC_ALL, "");
      for (; *a != '\0'; a+=s) {
        s = mblen(a, strlen(a));
        printf("%.*s-", s, a);
        }
        return 0;
    }

    Здесь setlocale нужен для того, чтобы mblen понял, в какой кодировке символы на входе. Локаль в момент выполнения должна быть совместимой с кодировкой исходника в момент компиляции, если это условие не выполняется, работать будет неправильно.

    Ещё вариант -- работать не с многобайтовой кодировкой а с wchar_t:
    #include <locale.h>
    #include <stdio.h>
    #include <stddef.h>
    
    int main() {
      wchar_t *a = L"Привет, мир";
      setlocale(LC_ALL, "");
      for (; *a != '\0'; a++) {
        printf("%lc-", *a);
        }
        return 0;
    }

    Здесь setlocale нужен для другого: он говорит внутренностям printf в какую локаль выполняется вывод чтобы в неё конвертировать wchar_t. Если локаль во время выполнения не будет соответствовать кодировке исходника, код всё равно будет работать.
    Ответ написан
    2 комментария
  • Почему возникает free(): double free detected in tcache 2? (в деструкторе)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему возникает free(): double free detected

    Потому что в этом классе не реализован конструктор копирования (а так же перемещения и операторы присваивания, но это пока не вызывает таких же ошибок). В результате при копировании объекта класса String копия получает то же значение str что и оригинал с которого она скопирована, в деструкторе копия удаляет str оригинала, а потом это же делает оригинал в своём деструкторе. См. правило трёх/пяти.
    Ответ написан
    Комментировать
  • Почему strcat перезаписывает переменные?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    почему так происходит?

    Потому что str и word -- это переменные размером в один символ, а в строке char delimeters[6] = " .,!?;" отсутствует 0-терминатор. Поэтому
    - scanf("%s", &str); вылезет за пределы str если ввести здесь что угодно.
    - strcat(&word, &c); вылезет за пределы word если в c будет не пустая строка. А в c будет неизвестно что, потому что c = getchar() не добавляет в эту строку 0-терминатор.
    - strchr(delimeters, c); может вернуть что угодно, если c не входит в delimiters.
    Ответ написан
    8 комментариев
  • Как быстро получить случайное слово из файла на 12 ГиБ?

    @dima20155
    you don't choose c++. It chooses you
    Вариант с потолка: генерируйте случайную позиции в файле (от нуля до размера файла в байтах). Читаете все окружающие символы пока не найдете два символа новой строки ('\n') до и после исходной случайной позиции. Между этими символами новой строки и будет ваше случайное слово.

    Рандом, конечно же, не совсем честный и сильно зависит от различия в длинах строк в файле.
    Ответ написан
    22 комментария
  • Как максимально очистить диск C?

    @kalapanga
    Krenicc, насоветованные в ответах программы это конечно хорошо, но Вы бы написали размер своего диска C! Ну и версию Windows уж заодно. А то может и без анализирующих программ ясно, что "нужно больше золота!"
    На это намекает и то, что Вы уже сейчас что-то распихиваете по другим дискам - это не нормально!
    Ответ написан
    8 комментариев
  • Почему код завершается с кодом 0?

    WNeZRoS
    @WNeZRoS
    Код завершения процесса 0 - стандартный код обозначающий что всё завершилось без критичных проблем (т.е. успешно, хороошо).
    На скриншотах никаких ошибок нет, только сообщения от дебаггера о загрузке стандартный dll файлов и завершении потоков.
    Ответ написан
    Комментировать
  • Почему типы из заголовка cstdint доступны без его включения?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Вам повезло. Какой-то из включаемых вами других хедеров уже включает cstdint. Поскольку система инклудов в C++ идет еще из C и это дикое и неудобное легаси (текст хедера тупо вставляется в файл вместо include препроцессором), то такое рекурсивное включение работает.

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

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    Не нужно, а можно.
    Если dhcp развернут на винде - получаем управление сетью в одном месте. Также можем получить failover, если необходимо. Виндовый dhcp автоматически в dns зону вносит все выданные адреса.

    Вообще - вы строите сеть. Вам виднее, как и что можно сделать. Возможность есть, а пользоваться ей или нет - это уже ваш выбор.
    Ответ написан
    Комментировать
  • Проблема автозапуска exe файла?

    hint000
    @hint000
    у админа три руки
    Добавлять в автозапуск нужно не сам *.exe, а ярлык на него. И в ярлыке нужно указать рабочую папку.

    А сейчас файлы может быть и создаются, только не там, где вы их ждали. Поищите эти файлы по всему диску, есть шанс, что вы их найдёте во временной папке или где-то ещё. Либо программа пыталась их создать где попало, но не смогла из-за недостатка прав доступа в той папке.
    Ответ написан
    1 комментарий
  • Как с вм2 подключиться по ssh ключу к вм3, если закрытый ключ храниться на 1 вм?

    Vindicar
    @Vindicar
    RTFM!
    У некоторых SSH клиентов есть ключ -J, попробуй его.
    Альтернативно, установи первое соединение с пробросом порта на локальную машину, и коннекться ко второму хосту через проброшенный порт.
    Ответ написан
    2 комментария
  • Как по вашему мнению рациональнее собрать дисковую систему на сервере?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    2 raid1 под систему и эти ваши var/www
    4 raid10 под базу

    ничего лучше raid10 нет, только raid 10 на 12 дисках )))
    Ответ написан
    4 комментария
  • Как составить блок-схему из готового кода C++?

    b9552f28a681d0dbbf04e49ec26b8a0f-800x.jpg
    Ответ написан
    Комментировать
  • Что такое PRIMARY KEY, CONSTRAINT, FOREIGN KEY, REFERENCES, INSERT INTO и для чего они нужны?

    @Akina
    Сетевой и системный админ, SQL-программист.
    PRIMARY KEY - первичный ключ. Поле, комбинация полей либо выражение (последнее MySQL не поддерживает), которое не может быть NULL и не допускает дубликатов (уникально для каждой отдельной записи в пределах таблицы). Поддерживается путём создания соответствующего уникального индекса и наложением ограничения NOT NULL на все используемые в выражении поля. По факту - однозначно идентифицирует запись. Кроме того, в MySQL выражение первичного ключа является кластерным индексом. См. Индекс -> Уникальный индекс -> Первичный индекс.

    CONSTRAINT - ограничение. Правило, которое не допускает создания записи, для которой значение выражения ограничения имеет значения FALSE (можно TRUE или NULL).

    FOREIGN KEY - внешний ключ. Ограничение, которое требует, чтобы указанное выражение для текущей записи присутствовало среди значений указанного выражения референсной таблицы (допускается и внешний ключ на ту же таблицу). Точнее, чтобы такая проверка присутствия не возвращала FALSE (можно TRUE или NULL).

    REFERENCES - определяет референсную таблицу и референсное выражение.

    INSERT INTO - запрос, вставляющий новые записи в таблицу.
    Ответ написан
    Комментировать