А значит, программисту, который будет работать с файлом, придётся быть в курсе, как файл устроен внутри.
Это не так. Принцип черного ящика прекрасно работает в процедурных ЯП и используется повсеместно - просто используешь предоставленный интерфейс и не лезешь внутрь. Возьмите, например, Linux API и его функции работы с файлами - вы же не знаете, что там внутри делается, просто вызываете read/write и передаете файловый дескриптор и не запариваетесь о кэшировании, о том, какая файловая система ни диске и т.п. вещах. Вполне себе ООП подход.
ЯПы с поддержкой ООП просто предоставляют синтаксический сахар для написания программы используя ООП подход. Но сам по себе ООП подход не ограничен только ООП языками.
Хотя сложные варианты применения ООП, например с глубокой иерархией классов и полиморфизмом, реализовать на процедурном ЯП будет достаточно сложно, но выполнимо. Но в большинстве случаев такого не требуется, а там где требуется обычно используют ООП языки.
Сам питон и вся его система классов реализована на Си.
Владимир, Похоже микрософт еще куда-то вплила дублера. Раньше хватало этого параметра на все адаптеры.
Возможно есть похожие параметры в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Intrefaces в подпапках. У меня там ничего такого нет.
Drottarutarnum, Явно что-то с ассоциациями файлов или приложением по умолчанию, а может что-то блокирует открытие.
Раз вы недавно переустанавливали винду, то есть смысл сделать это еще раз с форматированием системного диска.
Вы ищите замену Active Directory? Тогда это самба, есть на линуксе. Это, конечно, не совсем полноценная замена, но зато бесплатно. Самбу можно привязать к OpenLDAP для авторизации.
Служба каталогов - это OpenLDAP, но не думаю, что вам нужна сама по себе служба каталогов - это же просто база данных. Клиентов для OpenLDAP хватает всяких разных, в т.ч. и под винду есть.
David It, В представленном выше коде уже все делается.
Единственный момент, по моему, dir сортирует по дате модификации, а не дате создания. Но обычно это и нужно.
Какую дату для сортировки использовать задается в dir параметром /T, я его не использовал, можете поставить то что нужно.
Для этого обычно нужно не делать ВПН сервер шлюзом по умолчанию. Тогда по ВПН будет ходить только трафик до сети предприятия. Но при этом может быть необходимо добавить маршруты в таблицу маршрутизации, если это не делается на этапе создания ВПН соединения.
В винде по умолчанию при создании ВПН подключения устанавливается галка "использовать как шлюз по умолчанию", она находится в глубине настроек IPv4 в свойствах ВПН подключения.
Но у вас какая-то флешка и ВПН, видимо, не стандартный. Как оно там у вас настраивается и работает не ясно.
NikitaW, И да и нет :)
На сколько я в курсе, веб-сервер можно настроить так, чтобы он воспринимал, например, расширение html как запуск приложения, в этом случае html файл может восприниматься как скрипт PHP.
Тогда запускается этот скрипт и генерирует динамический ответ клиенту. Т.е. в этом случае html файл должен действительно содержать PHP код.
Обычно так не делают, но, по моему, запрета на подобные шаманства нет.
Wataru, valgrind отдельно, sanitizer отдельно, по моему так. Это ж разные инструменты.
sanitizer включается флагами компиляции, для валгринда достаточно -g указать и запустить программу из-под него.
В валгринде, на сколько я помню, инструмент для проверки памяти называется memcheck
Под виндой в MSVS нет ни того ни другого.
Отлично он понял и выдал нормальный ответ. Dmitrii вам посоветовал воспользоваться специализированными инструментами для поиска утечек памяти, т.к. кода довольно много и глазами тут искать ошибку - ну такое себе развлечение, да и может быть, что конкретно в этих участках кода ошибки нет.
Могу добавить от себя: если вы собираете приложение в MSVS, то запустите приложение под отладчиком без точек останова. Когда возникнет исключение, то вас выкинет в отладчик, отладчик будет остановлен, скорее всего, на каком-то системном вызове с ассемблерным кодом, вы должны по стеку вызовов перейти к вашему последнему коду (выбрать в стеке вызовов ваш последний метод) и искать причину ошибки там.
Ошибки связанные с утечкой памяти могут быть достаточно сложными, т.к. утечка может произойти в одном месте программы, а исключение из-за утечки быть совершенно в другом месте.
NikitaW, Чаще всего это статика. Но могут быть варианты в зависимости от настроек веб-сервера.
Сейчас статика это обычно картинки, js скрипты, css и т.п. файлы, на которые могут быть ссылки в html коде.
Динамика - это ответ, сгенерированный приложением на лету.
Я не веб-разработчик, так что специфическими терминами могу не владеть, но некоторую основу знаю.
David It, Цикл - это просто цикл, он выполняет заданные операции некоторое количество раз.
В теле цикла вы можете написать свою логику, сохраняя даты каталогов, потом их отсортировать и т.д. и т.п. В общем, сделать можно. Но это слишком сложно.
Поэтому я вам настоятельно РЕКОМЕНДУЮ смотреть на конструкцию с dir - она решит ваши проблемы:
for /f "skip=1 tokens=* delims=" %%a in ('dir /ad /o-d /b c:\test\*') do echo %%a
Тут dir выводит список подкаталогов в заданном каталоге, отсортированном по убыванию даты модификации (т.е. каталог с самой последней датой модификации будет первым). Дальше опцией skip=1 задается пропуск первой строки в выводе dir, т.е. первого каталога сверху.
David It, Никак. Я потому и привел вариант с dirом, т.к. тут можно задать сортировку по дате.
А дальше уже параметрами for /f вы сможете пропустить первую строку вывода, например. А так же наложить дополнительную фильтрацию по имени, используя канал с findstr.
trlhrn, Сам когда-то делал методом научного тыка, он же метод исключения (удаляем драйвер и смотрим на поведение спулера). Других вариантов не нашел. Но мне было проще - принтеров меньше.
Можете посмотреть журнал, возможно там будут какие-то ошибки от спулера с указанием драйвера, но это не обязательно.
Так же можно начать с последнего установленного принтера/драйвера.
Как вариант - завести второй принт сервер и постепенно перетаскивать на него принтера с одновременным наблюдением за поведением спулера на нем. После добавления очередного принтера второй принт сервер так же начнет подвисать, значит виноват последний добавленный драйвер.
bLercs, У shared_mutex алгоритм работы отличается от стандартного варианта мьютекса.
Надо использовать тот мьютекс, который нужен в данной конкретной задаче.
Да. Но зачем вам умный указатель на мьютекс? Внедрите мьютекс непосредственно в защищаемый объект.
Если объект - это какой-то стандартный контейнер, то возможно надо создать класс своего защищенного контейнера, на базе стандартного.
Это не так. Принцип черного ящика прекрасно работает в процедурных ЯП и используется повсеместно - просто используешь предоставленный интерфейс и не лезешь внутрь. Возьмите, например, Linux API и его функции работы с файлами - вы же не знаете, что там внутри делается, просто вызываете read/write и передаете файловый дескриптор и не запариваетесь о кэшировании, о том, какая файловая система ни диске и т.п. вещах. Вполне себе ООП подход.
ЯПы с поддержкой ООП просто предоставляют синтаксический сахар для написания программы используя ООП подход. Но сам по себе ООП подход не ограничен только ООП языками.
Хотя сложные варианты применения ООП, например с глубокой иерархией классов и полиморфизмом, реализовать на процедурном ЯП будет достаточно сложно, но выполнимо. Но в большинстве случаев такого не требуется, а там где требуется обычно используют ООП языки.
Сам питон и вся его система классов реализована на Си.