densaface: Есть, это использовать обратные оси. Только все равно при //* это обход всего элементов документа с тем, что бы на первом шаге получить все дочерние элементы и далее через предикаты их отфильтровать.
Кстати, почему "Но такой способ требует поиска по всей странице"? Записть .// означает поиск всех потомков текущего узла контекста и полный поиск будет если только текущий узел это корень. Что из приведенного кода совсем не следует.
Александр Ручкин: Так, т.е. для моего случая получается ∏(1+|Aᵢ|) - 1 (ввиду отсутствия разрядности 0). Проверил сейчас данные по другому набору множеств, действительно работает! Огромное спасибо! А в рамках какой дисциплины происходит изучение подобных задач? Т.е. где можно найти решение подобных задач (к примеру, если нужно будет посчитать в условии когда в комбинации будет учитываться положение в разрядах, т.е. {1,2} не тоже самое, что {2,1})?
Объяснение относительно понятно, только не уловил, как в 1+|M| посчитать М. Можно пояснить на упрощенном примере двух множеств: X={1,2,3}, Y={4,5}? В моем понимании для разрядности 1 возможно 5 вариантов (ввиду уникальности элементов), для разрядности 2 их уже 3*2=6. И в итоге возможно 11 комбинаций.
Евгений Ткаченко: Т.е. невозможно это сделать так, как мы это привыкли делать в браузере. Т.е. работая с диалоговым окном. Да, можно конечно для Firefox создать профиль в котором в настройках можно указать "скачивать сразу в папку Х". А без этих танцев в бубном получить диалоговое окно и выбрать, куда сохранить, не получиться. По крайне мере я не смог найти работающего способа.
ostrogorcev: Ах вот как. Попытка накрутки счетчика. Ну тогда самое разумное это PhantomJS/Slimer/ CasperJS и через Selenium управлять + написать код эмулирующие типичные действия пользователей ("поведенческие факторы").
Riddik: Ну начнем с того, что я в Самаре. И особенности валютного законодательства мне приходилось самому в отделении разъяснять. Но ладно, я это понять еще могу, меня это так сильно напрягало, т.к. работники отделения всячески мне старались помочь, вместе все решали. Благо хабр в этом отношении сильно помог, там как раз тогда вышло пару очень дельных статей. А просто убило: реквизиты доступа к главному аккаунту (он может создать другой аккаунт и дать права на финансовые операции) записаны на бумаге и лежат в отделении. Прямо вот так логин и пароль. Сменить возможно, но и их запишут на бумагу! Я не беру даже вариант утечки данных через работников банка. Банально их можно видеть проходя мимо. Потом еще за меньше чем год стоимость обслуживания поднимали раза три, причем за раз процентов так на 20 если за давностью лет не ошибаюсь. В общем ощутимо в условиях когда у меня контракт фиксом. И это 2012 год, ни каких колебаний курса. Негибкие тарифы (под меня, ИП с фиксированным контрактом и одной операцией в месяц ни чего предложить не смогли). Веб интерфейс только IE, причем я-ля 90-ые, полный кошмар. Потом была ситуация, когда потеряли заявку на перевод средств. Я у себя в ЛК заявку вижу, работники банка у себя её не видят. Причину отказа по документам понять совершенно невозможно, приходится дозваниваться до валютного контроля и голосом выяснять, в чем дело.
В общем сильно пожалел, что с ними связался. Просто мне его вроде как неплохо нахваливали, а по факту там визикам еще как-то более менее. Контекст "программер ИП долгосрочный контракт" это не для них точно. А вот еще, SQL ошибки были прямо в браузере. Вообще вот нашел свой отзыв тех лет: www.banki.ru/services/responses/bank/response/3953100
Ellik: Можно остаться в рамках EAV в принципе. Просто нужно добавить в таблицу со значениями еще одно поле - хэш (md5 как правило) от значения атрибута. В случае md5 добавляем VAR(32), ставим на него уникальный индекс. Если в таблице храниться не один тип атрибутов (только цвет, только размер...) и сразу все, то уникальный индекс нужно вешать на 2 поля - хэш от значения и идентификатор конкретного атрибута.
Даже пачка кривых и глючных джумл базу ложит сильно не сразу. Поэтому не думаю, что дело в неспособности базы работать. Тем более бессмысленно базу разносить на кластер. Начинать нужно с логов, там точно написано кто из связки nginx-php-mysql упал и почему.
Cosmos: А почему ни фигня? Сервисов готовые предоставить распознавание капчи людьми предостаточно, что бы это былой какой либо проблемой (и плюс это дешево). А вот когда на странице много JS, то тут только headless серверный браузер в духе Phanton (ну или через Selenium Server) помогает.