В C #:
public static IEnumerable<IEnumerable<T>> Combinations<T>(this IEnumerable<T> elements, int k)
{
return k == 0 ? new[] { new T[0] } :
elements.SelectMany((e, i) =>
elements.Skip(i + 1).Combinations(k - 1).Select(c => (new[] {e}).Concat(c)));
}
Использование:
var result = Combinations(new[] { 1, 2, 3, 4, 5 }, 3);
Результат:
123
124
125
134
135
145
234
235
245
345
Я думаю, что лучший способ - удалить .htaccess из общедоступного каталога (структура каталога Zend Framework) и поместить его со следующим содержимым в свой «корневой» каталог:
RewriteEngine On
RewriteRule ^.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.$
RewriteRule ^(.)$ /public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ /public/index.php [NC,L]
Действительно, запускать приложения Zend Framework на общем хостинге - не лучшая идея. Я бы очень рекомендовал приобрести виртуальный частный хостинг (VPS). Существуют очень хорошие и недорогие хостинги с уже установленными и регулярно обновляемыми Zend Framework и другими фреймворками. Я нахожусь на servergrove , и пока все идет отлично!
Но это не значит, что вы не можете заставить его работать на общем хостинге. Вам просто лучше работать с .htacess. Поместите содержимое общей папки в корневой каталог и настройте пути в bootstrap.php, убедитесь, что все другие папки недоступны напрямую, и используйте обычный подход ZF для маршрутизации всего через ваш index.php.
м на servergrove , и до сих пор это было здорово!Но это не значит, что вы не можете заставить его работать на общем хостинге. Вам просто лучше работать с .htacess. Поместите содержимое общей папки в корневой каталог и настройте пути в bootstrap.php, убедитесь, что все другие папки недоступны напрямую, и используйте обычный подход ZF для маршрутизации всего через ваш index.php.
м на servergrove , и до сих пор это было здорово!Но это не значит, что вы не можете заставить его работать на общем хостинге. Вам просто лучше работать с .htacess. Поместите содержимое общей папки в корневой каталог и настройте пути в bootstrap.php, убедитесь, что все другие папки недоступны напрямую, и используйте обычный подход ZF для маршрутизации всего через ваш index.php.
Я был в той же ситуации и поместил библиотеки zend в папку под общедоступными, например 'src '- и используйте .htaccess Deny from All. Придется переделать пару путей, но все работает нормально.
Я предлагаю самое простое: разрабатывайте свои приложения так, чтобы index.php находился в вашем корневом каталоге (еще лучше - всегда определяйте PUBLIC_PATH - dirname (__ FILE __);
в вашем index.php и сделайте ссылки относительно этой константы). Вместе с папками приложения и библиотеки. Вы можете легко сделать их недоступными извне, используя deny from all
в .htaccess.
Константа PUBLIC_PATH также помогает, когда ваша публикация не является общедоступной. (общедоступный html или / общедоступный html / www (в моем случае))
Включите этот файл .htacces по своему базовому пути (то есть /../public):
RewriteEngine On
# Exclude some directories from URI rewriting
#RewriteRule ^(dir1|dir2|dir3) - [L]
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ /public/index.php [NC,L]
и оставьте .htaccess, который находился в каталоге publc, где он был.
Таким образом, у вас будет 2 файла .htaccess, один в общедоступном каталоге (обычный из документации Zend Framework), а второй - под вашим базовым путем (тот, который я опубликовал выше).
. . . Как Magento использует Zend framework ??? Я использую XAMPP, и я установил Magento локально без изменения php.ini, http.conf или виртуального хоста.
You should place your project's Public folder to www folder in the host, so your address will become yourdomain.com/. Your source code folder such as library, applications... should be place at same level with www folder, not within it. This method will promote the security of your site