MaxxDamage, т.е. у вас играют обе директивы:
push route - добавляете маршрут на клиенте в сеть за сервером
route - добавляете маршрут на сервере в сеть за клиентом
MaxxDamage, push route - прописывает указанный маршрут на стороне клиента.
Вам же нужно прописать маршрут на сервере, это директива route
И не забывайте про п.2.
Roman, Зато в векторе есть push_back() и pop_back().
Классический стек - это аппаратный что ли? Конечно можно память адресуемую одним указателем и воспринимать как массив, но как-то это странно, имхо :-)
dsherbakov, Вас в гугле забанили?
Я вам дал ссылку на видюху :-) там чел пишет стек. Подобного добра в гугле хватает.
Вот тут про наследование. Вам не нужно писать лишнего в классах, не относящихся к самому стеку, можете просто в конструкторе что-нибудь вывести на экран и все. Просто формально несколько ничего не делающих классов, которые образуют некоторую иерархию наследования, чтоб сделать 5 классов как требуется.
Эти дополнительные классы вы будете в main() создавать и помещать в стек, а потом извлекать.
А сам стек делайте, чтоб он принимал ссылку/указатель на базовый класс вашей иерархии.
dserafimov, Пароль состоящий только из цифр подбирается за несколько минут при наличии доступа к базе паролей, т.е. физического доступа к компу (хотя бы чтоб загрузиться с флэшки и скопировать базу).
Сам сталкивался с такими начальниками :-) бороться обычно бесполезно. Для таких особо одаренных есть регулярная смена паролей - настройте замену пароля раз в месяц и чтоб предыдущие пароли нельзя было использовать минимум год.
Кстати, исключать физический доступ к компу нельзя, инсайдеры они везде вас окружают. Сегодня он нормальный сотрудник, а завтра решить отомстить компании :-)
На практике архисложные пароли могут применять только спецы по ИБ либо те у кого от длины пароля зависит бабло. Для обычного персонала достаточно пароля в 7-10 символов (цифры, буквы, спец. символы) и регулярная смена паролей. Ну и весь остальной комплекс мер безопасности :-)
dsherbakov, я уже писал, что для самого стека достаточно 1-2 классов/структур, остальные - придумайте сами произвольную иерархию классов, которые будете укладывать в стек.
На счет реализаций - в гугле их полно.
Стек одна из самых простых структур, вы просто начните думать в этом направлении и какое-то решение придет.
К тому же в стандартном std:vector весь функционал уже есть, от вашей реализации стека требуется только спрятать лишнее.
MaxxDamage, Нужно!
Тут 2 момента:
1. Сам сервер должен знать, что за каким-то клиентом (их может быть много) находится какая-то сеть. Для этого есть соответствующие директивы для настройки клиента и сервера OpenVPN (смотри ссылку выше).
2.Компы в сети за сервером должны знать, что сеть за клиентом доступна через вот этот сервер. Это уже отношения к OpenVPN не имеет. Если сервер OpenVPN является и шлюзом по умолчанию для компов внутри сети за сервером, то ничего дополнительно предпринимать не нужно. Если же нет - нужно любым доступным способом прописать маршрут до сети за клиентом через сервер OpenVPN.
Maksim Herasim, В целом согласен, но у автора вопроса и так все яйца в одной корзине, поэтому от виртуализации единственного сервера ничего не меняется, но гибкость повышаем. В дальнейшем можно будет подумать и о развитии серверной инфраструктуры. Бэкапы в любом случае "наше все" хоть с виртуализацией и дублированием хоть без.
Можете начать с того, что поставьте на комп любой сниффер и посмотрите что идет от вашего сервера.
Если сервер шлет текстовые сообщения, то в сниффере вы текст увидите и можно будет примерно понять что там внутри. Если же протокол сервера двоичный, то без анализа исходников не обойтись. Так же, возможно, протокол где-то описан в документации.
David Dato, Для 6 задачи у вас приведен код от 7.
В 7 в самом начале инициализируйте res нулем.
Восьмая - у вас какой-то бред.
Если хотите ее реализовывать циклом - можете поиграть побитовым сдвигом влево имея ввиду, что в степени двойки всегда только 1 бит установлен в 1, остальные все нулевые.
Чтобы понять почему это работает переведите любую степень двойки (N) в двоичное представление и (N - 1) то же и сравните эти два числа. А потом возьмите любое другое число, не являющееся степенью двойки, и проделайте то же самое.
Я думаю, есть еще одна самая важная причина - потому что в С++ давно уже есть замена подобным макросам - шаблоны, и у них нет вышеперечисленных недостатков.
Применительно к вопросу автора:
Если при установке софта в меню пуск и на рабочем столе ярлыки появились у всех пользователей, то приложение поставилось в варианте "для всех".
Перекидывать ярлык приложения, установленного "только для себя" другим пользователям нет смысла, т.к. сама установленная софтина не доступна другим пользователя - нет прав.
Универсального способа ставить весь софт в режиме "только для себя", как хочет автор вопроса не существует, т.к. далеко не все программы освоили этот скил. Кроме того - это надо научить пользователей выбирать режим установки в каждом отдельно взятом установщике.
Если речь идет о компьютере на предприятии, то я бы вообще запретил пользователям самостоятельную установку софта, т.е. отобрал бы у них админские права и запретил установку "только для себя".
Проблема с ограничением в 260 (не 255) символов в пути к файлу давно уже не актуальна в винде.
Ограничения могут быть в каких-то отдельно взятых программах, которые сами себе злобные буратины.
Сейчас актуальное ограничение - 32К символов.
Вы можете и дальше решать проблему, а можете сменить софт, на тот который не страдает старческими болезнями.
Как вариант - можно написать разрабам вашего любимого софта, чтоб убрали это древнее ограничение, мешающее жить.
Только в wavах не всегда отсчеты записаны в байтовые значения, чаще это int16, так же возможны int32, float и double. Анализируйте тип, который будут иметь элементы возвращаемого массива.
Кроме того, wav - это не всегда не сжатые данные, формат поддерживает множество вариантов сжатия. Есть вероятность, что scipy.io.wavfile.read что-то не поддерживает. Смотрел по диагонали исходники scipy.io.wavfile.read - создалось впечатление, что там поддерживаются только не сжатые данные.
Для C/C++ можно воспользоваться библиотекой libsndfile.
Эта библиотека поддерживает множество вариантов сжатия, применяемых в wavах, и не сжатые данные, конечно, то же.
Я вас удивлю, но в любом wav файле на каждую секунду обычно приходится по несколько тысяч значений.
Конкретное количество зависит от частоты дискретизации сигнала. Ее scipy.io.wavfile.read возвращает в первом параметре.
Типовой аудио файл с CD качеством записан с частотой дискретизации 44100 Гц - это значит, что на каждую секунду записи на каждый канал приходится 44100 отсчетов сигнала.
Кроме того в wav файле может содержаться не один канал записи, а несколько. Для стерео записи - это 2 канала и т.п. Для определения количествва каналов смотрите вторую размерность возвращаемого массива. Первая размерность - общее количество отчетов в файле.
Из минусов scipy.io.wavfile.read - он читает сразу весь файл. Сталкивался с очень большими файлами (несколько Гб), которые было проблематично прочитать за один раз (ограничения памяти), приходилось искать другие варианты или более мощный комп.
Дополню:
Когда указатель складывается/вычитается с целым числом (c+3), то и в этом случае заданное целое число является количеством элементов указанного типа. Т.е. по факту, если считать в байтах будет (c + sizeof(*c) * 3).
Для компилятора любой указатель (кроме void*) - это адрес первого (нулевого) элемента массива указанного типа, поэтому адресная арифметика является на самом деле "арифметикой массивов", если так можно выразиться. Все арифметические действия с указателями производятся на самом деле не в байтах, а в элементах массива, на который указывает указатель.
Почему указатель на void является исключением уже должно быть понятно - потому что void - это не известно какой тип и размер этого типа компилятор вычислить не может, поэтому адресная арифметика не поддерживается для void*.
Vladislav123321123, лог файл записывается в той же кодировке, что указана в команде chcp.
Текстовые файлы они не такие простые, как кажутся на первый взгляд :-)
push route - добавляете маршрут на клиенте в сеть за сервером
route - добавляете маршрут на сервере в сеть за клиентом