DennyD314, Когда начинаешь работать с подобными (большими) массивами данных стандартные структуры уже не катят и нужно полностью переходить на numpy/scipy. Поэтому убрать asarray из функции будет вполне корректно.
Функции numpy поддерживают преобразования "по месту", т.е. будут изменять входной массив (или им можно передавать уже заранее сформированный массив). Это еще больше может ускорить их работу - не нужно будет выделять и инициализировать память под возвращаемый массив.
PS: у интела есть своя сборка питона с оптимизированными версиями некоторых библиотек, в т.ч. numpy/scipy, обещают ускорение в 20 раз по сравнению со стандартными версиями. Оптимизировали с помощью Intel MKL.
Что значит клинит?
В каких ситуациях? Приложениях? Какой именно звук?
В общем случае могут быть виноваты драйвера или высокая загрузка проца, возможны и другие варианты.
Драйвера лучше брать не у производителя ноутбука, а у производителя звуковой карты/чипа.
Загрузку проца можно посмотреть в менеджере задач в то время когда начинает "клинить".
DennyD314, Кроме того я согласен с ответом dmshar - это то же имеет место быть.
Когда нужно обрабатывать большое количество данных, то надо использовать numpy его массивы и его функции для работы с массивами, а не родные питоновские структуры.
Я практически уверен, что реализация with_min с использованием numpy array станет лидером по производительности (без лямд, конечно).
DennyD314, Зная, что вы передаете в функцию лямбду, вы должны сразу подумать, что эта лямбда будет вызываться и это дополнительные накладные расходы. А когда у вас в массиве 100500 элементов и на каждый нужно вызвать лямбду, то это уже будет заметно.
Добавьте еще реализацию аналогичную with_min, но с использованием numpy массивов, numpy.min() и numpy.abs(). Было бы интересно посмотреть на результат.
По второму системнику я бы начал с того, что отключил бы в нем все, кроме памяти по минимуму и видео (если не встроенное) и в таком виде попробовал загрузиться.
Судя по описанию 3 пунктом стоит заняться однозначно.
Еще для тестов хорошо бы поиметь нормальный работающий блок питания.
MaxxDamage, Почему в обеих командах одинаковые подсети? Команды для разных сетей, я же описал ситуации, когда та и другая используются. Вы статью прочитали по ссылке? Обе команды пишутся в конфиге сервера.
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.