Дано: урл вида http://www.zliy.pes/members/
На папке установлена Basic Authentication (.htaccess):
AuthType Basic
require valid-user
Надо: сделать урл вида http://www.zliy.pes/members/freeaccess/ доступным без авторизации.
Попытка #1 (неудачная): положить в /members/freeaccess/ .htaccess следующего содержания:
Allow from all
Попытка #2 (удачная): положить в /members/freeaccess/ .htaccess следующего содержания:
Allow from all
Satisfy any
Усложняем задачу о выборе случайного элемента из потока неизвестной длины:
Есть некий поток элементов. Вызывая снова и снова функцию getnext(), вы получаете каждый раз следующий элемент из потока, и так до тех пор, пока функция не вернет EOF, что означает, что поток закончился. Гарантировано, что все элементы, полученные таким образом, будут отличаться друг от друга. Вернуться к началу потока, или получать элементы в каком-то другом порядке, кроме как один за другим с помощью getnext(), невозможно.
Известно, что поток когда-нибудь кончается, но заранее про количество элементов ничего не известно.
Требуется: написать функцию, которая, когда ее вызывают (а вызывают ее один раз), возвращает массив из n элементов потока, выбранных случайным образом, притом у каждого из элементов потока одинаковая вероятность быть возвращенным этой функцией.
Функция должна использовать n+O(1) памяти (n — количество элементов, возвращаемых функцией).
У этих задач существует практическое применение: потоком неизвестной длины может служить файл, элементами потока — его части (строки в случае текстового файла). Данная задача заключается в выборе N случайных строк из файла за одно прохождение без хранения в памяти всех строк.
Решение: (more…)
Есть некий поток элементов. Вызывая снова и снова функцию getnext(), вы получаете каждый раз следующий элемент из потока, и так до тех пор, пока функция не вернет EOF, что означает, что поток закончился. Гарантировано, что все элементы, полученные таким образом, будут отличаться друг от друга. Вернуться к началу потока, или получать элементы в каком-то другом порядке, кроме как один за другим с помощью getnext(), невозможно.
Известно, что поток когда-нибудь кончается, но заранее про количество элементов ничего не известно.
Требуется: написать функцию, которая, когда ее вызывают (а вызывают ее один раз), возвращает выбранный случайным образом один из элементов потока, притом у каждого из элементов потока одинаковая вероятность быть возвращенным этой функцией.
Функция должна использовать фиксированное количество памяти (иными словами, O(1) памяти).
Решение: (more…)