+5.63
Рейтинг
17.43
Сила

Orhideous

Оптимизация индексирования Shpinx для LiveStreet, исправляем древнюю проблему с закрытыми блогами

Суть проблемы — LS ищет и находит сфинксом заметки и комментарии из всех блогов, независимо от того имеете вы к ним доступ или нет.

Чинится это просто:
  1. вносим в поисковый индекс id закрытого блога к которому относится топик или комментарий, либо 0 если этот блог не закрытый.
  2. передаём в поиск id текущего пользователя
  3. находим список закрытых блогов в которые имеет доступ текущий пользователь.
  4. используем этот список расширенный нулём (что добавит все не закрытые блоги в результаты поиска для любого пользователя) со стандартной возможностью фильтрации Сфинкса


Читать дальше →

Руководство по оформлению вопросов.

Уважаемые вопрошающие, перед тем, как опубликовать свой вопрос, убедитесь, что прочитали и осмыслили данное руководство и привели свой топик в соответствии с ним. Это поможет специалисту быстрее сориентироваться в вашей проблеме, а вам получить ее решение в кратчайшие сроки.

1. Убедитесь, что подобный вопрос еще не задавали. Просмотрите FAQ, воспользуйтесь поиском по сайту. Вы не первый, кто сталкивается с проблемой, и вполне возможно, что ваша проблема уже решена. Не тратьте свое время и время участников сайта на повтор ответа, это не очень вежливо с вашей стороны.

2. Опишите в заголовке топика суть проблемы. Заголовки типа "ошибка", "помогите, пжл" — прямая и быстрая дорога в минус. Заголовок должен точно выражать суть вашей проблемы. Например "Публикация топика проходит очень медленно", "Как убрать капчу при регистрации?". Если вы получаете сообщение об ошибке, то резонно будет выделить часть его в заголовок. Например "Ошибка permission denied во время загрузки изображений". После того как вам удалось сформулировать заголовок точно и лаконично, воспользуйтесь поиском еще раз.

3. Опишите в тексте сообщения вашу ошибку полностью. Особенно важны следующие данные:
— Ситуации в которых проявляется ошибка
— Текст ошибки, если есть
— Действия, после которых ошибка начала проявляться (переезд на новый хостинг, установлен новый плагин)

Дайте краткую информацию о вашем сайте. Очень важно указать:
— Версию движка
— Список установленных плагинов

Для ошибок, связанных с сервером, нужно указать:
— Тип хостинга (свой сервер, шаред хостинг)
— Параметры хостинга
— Используемые связки серверов (apache+mod_php, ngnix+apache+php, ngnix+php_fpm)
— Логи ошибок сервера (их желательно выгрузить на файловое хранилище Dropbox или Яндекс.Диск)
Если вы не можете предоставить эти данные, будьте готовы к тому, что доброволец, который захочет решить вашу проблему, попросит у вас данные доступа к панели управления хостингом, или к серверу.

Для ошибок связанных с производительностью укажите:
— Данные, показываемые панелью производительности (под администратором, в футере всех страниц)
— Вывод плагина Debug Toolbar
— Вывод команды top (если есть доступ к консоли сервера)

Не скромничайте. Чем больше информации получит специалист, тем лучше.

4. Опишите действия, которые вы уже предприняли для решение ошибки. Чистили кэш — напишите. Отключали плагины — напишите.

5. Не «апайте» топик каждый час — вас сразу заминусуют. Если хотите привлечь внимание к своей проблеме, продолжайте решать ее самостоятельно. Если спустя сутки вам не ответили, опишите в комментарии дополнительные шаги, которые вы предприняли после публикации топика.

6. Будьте вежливы и грамотны. С вежливыми и грамотными людьми гораздо приятней иметь дело. Не требуйте помощи, никто не обязан вам помогать, а нахальным тоном вы только усугубите ситуацию. Если вы сомневаетесь в своем уровне владения языком — воспользуйтесь проверкой грамотности от Яндекса.

7. Если проблему удалось решить — обновите топик. Вставьте UPD с информацией о решении, или ссылкой на комментарий, который помог решить проблему. Также в заголовок было бы неплохо вставить фразу (решено), чтобы помочь людям, которые будут искать информацию о подобной проблеме.

Новички! Когда вы создаете топики, в которых смутно понятна суть вопроса, вы неуважительно относитесь к людям, которые будут читать эти топики, тратить время на то, чтобы разобраться в сути вашей проблемы, тратить время на задание дополнительных вопросов, людей, которые будут просматривать блог «Вопросы» в поисках ответов, но будут натыкаться на гору топиков «Памагите!!», «Как сделать чтобы было хорошо?» и ваш топик в том числе.
Когда вы создаете подобные топики из одного предложения, они плохо индексируются поисковиком, и людям с подобными проблемами необходимо создавать похожий топик вместо того, чтобы воспользоваться готовым решением. Это неуважение к сообществу и в какой-то мере эгоизм с вашей стороны. Руководство по составлению вопросов сделано для того, чтобы проблемы решались один раз, быстро и навсегда. Чтобы польза была не только вам, а и остальным участникам. Вы просите уделить внимание вашей проблеме? Уделите ей внимание сначала вы, составив грамотно вопрос, а потом уже просите об этом остальных.

Специалисты! Перед тем как отвечать в топик с проблемой, попросите пользователя привести его к минимальному соответствию с этим руководством, чтобы блог «Вопросы» не тонул в пустых топиках «Помогите!», «Нужна помощь».

Создано по мотивам этого текста. Дополнения и исправления приветствуются. Благодарю за внимание.

Удаление UTF-8 BOM из консоли

linux (debian tested)
find путь/к/лайвстриту/ -type f \( -name '*.tpl' -o -name '*.php' \) -exec sed -i '1 s/^\xef\xbb\xbf//' {} \;


freebsd (7.2 tested)
find ./ -type f \( -name '*.tpl' -o -name '*.php' \) -exec sed -i -e '1 s/^\xef\xbb\xbf//' {} \;


найти файлы с BOM
find ./ -type f \( -name '*.tpl' -o -name '*.php' \) -print0 | xargs -0r awk '/^\xEF\xBB\xBF/ {print FILENAME}{nextfile}'


sed почему-то иногда не отрабатывает, поэтому php, find, awk, xargs:
php -r "ob_start();
passthru('find ./ -type f \( -name \'*.tpl\' -o -name \'*.php\' \) -print0 | xargs -0r awk \'/^\xEF\xBB\xBF/ {print FILENAME}{nextfile}\'');
foreach(array_filter(explode(\"\n\",ob_get_clean())) as \$f){
	echo \"remove BOM from \$f...\n\";
	file_put_contents(\$f, substr(file_get_contents(\$f), 3));
};"