Настроить права на смену директории сервисом, chroot, просто прямая настройка сервиса… вобщем это я и имел ввиду, когда советовал почитать про ОС во избежание :)
-1. Изучить базовые алгоритмы, теорию алгоритмической сложности, что позволит понимать, как всё написанное будет выполняться, что позволит не писать проверку на ложность преобразованием в строку и т.п… Да, Кнута на полку тоже можно поставить.
0. Изучить строение операционных систем на уровне выше чайника. Иначе даже в веб программировании возможны ляпы, которые поставят под угрозу всю систему (привет ссылкам с ../ и т.п.). На полку поставить можно Таненбаума
Не читал всю статью (и не оценивал её), но у Вас как минимум утверждение «Объект должен быть целиком потокобезопасный, а это значит что все public методы (кроме конструктора и деструктора) нужно синхронизировать.» неверно. Кроме алгоритмов блокирующих, которые требуют безусловной синхронизации, есть ещё неблокирующие алгоритмы и immutable объекты, которые так же потокобезопасны.
Вообще-то переводить часы самому НЕЛЬЗЯ. Половина программ иначе попадёт под глюки времени, т.к. машинное время — это число секунд с какого-то момента, а положение стрелок часов — это только отображение этого времени.
Не настолько старая, как большинство игр из этого поста, но достаточно интересная тактическая игра.
Не настолько старая, как большинство игр из этого поста, но достаточно интересная тактическая игра.
0. Изучить строение операционных систем на уровне выше чайника. Иначе даже в веб программировании возможны ляпы, которые поставят под угрозу всю систему (привет ссылкам с ../ и т.п.). На полку поставить можно Таненбаума
P.S. Никогда не понимал, зачем сделали загрузку следующих страниц под предыдущими — протестировать, сколько памяти сожрёт браузер из-за одной вкладки?